asterisk-ari-client 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +85 -0
- data/Rakefile +54 -0
- data/asterisk-ari-client.gemspec +32 -0
- data/examples/list_channels.rb +14 -0
- data/examples/websocket.rb +33 -0
- data/lib/ari.rb +12 -0
- data/lib/ari/client.rb +124 -0
- data/lib/ari/generators/api.rb +23 -0
- data/lib/ari/generators/attribute.rb +35 -0
- data/lib/ari/generators/model.rb +38 -0
- data/lib/ari/generators/operation.rb +43 -0
- data/lib/ari/generators/parameter.rb +35 -0
- data/lib/ari/generators/property.rb +32 -0
- data/lib/ari/generators/resource_generator.rb +94 -0
- data/lib/ari/generators/templates/model.rb.erb +36 -0
- data/lib/ari/generators/templates/resource.rb.erb +97 -0
- data/lib/ari/list_resource.rb +23 -0
- data/lib/ari/model.rb +26 -0
- data/lib/ari/models.rb +47 -0
- data/lib/ari/models/.DS_Store +0 -0
- data/lib/ari/models/application_replaced.rb +17 -0
- data/lib/ari/models/asterisk_info.rb +35 -0
- data/lib/ari/models/bridge_attended_transfer.rb +63 -0
- data/lib/ari/models/bridge_blind_transfer.rb +35 -0
- data/lib/ari/models/bridge_created.rb +23 -0
- data/lib/ari/models/bridge_destroyed.rb +23 -0
- data/lib/ari/models/bridge_merged.rb +27 -0
- data/lib/ari/models/build_info.rb +19 -0
- data/lib/ari/models/caller_id.rb +19 -0
- data/lib/ari/models/channel_caller_id.rb +23 -0
- data/lib/ari/models/channel_created.rb +23 -0
- data/lib/ari/models/channel_destroyed.rb +23 -0
- data/lib/ari/models/channel_dialplan.rb +23 -0
- data/lib/ari/models/channel_dtmf_received.rb +23 -0
- data/lib/ari/models/channel_entered_bridge.rb +27 -0
- data/lib/ari/models/channel_hangup_request.rb +23 -0
- data/lib/ari/models/channel_left_bridge.rb +27 -0
- data/lib/ari/models/channel_state_change.rb +23 -0
- data/lib/ari/models/channel_talking_finished.rb +23 -0
- data/lib/ari/models/channel_talking_started.rb +23 -0
- data/lib/ari/models/channel_userevent.rb +35 -0
- data/lib/ari/models/channel_varset.rb +23 -0
- data/lib/ari/models/config_info.rb +27 -0
- data/lib/ari/models/device_state_changed.rb +23 -0
- data/lib/ari/models/dial.rb +31 -0
- data/lib/ari/models/dialed.rb +17 -0
- data/lib/ari/models/dialplan_cep.rb +19 -0
- data/lib/ari/models/endpoint_state_change.rb +23 -0
- data/lib/ari/models/format_lang_pair.rb +19 -0
- data/lib/ari/models/live_recording.rb +19 -0
- data/lib/ari/models/message.rb +19 -0
- data/lib/ari/models/missing_params.rb +19 -0
- data/lib/ari/models/playback_finished.rb +23 -0
- data/lib/ari/models/playback_started.rb +23 -0
- data/lib/ari/models/recording_failed.rb +23 -0
- data/lib/ari/models/recording_finished.rb +23 -0
- data/lib/ari/models/recording_started.rb +23 -0
- data/lib/ari/models/set_id.rb +19 -0
- data/lib/ari/models/stasis_end.rb +23 -0
- data/lib/ari/models/stasis_start.rb +27 -0
- data/lib/ari/models/status_info.rb +27 -0
- data/lib/ari/models/stored_recording.rb +19 -0
- data/lib/ari/models/system_info.rb +19 -0
- data/lib/ari/models/text_message.rb +23 -0
- data/lib/ari/models/text_message_received.rb +27 -0
- data/lib/ari/models/text_message_variable.rb +19 -0
- data/lib/ari/models/variable.rb +19 -0
- data/lib/ari/request_error.rb +8 -0
- data/lib/ari/resource.rb +37 -0
- data/lib/ari/resources.rb +11 -0
- data/lib/ari/resources/application.rb +101 -0
- data/lib/ari/resources/asterisk.rb +72 -0
- data/lib/ari/resources/bridge.rb +286 -0
- data/lib/ari/resources/channel.rb +610 -0
- data/lib/ari/resources/device_state.rb +98 -0
- data/lib/ari/resources/endpoint.rb +124 -0
- data/lib/ari/resources/event.rb +25 -0
- data/lib/ari/resources/mailbox.rb +99 -0
- data/lib/ari/resources/playback.rb +86 -0
- data/lib/ari/resources/recording.rb +241 -0
- data/lib/ari/resources/sound.rb +64 -0
- data/lib/ari/server_error.rb +8 -0
- data/lib/asterisk/ari/client.rb +10 -0
- data/lib/asterisk/ari/client/version.rb +7 -0
- data/test/fixtures/bridge_create.json +74 -0
- data/test/fixtures/bridge_get.json +74 -0
- data/test/fixtures/bridges_list.json +76 -0
- data/test/fixtures/channel_get.json +83 -0
- data/test/fixtures/channel_originate.json +83 -0
- data/test/fixtures/channel_originate_with_id.json +83 -0
- data/test/fixtures/channels_list.json +105 -0
- data/test/lib/asterisk-ari-client/.DS_Store +0 -0
- data/test/lib/asterisk-ari-client/bridge_test.rb +46 -0
- data/test/lib/asterisk-ari-client/channel_test.rb +59 -0
- data/test/test_helper.rb +42 -0
- metadata +265 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
module Ari
|
2
|
+
module Generators
|
3
|
+
class Model
|
4
|
+
|
5
|
+
def initialize(klass_name, resource, specification)
|
6
|
+
@klass_name = klass_name
|
7
|
+
@resource = resource
|
8
|
+
@specification = specification
|
9
|
+
end
|
10
|
+
|
11
|
+
def name
|
12
|
+
klass_name.underscore
|
13
|
+
end
|
14
|
+
|
15
|
+
def klass_name
|
16
|
+
@klass_name
|
17
|
+
end
|
18
|
+
|
19
|
+
def description
|
20
|
+
@specification['description']
|
21
|
+
end
|
22
|
+
|
23
|
+
def properties
|
24
|
+
@properties ||= @specification['properties'].map { |name, options| Property.new(name, options) }
|
25
|
+
end
|
26
|
+
|
27
|
+
def sub_types
|
28
|
+
@specification['subTypes'] || []
|
29
|
+
end
|
30
|
+
|
31
|
+
def inherits_from
|
32
|
+
inherits_from_model = @resource.models.detect { |m| m.sub_types.include?(klass_name) }
|
33
|
+
inherits_from_model ? inherits_from_model.klass_name : 'Model'
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Ari
|
2
|
+
module Generators
|
3
|
+
class Operation
|
4
|
+
|
5
|
+
def initialize(specification)
|
6
|
+
@specification = specification
|
7
|
+
end
|
8
|
+
|
9
|
+
def http_method
|
10
|
+
@specification['httpMethod']
|
11
|
+
end
|
12
|
+
|
13
|
+
def description
|
14
|
+
@specification['summary']
|
15
|
+
end
|
16
|
+
|
17
|
+
def method_name
|
18
|
+
@specification['nickname'].underscore
|
19
|
+
end
|
20
|
+
|
21
|
+
def original_method_name
|
22
|
+
@specification['nickname']
|
23
|
+
end
|
24
|
+
|
25
|
+
def return_klass
|
26
|
+
if @specification['responseClass'].start_with?('List[')
|
27
|
+
@specification['responseClass'][5..-2]
|
28
|
+
else
|
29
|
+
@specification['responseClass'] == 'void' ? nil : @specification['responseClass']
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def returns_array?
|
34
|
+
@specification['responseClass'].start_with?('List[')
|
35
|
+
end
|
36
|
+
|
37
|
+
def parameters
|
38
|
+
@parameters ||= @specification['parameters'].map { |p| Parameter.new(p) } rescue []
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Ari
|
2
|
+
module Generators
|
3
|
+
class Parameter
|
4
|
+
|
5
|
+
def initialize(specification)
|
6
|
+
@specification = specification
|
7
|
+
end
|
8
|
+
|
9
|
+
def name
|
10
|
+
@specification['name']
|
11
|
+
end
|
12
|
+
|
13
|
+
def description
|
14
|
+
@specification['description']
|
15
|
+
end
|
16
|
+
|
17
|
+
def location
|
18
|
+
@specification['paramType']
|
19
|
+
end
|
20
|
+
|
21
|
+
def required?
|
22
|
+
@specification['required'] || location == 'path'
|
23
|
+
end
|
24
|
+
|
25
|
+
def multiple?
|
26
|
+
@specification['allowMultiple']
|
27
|
+
end
|
28
|
+
|
29
|
+
def type
|
30
|
+
@specification['dataType']
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Ari
|
2
|
+
module Generators
|
3
|
+
class Property
|
4
|
+
|
5
|
+
def initialize(name, specification)
|
6
|
+
@name = name
|
7
|
+
@specification = specification
|
8
|
+
end
|
9
|
+
|
10
|
+
def name
|
11
|
+
@name
|
12
|
+
end
|
13
|
+
|
14
|
+
def required?
|
15
|
+
@specification['required']
|
16
|
+
end
|
17
|
+
|
18
|
+
def type
|
19
|
+
if @specification['type'].start_with?('List[')
|
20
|
+
@specification['type'][5..-2]
|
21
|
+
else
|
22
|
+
@specification['type'] == 'void' ? nil : @specification['type']
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def description
|
27
|
+
@specification['description']
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'active_support'
|
3
|
+
require 'active_support/core_ext'
|
4
|
+
require 'ari/generators/api'
|
5
|
+
require 'ari/generators/attribute'
|
6
|
+
require 'ari/generators/model'
|
7
|
+
require 'ari/generators/operation'
|
8
|
+
require 'ari/generators/parameter'
|
9
|
+
require 'ari/generators/property'
|
10
|
+
|
11
|
+
module Ari
|
12
|
+
module Generators
|
13
|
+
class ResourceGenerator
|
14
|
+
|
15
|
+
def initialize(resource_name, specification, options = {})
|
16
|
+
@resource_name = resource_name.underscore
|
17
|
+
@klass_name = @resource_name.classify
|
18
|
+
@specification = specification
|
19
|
+
@options = options
|
20
|
+
end
|
21
|
+
|
22
|
+
def template_path(klass)
|
23
|
+
File.join(__dir__, 'templates', "#{klass}.rb.erb")
|
24
|
+
end
|
25
|
+
|
26
|
+
def destination_path(klass)
|
27
|
+
File.join(__dir__, '..', klass)
|
28
|
+
end
|
29
|
+
|
30
|
+
def generate_only_models?
|
31
|
+
@options.fetch(:only_models, false)
|
32
|
+
end
|
33
|
+
|
34
|
+
def generate
|
35
|
+
generate_resource
|
36
|
+
generate_models
|
37
|
+
end
|
38
|
+
|
39
|
+
def generate_resource
|
40
|
+
erb = ERB.new(IO.read(template_path('resource')), nil, '-')
|
41
|
+
File.open(File.join(destination_path('resources'), "#{resource_name}.rb"), 'w') do |f|
|
42
|
+
f.write erb.result(binding)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def generate_models
|
47
|
+
erb = ERB.new(IO.read(template_path('model')), nil, '-')
|
48
|
+
models.each do |model|
|
49
|
+
next if model.name == resource_name
|
50
|
+
File.open(File.join(destination_path('models'), "#{model.name}.rb"), 'w') do |f|
|
51
|
+
f.write erb.result(model.instance_eval { binding })
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def klass_name
|
57
|
+
@klass_name
|
58
|
+
end
|
59
|
+
|
60
|
+
def resource_klass_name
|
61
|
+
options.fetch(:resource_klass_name, klass_name)
|
62
|
+
end
|
63
|
+
|
64
|
+
def resource_attributes
|
65
|
+
models.detect { |m| m.klass_name == klass_name }.properties rescue []
|
66
|
+
end
|
67
|
+
|
68
|
+
def resource_name
|
69
|
+
@resource_name.singularize
|
70
|
+
end
|
71
|
+
|
72
|
+
def resource_plural_name
|
73
|
+
@resource_name
|
74
|
+
end
|
75
|
+
|
76
|
+
def id_attribute_name
|
77
|
+
@options.fetch(:id_attribute_name, "#{klass_name.camelcase(:lower)}Id")
|
78
|
+
end
|
79
|
+
|
80
|
+
def apis
|
81
|
+
@apis ||= @specification['apis'].map { |api| Api.new(api) }
|
82
|
+
end
|
83
|
+
|
84
|
+
def models
|
85
|
+
@models ||= @specification['models'].map { |klass_name, options| Model.new(klass_name, self, options) }
|
86
|
+
end
|
87
|
+
|
88
|
+
def inherits_from
|
89
|
+
generate_only_models? ? 'Model' : 'Resource'
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
#
|
3
|
+
# WARNING !
|
4
|
+
#
|
5
|
+
# This is a generated file. DO NOT EDIT THIS FILE! Your changes will
|
6
|
+
# be lost the next time this file is regenerated.
|
7
|
+
#
|
8
|
+
# This file was generated using asterisk-ari-client ruby gem.
|
9
|
+
#
|
10
|
+
#------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module Ari
|
13
|
+
class <%= klass_name %> < <%= inherits_from %>
|
14
|
+
|
15
|
+
<%- if properties.present? -%>
|
16
|
+
attr_reader <%= properties.map { |a| ":#{a.name}" }.join(', ') %>
|
17
|
+
|
18
|
+
<%- end -%>
|
19
|
+
<%- properties.each do |attribute| -%>
|
20
|
+
<%- unless %{ string int long boolean }.include?(attribute.type) -%>
|
21
|
+
<%- attribute_value = begin
|
22
|
+
if attribute.type == 'Date'
|
23
|
+
'Time.parse(val)'
|
24
|
+
else
|
25
|
+
attribute.type + '.new(val)'
|
26
|
+
end
|
27
|
+
end -%>
|
28
|
+
def <%= attribute.name %>=(val)
|
29
|
+
@<%= attribute.name %> ||= <%= attribute_value %>
|
30
|
+
end
|
31
|
+
|
32
|
+
<%- end -%>
|
33
|
+
<%- end -%>
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
#
|
3
|
+
# WARNING !
|
4
|
+
#
|
5
|
+
# This is a generated file. DO NOT EDIT THIS FILE! Your changes will
|
6
|
+
# be lost the next time this file is regenerated.
|
7
|
+
#
|
8
|
+
# This file was generated using asterisk-ari-client ruby gem.
|
9
|
+
#
|
10
|
+
#------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
module Ari
|
13
|
+
class <%= klass_name %> < <%= inherits_from %>
|
14
|
+
|
15
|
+
<%- if resource_attributes.present? -%>
|
16
|
+
attr_reader <%= resource_attributes.map { |a| ":#{a.name}" }.join(', ') %>
|
17
|
+
|
18
|
+
<%- end -%>
|
19
|
+
<%- resource_attributes.each do |attribute| -%>
|
20
|
+
<%- unless %{ string int long boolean }.include?(attribute.type) -%>
|
21
|
+
<%- attribute_value = begin
|
22
|
+
if attribute.type == 'Date'
|
23
|
+
'Time.parse(val)'
|
24
|
+
else
|
25
|
+
attribute.type + '.new(val)'
|
26
|
+
end
|
27
|
+
end -%>
|
28
|
+
def <%= attribute.name %>=(val)
|
29
|
+
@<%= attribute.name %> ||= <%= attribute_value %>
|
30
|
+
end
|
31
|
+
|
32
|
+
<%- end -%>
|
33
|
+
<%- end -%>
|
34
|
+
|
35
|
+
<%- apis.each do |api| -%>
|
36
|
+
<%- api.operations.each do |operation| -%>
|
37
|
+
# <%= operation.http_method %> <%= api.path %>
|
38
|
+
#
|
39
|
+
# <%= api.description %>
|
40
|
+
#<% operation.description.scan(/.{80}/).each do |comment_line| %>
|
41
|
+
# <%= comment_line -%>
|
42
|
+
<%- end if operation.description %>
|
43
|
+
#
|
44
|
+
<%- if operation.parameters.present? -%>
|
45
|
+
# Parameters:
|
46
|
+
#
|
47
|
+
<%- operation.parameters.each do |parameter| -%>
|
48
|
+
# <%= parameter.name %> <%= '(required)' if parameter.required? %> - <%= parameter.description %>
|
49
|
+
<%- end -%>
|
50
|
+
#
|
51
|
+
<%- end -%>
|
52
|
+
def self.<%= operation.method_name %>(options = {})
|
53
|
+
<%- operation.parameters.each do |parameter| -%>
|
54
|
+
<%- next unless parameter.required? -%>
|
55
|
+
raise ArgumentError.new("Parameter <%= parameter.name %> must be passed in options hash.") unless options[:<%= parameter.name %>]
|
56
|
+
<%- end -%>
|
57
|
+
<%- if operation.parameters.any? { |p| p.location == 'path' } -%>
|
58
|
+
path = '<%= api.path %>' % options
|
59
|
+
<%- else -%>
|
60
|
+
path = '<%= api.path %>'
|
61
|
+
<%- end -%>
|
62
|
+
response = client(options).<%= operation.http_method.downcase %>(path, options)
|
63
|
+
<%- if operation.returns_array? -%>
|
64
|
+
<%- if operation.return_klass -%>
|
65
|
+
response.map { |hash| <%= operation.return_klass %>.new(hash.merge(client: options[:client])) }
|
66
|
+
<%- else -%>
|
67
|
+
response.map { |hash| <%= operation.return_klass %>.new(hash) }
|
68
|
+
<%- end -%>
|
69
|
+
<%- elsif operation.return_klass -%>
|
70
|
+
<%= operation.return_klass %>.new(response.merge(client: options[:client]))
|
71
|
+
<%- end -%>
|
72
|
+
<%- if operation.http_method == 'DELETE' -%>
|
73
|
+
rescue Ari::RequestError => e
|
74
|
+
raise unless e.code == '404'
|
75
|
+
<%- end -%>
|
76
|
+
end
|
77
|
+
<%- unless operation.method_name == operation.original_method_name -%>
|
78
|
+
class << self; alias_method :<%= operation.original_method_name %>, :<%= operation.method_name %>; end
|
79
|
+
<%- end -%>
|
80
|
+
<%- if operation.parameters.any? { |p| p.location == 'path' } -%>
|
81
|
+
|
82
|
+
def <%= operation.method_name %>(options = {})
|
83
|
+
self.class.<%= operation.method_name %>(options.merge(<%= id_attribute_name %>: self.id, client: @client))
|
84
|
+
end
|
85
|
+
<%- end -%>
|
86
|
+
|
87
|
+
<%- end -%>
|
88
|
+
<%- end unless generate_only_models? -%>
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
<%- unless generate_only_models? -%>
|
94
|
+
Ari::Client.send :define_method, '<%= resource_plural_name %>' do
|
95
|
+
Ari::ListResource.new(self, Ari::<%= klass_name %>)
|
96
|
+
end
|
97
|
+
<%- end -%>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Ari
|
2
|
+
class ListResource
|
3
|
+
|
4
|
+
def initialize(client, resource_klass)
|
5
|
+
@client = client
|
6
|
+
@resource_klass = resource_klass
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def method_missing(method, *args, &block)
|
12
|
+
if @resource_klass.respond_to? method
|
13
|
+
options = args.first
|
14
|
+
options ||= {}
|
15
|
+
options.merge!(client: @client)
|
16
|
+
@resource_klass.send(method, options, &block)
|
17
|
+
else
|
18
|
+
super
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
data/lib/ari/model.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'time'
|
2
|
+
|
3
|
+
module Ari
|
4
|
+
class Model
|
5
|
+
|
6
|
+
def initialize(attributes)
|
7
|
+
if attributes
|
8
|
+
@client = attributes.delete(:client)
|
9
|
+
self.attributes = attributes
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def attributes=(attributes)
|
14
|
+
attributes.each do |name, value|
|
15
|
+
setter = "#{name}="
|
16
|
+
if respond_to? setter
|
17
|
+
value.merge!(client: @client) if @client && value.is_a?(Hash)
|
18
|
+
__send__ setter, value
|
19
|
+
else
|
20
|
+
instance_variable_set "@#{name}", value
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/lib/ari/models.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'ari/models/build_info'
|
2
|
+
require 'ari/models/system_info'
|
3
|
+
require 'ari/models/set_id'
|
4
|
+
require 'ari/models/config_info'
|
5
|
+
require 'ari/models/status_info'
|
6
|
+
require 'ari/models/asterisk_info'
|
7
|
+
require 'ari/models/variable'
|
8
|
+
require 'ari/models/dialed'
|
9
|
+
require 'ari/models/dialplan_cep'
|
10
|
+
require 'ari/models/caller_id'
|
11
|
+
require 'ari/models/text_message_variable'
|
12
|
+
require 'ari/models/text_message'
|
13
|
+
require 'ari/models/message'
|
14
|
+
require 'ari/models/missing_params'
|
15
|
+
require 'ari/models/device_state_changed'
|
16
|
+
require 'ari/models/playback_started'
|
17
|
+
require 'ari/models/playback_finished'
|
18
|
+
require 'ari/models/recording_started'
|
19
|
+
require 'ari/models/recording_finished'
|
20
|
+
require 'ari/models/recording_failed'
|
21
|
+
require 'ari/models/application_replaced'
|
22
|
+
require 'ari/models/bridge_created'
|
23
|
+
require 'ari/models/bridge_destroyed'
|
24
|
+
require 'ari/models/bridge_merged'
|
25
|
+
require 'ari/models/bridge_blind_transfer'
|
26
|
+
require 'ari/models/bridge_attended_transfer'
|
27
|
+
require 'ari/models/channel_created'
|
28
|
+
require 'ari/models/channel_destroyed'
|
29
|
+
require 'ari/models/channel_entered_bridge'
|
30
|
+
require 'ari/models/channel_left_bridge'
|
31
|
+
require 'ari/models/channel_state_change'
|
32
|
+
require 'ari/models/channel_dtmf_received'
|
33
|
+
require 'ari/models/channel_dialplan'
|
34
|
+
require 'ari/models/channel_caller_id'
|
35
|
+
require 'ari/models/channel_userevent'
|
36
|
+
require 'ari/models/channel_hangup_request'
|
37
|
+
require 'ari/models/channel_varset'
|
38
|
+
require 'ari/models/channel_talking_started'
|
39
|
+
require 'ari/models/channel_talking_finished'
|
40
|
+
require 'ari/models/endpoint_state_change'
|
41
|
+
require 'ari/models/dial'
|
42
|
+
require 'ari/models/stasis_end'
|
43
|
+
require 'ari/models/stasis_start'
|
44
|
+
require 'ari/models/text_message_received'
|
45
|
+
require 'ari/models/stored_recording'
|
46
|
+
require 'ari/models/live_recording'
|
47
|
+
require 'ari/models/format_lang_pair'
|