telnyx 0.0.5 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/Gemfile +1 -0
- data/README.md +42 -3
- data/VERSION +1 -1
- data/bin/telnyx-console +2 -1
- data/lib/telnyx.rb +19 -1
- data/lib/telnyx/address.rb +12 -0
- data/lib/telnyx/api_operations/list.rb +1 -1
- data/lib/telnyx/api_operations/nested_resource.rb +17 -4
- data/lib/telnyx/api_resource.rb +1 -1
- data/lib/telnyx/billing_group.rb +12 -0
- data/lib/telnyx/call_control_application.rb +12 -0
- data/lib/telnyx/{conferences.rb → conference.rb} +2 -1
- data/lib/telnyx/connection.rb +9 -0
- data/lib/telnyx/credential_connection.rb +12 -0
- data/lib/telnyx/fqdn.rb +12 -0
- data/lib/telnyx/fqdn_connection.rb +12 -0
- data/lib/telnyx/ip.rb +12 -0
- data/lib/telnyx/ip_connection.rb +12 -0
- data/lib/telnyx/list_object.rb +30 -44
- data/lib/telnyx/number_lookup.rb +7 -0
- data/lib/telnyx/number_order_document.rb +11 -0
- data/lib/telnyx/outbound_voice_profile.rb +12 -0
- data/lib/telnyx/phone_number.rb +44 -0
- data/lib/telnyx/phone_number_regulatory_requirement.rb +9 -0
- data/lib/telnyx/portout.rb +12 -0
- data/lib/telnyx/regulatory_requirement.rb +9 -0
- data/lib/telnyx/sim_card.rb +24 -0
- data/lib/telnyx/telnyx_client.rb +1 -1
- data/lib/telnyx/telnyx_response.rb +11 -2
- data/lib/telnyx/util.rb +31 -11
- data/lib/telnyx/version.rb +1 -1
- data/lib/telnyx/wireless_detail_records_report.rb +12 -0
- data/telnyx.gemspec +1 -1
- data/test/telnyx/address_test.rb +67 -0
- data/test/telnyx/alphanumeric_sender_id_test.rb +4 -0
- data/test/telnyx/api_resource_test.rb +14 -5
- data/test/telnyx/billing_group_test.rb +40 -0
- data/test/telnyx/call_control_application_test.rb +42 -0
- data/test/telnyx/{conferences_test.rb → conference_test.rb} +5 -5
- data/test/telnyx/connection_test.rb +28 -0
- data/test/telnyx/credential_connection_test.rb +40 -0
- data/test/telnyx/errors_test.rb +4 -4
- data/test/telnyx/fqdn_connection_test.rb +40 -0
- data/test/telnyx/fqdn_test.rb +40 -0
- data/test/telnyx/ip_connection_test.rb +40 -0
- data/test/telnyx/ip_test.rb +40 -0
- data/test/telnyx/list_object_test.rb +48 -90
- data/test/telnyx/messaging_profile_test.rb +15 -4
- data/test/telnyx/number_lookup_test.rb +18 -0
- data/test/telnyx/number_order_document_test.rb +35 -0
- data/test/telnyx/outbound_voice_profile_test.rb +67 -0
- data/test/telnyx/phone_number_regulatory_requirement_test.rb +14 -0
- data/test/telnyx/phone_number_test.rb +157 -0
- data/test/telnyx/public_key_test.rb +1 -0
- data/test/telnyx/regulatory_requirement_test.rb +21 -0
- data/test/telnyx/sim_card_test.rb +44 -0
- data/test/telnyx/telnyx_client_test.rb +11 -10
- data/test/telnyx/wireless_detail_records_report_test.rb +57 -0
- data/test/test_helper.rb +1 -1
- metadata +74 -10
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Telnyx
|
4
|
+
class OutboundVoiceProfile < APIResource
|
5
|
+
include Telnyx::APIOperations::Save
|
6
|
+
include Telnyx::APIOperations::Delete
|
7
|
+
extend Telnyx::APIOperations::List
|
8
|
+
extend Telnyx::APIOperations::Create
|
9
|
+
|
10
|
+
OBJECT_NAME = "outbound_voice_profile".freeze
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Telnyx
|
4
|
+
class PhoneNumber < APIResource
|
5
|
+
include Telnyx::APIOperations::Save
|
6
|
+
include Telnyx::APIOperations::Delete
|
7
|
+
extend Telnyx::APIOperations::List
|
8
|
+
extend Telnyx::APIOperations::NestedResource
|
9
|
+
|
10
|
+
nested_resource_class_methods "voice",
|
11
|
+
path: ["voice"],
|
12
|
+
operations: %i[update list],
|
13
|
+
instance_methods: { list: "voice" }
|
14
|
+
nested_resource_class_methods "messaging",
|
15
|
+
path: ["messaging"],
|
16
|
+
operations: %i[update list],
|
17
|
+
instance_methods: { list: "messaging" }
|
18
|
+
nested_resource_class_methods "inbound_channel",
|
19
|
+
path: ["inbound_channels"],
|
20
|
+
operations: %i[update list]
|
21
|
+
|
22
|
+
def update_messaging(opts)
|
23
|
+
self.class.update_messaging(id, nil, opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
def update_voice(opts)
|
27
|
+
self.class.update_voice(id, nil, opts)
|
28
|
+
end
|
29
|
+
|
30
|
+
def update_inbound_channels=(val)
|
31
|
+
self.class.update_inbound_channel(nil, nil, channels: val)
|
32
|
+
end
|
33
|
+
|
34
|
+
def inbound_channels
|
35
|
+
self.class.list_inbound_channels(nil).channels
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.list_voice
|
39
|
+
list_voices nil
|
40
|
+
end
|
41
|
+
|
42
|
+
OBJECT_NAME = "phone_number".freeze
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Telnyx
|
4
|
+
class SimCard < APIResource
|
5
|
+
include Telnyx::APIOperations::Save
|
6
|
+
extend APIOperations::NestedResource
|
7
|
+
extend APIOperations::List
|
8
|
+
|
9
|
+
ACTIONS = %w[deactivate activate].freeze
|
10
|
+
ACTIONS.each do |action|
|
11
|
+
nested_resource_class_methods action,
|
12
|
+
path: %W[actions #{action}],
|
13
|
+
operations: [:create],
|
14
|
+
instance_methods: { create: action }
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.register(params = {}, opts = {})
|
18
|
+
resp, opts = request(:post, "/v2/actions/register/sim_cards", params, opts)
|
19
|
+
Util.convert_to_telnyx_object(resp.data, opts)
|
20
|
+
end
|
21
|
+
|
22
|
+
OBJECT_NAME = "sim_card".freeze
|
23
|
+
end
|
24
|
+
end
|
data/lib/telnyx/telnyx_client.rb
CHANGED
@@ -358,7 +358,7 @@ module Telnyx
|
|
358
358
|
message = "Could not connect to Telnyx (#{api_base}). " \
|
359
359
|
"Please check your internet connection and try again. " \
|
360
360
|
"If this problem persists, you should check Telnyx's service status at " \
|
361
|
-
"https://
|
361
|
+
"https://status.telnyx.com, or let us know at support@telnyx.com."
|
362
362
|
|
363
363
|
else
|
364
364
|
message = "Unexpected error communicating with Telnyx. " \
|
@@ -26,7 +26,7 @@ module Telnyx
|
|
26
26
|
# This may throw JSON::ParserError if the response body is not valid JSON.
|
27
27
|
def self.from_faraday_hash(http_resp)
|
28
28
|
resp = TelnyxResponse.new
|
29
|
-
resp.data = JSON.parse(http_resp[:body], symbolize_names: true)
|
29
|
+
resp.data = JSON.parse(preprocess_response(http_resp[:body]), symbolize_names: true)
|
30
30
|
resp.http_body = http_resp[:body]
|
31
31
|
resp.http_headers = http_resp[:headers]
|
32
32
|
resp.http_status = http_resp[:status]
|
@@ -39,12 +39,21 @@ module Telnyx
|
|
39
39
|
# This may throw JSON::ParserError if the response body is not valid JSON.
|
40
40
|
def self.from_faraday_response(http_resp)
|
41
41
|
resp = TelnyxResponse.new
|
42
|
-
resp.data = JSON.parse(http_resp.body, symbolize_names: true)
|
42
|
+
resp.data = JSON.parse(preprocess_response(http_resp.body), symbolize_names: true)
|
43
43
|
resp.http_body = http_resp.body
|
44
44
|
resp.http_headers = http_resp.headers
|
45
45
|
resp.http_status = http_resp.status
|
46
46
|
resp.request_id = http_resp.headers["X-Request-Id"]
|
47
47
|
resp
|
48
48
|
end
|
49
|
+
|
50
|
+
class << self
|
51
|
+
private
|
52
|
+
|
53
|
+
# Helper to handle when the server responds with a blank body (as is the case with SimCards).
|
54
|
+
def preprocess_response(resp)
|
55
|
+
resp.empty? ? "{}" : resp
|
56
|
+
end
|
57
|
+
end
|
49
58
|
end
|
50
59
|
end
|
data/lib/telnyx/util.rb
CHANGED
@@ -39,16 +39,36 @@ module Telnyx
|
|
39
39
|
def self.object_classes
|
40
40
|
@object_classes ||= {
|
41
41
|
# business objects
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
42
|
+
Address::OBJECT_NAME => Address,
|
43
|
+
AlphanumericSenderId::OBJECT_NAME => AlphanumericSenderId,
|
44
|
+
AvailablePhoneNumber::OBJECT_NAME => AvailablePhoneNumber,
|
45
|
+
BillingGroup::OBJECT_NAME => BillingGroup,
|
46
|
+
Call::OBJECT_NAME => Call,
|
47
|
+
CallControlApplication::OBJECT_NAME => CallControlApplication,
|
48
|
+
Conferences::OBJECT_NAME => Conferences,
|
49
|
+
Connection::OBJECT_NAME => Connection,
|
50
|
+
CredentialConnection::OBJECT_NAME => CredentialConnection,
|
51
|
+
FQDN::OBJECT_NAME => FQDN,
|
52
|
+
FQDNConnection::OBJECT_NAME => FQDNConnection,
|
53
|
+
IP::OBJECT_NAME => IP,
|
54
|
+
IPConnection::OBJECT_NAME => IPConnection,
|
55
|
+
Message::OBJECT_NAME => Message,
|
56
|
+
MessagingPhoneNumber::OBJECT_NAME => MessagingPhoneNumber,
|
57
|
+
MessagingProfile::OBJECT_NAME => MessagingProfile,
|
58
|
+
NumberLookup::OBJECT_NAME => NumberLookup,
|
59
|
+
NumberOrder::OBJECT_NAME => NumberOrder,
|
60
|
+
NumberOrderDocument::OBJECT_NAME => NumberOrderDocument,
|
61
|
+
NumberReservation::OBJECT_NAME => NumberReservation,
|
62
|
+
OutboundVoiceProfile::OBJECT_NAME => OutboundVoiceProfile,
|
63
|
+
PhoneNumber::OBJECT_NAME => PhoneNumber,
|
64
|
+
"phone_number_reservation" => NumberReservation,
|
65
|
+
PhoneNumberRegulatoryRequirement::OBJECT_NAME => PhoneNumberRegulatoryRequirement,
|
66
|
+
"phone_number_regulatory_group" => PhoneNumberRegulatoryRequirement,
|
67
|
+
Portout::OBJECT_NAME => Portout,
|
68
|
+
PublicKey::OBJECT_NAME => PublicKey,
|
69
|
+
RegulatoryRequirement::OBJECT_NAME => RegulatoryRequirement,
|
70
|
+
SimCard::OBJECT_NAME => SimCard,
|
71
|
+
WirelessDetailRecordsReport::OBJECT_NAME => WirelessDetailRecordsReport,
|
52
72
|
}
|
53
73
|
end
|
54
74
|
|
@@ -77,7 +97,7 @@ module Telnyx
|
|
77
97
|
# Try converting to a known object class. If none available, fall back to generic TelnyxObject
|
78
98
|
if data[:data].is_a?(Array)
|
79
99
|
ListObject.construct_from(data, opts)
|
80
|
-
elsif data[:data] && data[:data][:record_type]
|
100
|
+
elsif data[:data].is_a?(Hash) && data[:data][:record_type]
|
81
101
|
object_classes.fetch(data[:data][:record_type], TelnyxObject).construct_from(data[:data], opts)
|
82
102
|
elsif data[:record_type]
|
83
103
|
object_classes.fetch(data[:record_type], TelnyxObject).construct_from(data, opts)
|
data/lib/telnyx/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Telnyx
|
4
|
+
class WirelessDetailRecordsReport < APIResource
|
5
|
+
include APIOperations::Delete
|
6
|
+
extend APIOperations::List
|
7
|
+
extend APIOperations::Create
|
8
|
+
|
9
|
+
OBJECT_NAME = "detail_records_report".freeze
|
10
|
+
RESOURCE_PATH = "wireless/detail_records_reports".freeze
|
11
|
+
end
|
12
|
+
end
|
data/telnyx.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
"source_code_uri" => "https://github.com/team-telnyx/telnyx-ruby",
|
23
23
|
}
|
24
24
|
|
25
|
-
s.add_dependency("faraday", "~> 0.13", "
|
25
|
+
s.add_dependency("faraday", "~> 0.13", "!= 0.16.0", "!= 0.16.1", "!= 0.16.2")
|
26
26
|
s.add_dependency("net-http-persistent", "~> 3.0")
|
27
27
|
s.add_dependency("ed25519", "~> 1")
|
28
28
|
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../test_helper"
|
4
|
+
|
5
|
+
module Telnyx
|
6
|
+
class AddressTest < Test::Unit::TestCase
|
7
|
+
should "list addresses" do
|
8
|
+
stub = stub_request(:get, "#{Telnyx.api_base}/v2/addresses")
|
9
|
+
.to_return(body: JSON.generate(data: [FIXTURE]))
|
10
|
+
addresses = Address.list
|
11
|
+
# assert_requested :get, "#{Telnyx.api_base}/v2/addresses"
|
12
|
+
assert_requested stub
|
13
|
+
assert_kind_of ListObject, addresses
|
14
|
+
assert_kind_of Address, addresses.first
|
15
|
+
end
|
16
|
+
|
17
|
+
should "create address" do
|
18
|
+
stub = stub_request(:post, "#{Telnyx.api_base}/v2/addresses")
|
19
|
+
.to_return(body: JSON.generate(data: FIXTURE))
|
20
|
+
address = Address.create
|
21
|
+
# assert_requested :post, "#{Telnyx.api_base}/v2/addresses"
|
22
|
+
assert_requested stub
|
23
|
+
assert_kind_of Address, address
|
24
|
+
end
|
25
|
+
|
26
|
+
should "retrieve address" do
|
27
|
+
stub = stub_request(:get, "#{Telnyx.api_base}/v2/addresses/id")
|
28
|
+
.to_return(body: JSON.generate(data: FIXTURE))
|
29
|
+
address = Address.retrieve("id")
|
30
|
+
# assert_requested :get, "#{Telnyx.api_base}/v2/addresses/id"
|
31
|
+
assert_requested stub
|
32
|
+
assert_kind_of Address, address
|
33
|
+
end
|
34
|
+
|
35
|
+
should "delete address" do
|
36
|
+
stub_request(:get, "#{Telnyx.api_base}/v2/addresses/id")
|
37
|
+
.to_return(body: JSON.generate(data: FIXTURE))
|
38
|
+
stub = stub_request(:delete, "#{Telnyx.api_base}/v2/addresses/id")
|
39
|
+
.to_return(body: JSON.generate(data: FIXTURE))
|
40
|
+
address = Address.retrieve("id")
|
41
|
+
|
42
|
+
address.delete
|
43
|
+
# assert_requested :delete, "#{Telnyx.api_base}/v2/addresses/id"
|
44
|
+
assert_requested stub
|
45
|
+
end
|
46
|
+
|
47
|
+
FIXTURE = {
|
48
|
+
"address_book" => false,
|
49
|
+
"administrative_area" => "IL",
|
50
|
+
"borough" => "Guadalajara",
|
51
|
+
"business_name" => "Toy-O'Kon",
|
52
|
+
"country_code" => "us",
|
53
|
+
"created_at" => "2018-02-02T22:25:27.521Z",
|
54
|
+
"extended_address" => "Suite 123",
|
55
|
+
"first_name" => "Alfred",
|
56
|
+
"id" => "id",
|
57
|
+
"last_name" => "Foster",
|
58
|
+
"locality" => "Chicago",
|
59
|
+
"neighborhood" => "Ciudad de los deportes",
|
60
|
+
"phone_number" => "+12125559000",
|
61
|
+
"postal_code" => 2904,
|
62
|
+
"record_type" => "address",
|
63
|
+
"street_address" => "457 Flatley Stream",
|
64
|
+
"updated_at" => "2018-02-02T22:25:27.521Z",
|
65
|
+
}.freeze
|
66
|
+
end
|
67
|
+
end
|
@@ -4,6 +4,10 @@ require ::File.expand_path("../../test_helper", __FILE__)
|
|
4
4
|
|
5
5
|
module Telnyx
|
6
6
|
class AlphanumericSenderIdTest < Test::Unit::TestCase
|
7
|
+
setup do
|
8
|
+
omit "alphanumeric ids mock spec removed"
|
9
|
+
end
|
10
|
+
|
7
11
|
should "be listable" do
|
8
12
|
alphanumeric_sender_ids = Telnyx::AlphanumericSenderId.list
|
9
13
|
assert_requested :get, "#{Telnyx.api_base}/v2/alphanumeric_sender_ids"
|
@@ -108,9 +108,12 @@ module Telnyx
|
|
108
108
|
|
109
109
|
assert_requested(stub_get)
|
110
110
|
|
111
|
+
stub_get = stub_request(:post, "#{Telnyx.api_base}/v2/messaging_profiles")
|
112
|
+
.with(body: { "foo" => "bar" })
|
113
|
+
.to_return(body: JSON.generate(data: [messaging_profile_fixture]))
|
111
114
|
Telnyx::MessagingProfile.create(name: nil, foo: "bar")
|
112
115
|
|
113
|
-
assert_requested
|
116
|
+
assert_requested stub_get
|
114
117
|
end
|
115
118
|
|
116
119
|
should "requesting with a unicode ID should result in a request" do
|
@@ -155,19 +158,25 @@ module Telnyx
|
|
155
158
|
end
|
156
159
|
|
157
160
|
should "updating an object should issue a PATCH request with only the changed properties" do
|
158
|
-
|
161
|
+
stub_patch = stub_request(:patch, "#{Telnyx.api_base}/v2/messaging_profiles/123")
|
162
|
+
.with(body: hash_including("name" => "new name"))
|
163
|
+
.to_return(body: JSON.generate(data: messaging_profile_fixture))
|
164
|
+
mp = Telnyx::MessagingProfile.retrieve("123")
|
159
165
|
mp.name = "new name"
|
160
166
|
mp.save
|
161
|
-
assert_requested(
|
167
|
+
assert_requested(stub_patch)
|
162
168
|
end
|
163
169
|
|
164
170
|
should "updating should merge in returned properties" do
|
171
|
+
stub_patch = stub_request(:patch, "#{Telnyx.api_base}/v2/messaging_profiles/123")
|
172
|
+
.with(body: hash_including("name" => "new name"))
|
173
|
+
.to_return(body: JSON.generate(data: messaging_profile_fixture))
|
165
174
|
mp = Telnyx::MessagingProfile.new("123")
|
166
175
|
mp.name = "new name"
|
167
176
|
mp.save
|
168
177
|
|
169
|
-
assert_requested(
|
170
|
-
assert mp
|
178
|
+
assert_requested(stub_patch)
|
179
|
+
assert mp
|
171
180
|
end
|
172
181
|
|
173
182
|
should "updating should fail if api_key is overwritten with nil" do
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../test_helper"
|
4
|
+
|
5
|
+
module Telnyx
|
6
|
+
class BillingGroupTest < Test::Unit::TestCase
|
7
|
+
should "list billing groups" do
|
8
|
+
billing_groups = BillingGroup.list
|
9
|
+
assert_requested :get, "#{Telnyx.api_base}/v2/billing_groups"
|
10
|
+
assert_kind_of ListObject, billing_groups
|
11
|
+
assert_kind_of BillingGroup, billing_groups.first
|
12
|
+
end
|
13
|
+
|
14
|
+
should "create billing group" do
|
15
|
+
BillingGroup.create
|
16
|
+
assert_requested :post, "#{Telnyx.api_base}/v2/billing_groups"
|
17
|
+
end
|
18
|
+
|
19
|
+
should "retrieve billing group" do
|
20
|
+
billing_group = BillingGroup.retrieve("id")
|
21
|
+
assert_requested :get, "#{Telnyx.api_base}/v2/billing_groups/id"
|
22
|
+
assert_kind_of BillingGroup, billing_group
|
23
|
+
end
|
24
|
+
|
25
|
+
should "delete billing group" do
|
26
|
+
billing_group = BillingGroup.retrieve("id")
|
27
|
+
|
28
|
+
billing_group.delete
|
29
|
+
assert_requested :delete, "#{Telnyx.api_base}/v2/billing_groups/id"
|
30
|
+
end
|
31
|
+
|
32
|
+
should "update billing group" do
|
33
|
+
billing_group = BillingGroup.retrieve("id")
|
34
|
+
|
35
|
+
billing_group.active = false
|
36
|
+
billing_group.save
|
37
|
+
assert_requested :patch, "#{Telnyx.api_base}/v2/billing_groups/id"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../test_helper"
|
4
|
+
|
5
|
+
module Telnyx
|
6
|
+
class CallControlApplicationTest < Test::Unit::TestCase
|
7
|
+
should "list call_control_application" do
|
8
|
+
call_control_application = CallControlApplication.list
|
9
|
+
assert_requested :get, "#{Telnyx.api_base}/v2/call_control_applications"
|
10
|
+
assert_kind_of ListObject, call_control_application
|
11
|
+
assert_kind_of CallControlApplication, call_control_application.first
|
12
|
+
end
|
13
|
+
|
14
|
+
should "create call_control_application" do
|
15
|
+
CallControlApplication.create webhook_event_url: "example.com", connection_name: "telnyx", application_name: "telnyx"
|
16
|
+
assert_requested :post, "#{Telnyx.api_base}/v2/call_control_applications"
|
17
|
+
end
|
18
|
+
|
19
|
+
should "retrieve call_control_application" do
|
20
|
+
call_control_application = CallControlApplication.retrieve("id")
|
21
|
+
assert_requested :get, "#{Telnyx.api_base}/v2/call_control_applications/id"
|
22
|
+
assert_kind_of CallControlApplication, call_control_application
|
23
|
+
end
|
24
|
+
|
25
|
+
should "delete call_control_application" do
|
26
|
+
call_control_application = CallControlApplication.retrieve("id")
|
27
|
+
|
28
|
+
call_control_application.delete
|
29
|
+
assert_requested :delete, "#{Telnyx.api_base}/v2/call_control_applications/id"
|
30
|
+
end
|
31
|
+
|
32
|
+
should "update call_control_application" do
|
33
|
+
call_control_application = CallControlApplication.retrieve("id")
|
34
|
+
|
35
|
+
call_control_application.webhook_event_url = "example.com"
|
36
|
+
call_control_application.connection_name = "telnyx"
|
37
|
+
call_control_application.application_name = "telnyx"
|
38
|
+
call_control_application.save
|
39
|
+
assert_requested :patch, "#{Telnyx.api_base}/v2/call_control_applications/id"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|