twilio-ruby 5.0.0.rc24 → 5.0.0.rc25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +32 -12
- data/LICENSE.md +12 -12
- data/README.md +28 -29
- data/examples/examples.rb +47 -58
- data/examples/print-call-log.rb +6 -6
- data/lib/twilio-ruby/jwt/jwt.rb +2 -2
- data/lib/twilio-ruby/rest/accounts/v1.rb +3 -1
- data/lib/twilio-ruby/rest/accounts/v1/credential.rb +4 -1
- data/lib/twilio-ruby/rest/api/v2010.rb +3 -1
- data/lib/twilio-ruby/rest/api/v2010/account.rb +80 -23
- data/lib/twilio-ruby/rest/api/v2010/account/address.rb +2 -1
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number.rb +6 -3
- data/lib/twilio-ruby/rest/api/v2010/account/call.rb +14 -4
- data/lib/twilio-ruby/rest/api/v2010/account/call/recording.rb +10 -0
- data/lib/twilio-ruby/rest/api/v2010/account/conference.rb +4 -1
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number.rb +10 -4
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/assigned_add_on.rb +4 -1
- data/lib/twilio-ruby/rest/api/v2010/account/message.rb +6 -2
- data/lib/twilio-ruby/rest/api/v2010/account/queue.rb +4 -1
- data/lib/twilio-ruby/rest/api/v2010/account/recording.rb +18 -2
- data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result.rb +4 -1
- data/lib/twilio-ruby/rest/api/v2010/account/sip.rb +14 -4
- data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list.rb +4 -1
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain.rb +8 -2
- data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list.rb +4 -1
- data/lib/twilio-ruby/rest/api/v2010/account/usage.rb +6 -2
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record.rb +16 -8
- data/lib/twilio-ruby/rest/chat/v1.rb +6 -2
- data/lib/twilio-ruby/rest/chat/v1/service.rb +12 -3
- data/lib/twilio-ruby/rest/chat/v1/service/channel.rb +12 -3
- data/lib/twilio-ruby/rest/chat/v1/service/user.rb +2 -1
- data/lib/twilio-ruby/rest/chat/v2.rb +6 -2
- data/lib/twilio-ruby/rest/chat/v2/service.rb +12 -3
- data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +12 -3
- data/lib/twilio-ruby/rest/chat/v2/service/user.rb +2 -1
- data/lib/twilio-ruby/rest/fax/v1.rb +3 -1
- data/lib/twilio-ruby/rest/fax/v1/fax.rb +4 -1
- data/lib/twilio-ruby/rest/ip_messaging/v1.rb +6 -2
- data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +12 -3
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel.rb +12 -3
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/user.rb +2 -1
- data/lib/twilio-ruby/rest/ip_messaging/v2.rb +6 -2
- data/lib/twilio-ruby/rest/ip_messaging/v2/service.rb +12 -3
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +12 -3
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/user.rb +2 -1
- data/lib/twilio-ruby/rest/lookups/v1.rb +3 -1
- data/lib/twilio-ruby/rest/messaging/v1.rb +3 -1
- data/lib/twilio-ruby/rest/messaging/v1/service.rb +26 -6
- data/lib/twilio-ruby/rest/monitor/v1.rb +6 -2
- data/lib/twilio-ruby/rest/notify/v1.rb +6 -2
- data/lib/twilio-ruby/rest/notify/v1/service.rb +12 -4
- data/lib/twilio-ruby/rest/notify/v1/service/notification.rb +3 -1
- data/lib/twilio-ruby/rest/notify/v1/service/user.rb +8 -2
- data/lib/twilio-ruby/rest/preview/bulk_exports.rb +6 -2
- data/lib/twilio-ruby/rest/preview/bulk_exports/export.rb +2 -1
- data/lib/twilio-ruby/rest/preview/hosted_numbers.rb +3 -1
- data/lib/twilio-ruby/rest/preview/hosted_numbers/hosted_number_order.rb +18 -12
- data/lib/twilio-ruby/rest/preview/marketplace.rb +6 -2
- data/lib/twilio-ruby/rest/preview/marketplace/available_add_on.rb +4 -1
- data/lib/twilio-ruby/rest/preview/marketplace/installed_add_on.rb +4 -1
- data/lib/twilio-ruby/rest/preview/proxy.rb +3 -1
- data/lib/twilio-ruby/rest/preview/proxy/service.rb +12 -3
- data/lib/twilio-ruby/rest/preview/proxy/service/session.rb +8 -2
- data/lib/twilio-ruby/rest/preview/proxy/service/session/participant.rb +4 -1
- data/lib/twilio-ruby/rest/preview/sync.rb +3 -1
- data/lib/twilio-ruby/rest/preview/sync/service.rb +12 -3
- data/lib/twilio-ruby/rest/preview/sync/service/document.rb +4 -1
- data/lib/twilio-ruby/rest/preview/sync/service/sync_list.rb +8 -2
- data/lib/twilio-ruby/rest/preview/sync/service/sync_map.rb +8 -2
- data/lib/twilio-ruby/rest/preview/wireless.rb +9 -3
- data/lib/twilio-ruby/rest/preview/wireless/sim.rb +2 -1
- data/lib/twilio-ruby/rest/pricing/v1.rb +9 -3
- data/lib/twilio-ruby/rest/pricing/v1/messaging.rb +4 -1
- data/lib/twilio-ruby/rest/pricing/v1/phone_number.rb +4 -1
- data/lib/twilio-ruby/rest/pricing/v1/voice.rb +8 -2
- data/lib/twilio-ruby/rest/sync/v1.rb +3 -1
- data/lib/twilio-ruby/rest/sync/v1/service.rb +12 -3
- data/lib/twilio-ruby/rest/sync/v1/service/document.rb +4 -1
- data/lib/twilio-ruby/rest/sync/v1/service/sync_list.rb +8 -2
- data/lib/twilio-ruby/rest/sync/v1/service/sync_map.rb +8 -2
- data/lib/twilio-ruby/rest/taskrouter/v1.rb +3 -1
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace.rb +30 -8
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +4 -1
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +4 -2
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +12 -4
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow.rb +2 -1
- data/lib/twilio-ruby/rest/trunking/v1.rb +3 -1
- data/lib/twilio-ruby/rest/trunking/v1/trunk.rb +16 -4
- data/lib/twilio-ruby/rest/video/v1.rb +6 -2
- data/lib/twilio-ruby/rest/video/v1/recording.rb +17 -3
- data/lib/twilio-ruby/rest/video/v1/room.rb +4 -1
- data/lib/twilio-ruby/rest/video/v1/room/recording.rb +31 -3
- data/lib/twilio-ruby/rest/wireless/v1.rb +9 -3
- data/lib/twilio-ruby/rest/wireless/v1/rate_plan.rb +16 -1
- data/lib/twilio-ruby/rest/wireless/v1/sim.rb +2 -1
- data/lib/twilio-ruby/twiml/messaging_response.rb +8 -2
- data/lib/twilio-ruby/twiml/twiml.rb +3 -5
- data/lib/twilio-ruby/twiml/voice_response.rb +60 -42
- data/lib/twilio-ruby/version.rb +1 -1
- data/spec/integration/api/v2010/account/call/recording_spec.rb +14 -2
- data/spec/integration/api/v2010/account/recording_spec.rb +14 -2
- data/spec/integration/messaging/v1/service/phone_number_spec.rb +28 -0
- data/spec/integration/messaging/v1/service_spec.rb +4 -0
- data/spec/integration/notify/v1/service/notification_spec.rb +35 -0
- data/spec/integration/video/v1/recording_spec.rb +45 -0
- data/spec/integration/video/v1/room/recording_spec.rb +4 -3
- data/spec/integration/wireless/v1/rate_plan_spec.rb +8 -0
- data/spec/twiml/messaging_response_spec.rb +28 -0
- data/spec/twiml/voice_response_spec.rb +9 -0
- metadata +2 -2
@@ -10,6 +10,8 @@ module Twilio
|
|
10
10
|
attr_accessor :name
|
11
11
|
attr_accessor :indent
|
12
12
|
|
13
|
+
alias_method :to_xml, :to_s
|
14
|
+
|
13
15
|
def initialize(indent: false, **keyword_args)
|
14
16
|
@name = self.class.name.split('::').last
|
15
17
|
@indent = indent
|
@@ -30,11 +32,7 @@ module Twilio
|
|
30
32
|
result[0].downcase + result[1..result.length]
|
31
33
|
end
|
32
34
|
|
33
|
-
def to_s()
|
34
|
-
self.to_xml_str
|
35
|
-
end
|
36
|
-
|
37
|
-
def to_xml_str(xml_declaration = true)
|
35
|
+
def to_s(xml_declaration = true)
|
38
36
|
xml = self.xml.to_s(:indent => self.indent)
|
39
37
|
|
40
38
|
return ('<?xml version="1.0" encoding="UTF-8"?>' + xml) if xml_declaration
|
@@ -7,6 +7,7 @@ module Twilio
|
|
7
7
|
def initialize()
|
8
8
|
super()
|
9
9
|
self.name = 'Response'
|
10
|
+
yield(self) if block_given?
|
10
11
|
end
|
11
12
|
|
12
13
|
# Create a <Dial> element
|
@@ -28,33 +29,37 @@ module Twilio
|
|
28
29
|
# == Returns:
|
29
30
|
# A <Response> element with a <Dial> child element
|
30
31
|
def dial(
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
)
|
32
|
+
number,
|
33
|
+
action: nil,
|
34
|
+
method: nil,
|
35
|
+
timeout: nil,
|
36
|
+
hangup_on_star: nil,
|
37
|
+
time_limit: nil,
|
38
|
+
caller_id: nil,
|
39
|
+
record: nil,
|
40
|
+
trim: nil,
|
41
|
+
recording_status_callback: nil,
|
42
|
+
recording_status_callback_method: nil,
|
43
|
+
**keyword_args)
|
44
|
+
|
45
|
+
dial = Dial.new(
|
46
|
+
number: number,
|
47
|
+
action: action,
|
48
|
+
method: method,
|
49
|
+
timeout: timeout,
|
50
|
+
hangup_on_star: hangup_on_star,
|
51
|
+
time_limit: time_limit,
|
52
|
+
caller_id: caller_id,
|
53
|
+
record: record,
|
54
|
+
trim: trim,
|
55
|
+
recording_status_callback: recording_status_callback,
|
56
|
+
recording_status_callback_method: recording_status_callback_method,
|
57
|
+
**keyword_args
|
58
|
+
)
|
59
|
+
|
60
|
+
yield(dial) if block_given?
|
61
|
+
|
62
|
+
self.append(dial)
|
58
63
|
end
|
59
64
|
|
60
65
|
# Create an <Echo> element
|
@@ -90,7 +95,7 @@ module Twilio
|
|
90
95
|
workflow_sid: nil,
|
91
96
|
**keyword_args)
|
92
97
|
|
93
|
-
|
98
|
+
enqueue = Enqueue.new(
|
94
99
|
name,
|
95
100
|
action: action,
|
96
101
|
method: method,
|
@@ -98,7 +103,11 @@ module Twilio
|
|
98
103
|
wait_url_method: wait_url_method,
|
99
104
|
workflow_sid: workflow_sid,
|
100
105
|
**keyword_args
|
101
|
-
)
|
106
|
+
)
|
107
|
+
|
108
|
+
yield(enqueue) if block_given?
|
109
|
+
|
110
|
+
self.append(enqueue)
|
102
111
|
end
|
103
112
|
|
104
113
|
# Create a <Gather> element
|
@@ -133,7 +142,7 @@ module Twilio
|
|
133
142
|
acknowledge_sound_url: nil,
|
134
143
|
**keyword_args)
|
135
144
|
|
136
|
-
|
145
|
+
gather = Gather.new(
|
137
146
|
action: action,
|
138
147
|
method: method,
|
139
148
|
timeout: timeout,
|
@@ -146,7 +155,11 @@ module Twilio
|
|
146
155
|
barge_in: barge_in,
|
147
156
|
acknowledge_sound_url: acknowledge_sound_url,
|
148
157
|
**keyword_args
|
149
|
-
)
|
158
|
+
)
|
159
|
+
|
160
|
+
yield(gather) if block_given?
|
161
|
+
|
162
|
+
self.append(gather)
|
150
163
|
end
|
151
164
|
|
152
165
|
# Create a <Hangup> element
|
@@ -187,7 +200,12 @@ module Twilio
|
|
187
200
|
# == Returns:
|
188
201
|
# A <Response> element with a <Play> child element
|
189
202
|
def play(url: nil, loop: nil, digits: nil, **keyword_args)
|
190
|
-
append(Play.new(
|
203
|
+
self.append(Play.new(
|
204
|
+
url: url,
|
205
|
+
loop: loop,
|
206
|
+
digits: digits,
|
207
|
+
**keyword_args
|
208
|
+
))
|
191
209
|
end
|
192
210
|
|
193
211
|
# Create a <Record> element
|
@@ -221,7 +239,6 @@ module Twilio
|
|
221
239
|
transcribe: nil,
|
222
240
|
transcribe_callback: nil,
|
223
241
|
**keyword_args)
|
224
|
-
|
225
242
|
self.append(Record.new(
|
226
243
|
action: action,
|
227
244
|
method: method,
|
@@ -305,7 +322,6 @@ module Twilio
|
|
305
322
|
action: nil,
|
306
323
|
status_callback: nil,
|
307
324
|
**keyword_args)
|
308
|
-
|
309
325
|
self.append(Sms.new(
|
310
326
|
body,
|
311
327
|
to: to,
|
@@ -333,6 +349,7 @@ module Twilio
|
|
333
349
|
if !(number.nil?)
|
334
350
|
@value = number
|
335
351
|
end
|
352
|
+
yield(self) if block_given?
|
336
353
|
end
|
337
354
|
|
338
355
|
# Create a <Client> element
|
@@ -356,7 +373,6 @@ module Twilio
|
|
356
373
|
status_callback_method: nil,
|
357
374
|
status_callback: nil,
|
358
375
|
**keyword_args)
|
359
|
-
|
360
376
|
self.append(Client.new(
|
361
377
|
name,
|
362
378
|
method: method,
|
@@ -409,7 +425,6 @@ module Twilio
|
|
409
425
|
recording_status_callback: nil,
|
410
426
|
recording_status_callback_method: nil,
|
411
427
|
**keyword_args)
|
412
|
-
|
413
428
|
self.append(Conference.new(
|
414
429
|
name,
|
415
430
|
muted: muted,
|
@@ -454,7 +469,6 @@ module Twilio
|
|
454
469
|
status_callback_event: nil,
|
455
470
|
status_callback_method: nil,
|
456
471
|
**keyword_args)
|
457
|
-
|
458
472
|
self.append(Number.new(
|
459
473
|
number,
|
460
474
|
send_digits: send_digits,
|
@@ -486,7 +500,6 @@ module Twilio
|
|
486
500
|
reservation_sid: nil,
|
487
501
|
post_work_activity_sid: nil,
|
488
502
|
**keyword_args)
|
489
|
-
|
490
503
|
self.append(Queue.new(
|
491
504
|
queue_name,
|
492
505
|
url: url,
|
@@ -506,7 +519,7 @@ module Twilio
|
|
506
519
|
# == Returns:
|
507
520
|
# A <Dial> element with a <Sim> child element
|
508
521
|
def sim(sid, **keyword_args)
|
509
|
-
self.append(Sim.new(sid
|
522
|
+
self.append(Sim.new(sid, **keyword_args))
|
510
523
|
end
|
511
524
|
|
512
525
|
# Create a <Sip> element
|
@@ -534,7 +547,6 @@ module Twilio
|
|
534
547
|
status_callback_event: nil,
|
535
548
|
status_callback_method: nil,
|
536
549
|
**keyword_args)
|
537
|
-
|
538
550
|
self.append(Sip.new(
|
539
551
|
uri,
|
540
552
|
username: username,
|
@@ -671,6 +683,7 @@ module Twilio
|
|
671
683
|
def initialize(name, **keyword_args)
|
672
684
|
super(**keyword_args)
|
673
685
|
@value = name
|
686
|
+
yield(self) if block_given?
|
674
687
|
end
|
675
688
|
|
676
689
|
# Create a <Task> element
|
@@ -717,6 +730,7 @@ module Twilio
|
|
717
730
|
# A <Gather> element
|
718
731
|
def initialize(**keyword_args)
|
719
732
|
super(**keyword_args)
|
733
|
+
yield(self) if block_given?
|
720
734
|
end
|
721
735
|
|
722
736
|
# Create a <Say> element
|
@@ -737,7 +751,6 @@ module Twilio
|
|
737
751
|
language: nil,
|
738
752
|
voice: nil,
|
739
753
|
**keyword_args)
|
740
|
-
|
741
754
|
self.append(Say.new(
|
742
755
|
body,
|
743
756
|
loop: loop,
|
@@ -758,7 +771,12 @@ module Twilio
|
|
758
771
|
# == Returns:
|
759
772
|
# A <Gather> element with a <Play> child element
|
760
773
|
def play(url: nil, loop: nil, digits: nil, **keyword_args)
|
761
|
-
append(Play.new(
|
774
|
+
self.append(Play.new(
|
775
|
+
url: url,
|
776
|
+
loop: loop,
|
777
|
+
digits: digits,
|
778
|
+
**keyword_args
|
779
|
+
))
|
762
780
|
end
|
763
781
|
|
764
782
|
# Create a <Pause> element
|
data/lib/twilio-ruby/version.rb
CHANGED
@@ -37,7 +37,13 @@ describe 'Recording' do
|
|
37
37
|
"duration": "6",
|
38
38
|
"price": null,
|
39
39
|
"sid": "REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
40
|
-
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
|
40
|
+
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
|
41
|
+
"encryption_type": "public-key",
|
42
|
+
"encryption_details": {
|
43
|
+
"encryption_public_key_sid": "CRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
44
|
+
"encryption_cek": "OV4h6zrsxMIW7h0Zfqwfn6TI2GCNl54KALlg8wn8YB8KYZhXt6HlgvBWAmQTlfYVeLWydMiCewY0YkDDT1xmNe5huEo9vjuKBS5OmYK4CZkSx1NVv3XOGrZHpd2Pl/5WJHVhUK//AUO87uh5qnUP2E0KoLh1nyCLeGcEkXU0RfpPn/6nxjof/n6m6OzZOyeIRK4Oed5+rEtjqFDfqT0EVKjs6JAxv+f0DCc1xYRHl2yV8bahUPVKs+bHYdy4PVszFKa76M/Uae4jFA9Lv233JqWcxj+K2UoghuGhAFbV/JQIIswY2CBYI8JlVSifSqNEl9vvsTJ8bkVMm3MKbG2P7Q==",
|
45
|
+
"encryption_iv": "8I2hhNIYNTrwxfHk"
|
46
|
+
}
|
41
47
|
}
|
42
48
|
]
|
43
49
|
))
|
@@ -119,7 +125,13 @@ describe 'Recording' do
|
|
119
125
|
"duration": "6",
|
120
126
|
"price": null,
|
121
127
|
"sid": "REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
122
|
-
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
|
128
|
+
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
|
129
|
+
"encryption_type": "public-key",
|
130
|
+
"encryption_details": {
|
131
|
+
"encryption_public_key_sid": "CRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
132
|
+
"encryption_cek": "OV4h6zrsxMIW7h0Zfqwfn6TI2GCNl54KALlg8wn8YB8KYZhXt6HlgvBWAmQTlfYVeLWydMiCewY0YkDDT1xmNe5huEo9vjuKBS5OmYK4CZkSx1NVv3XOGrZHpd2Pl/5WJHVhUK//AUO87uh5qnUP2E0KoLh1nyCLeGcEkXU0RfpPn/6nxjof/n6m6OzZOyeIRK4Oed5+rEtjqFDfqT0EVKjs6JAxv+f0DCc1xYRHl2yV8bahUPVKs+bHYdy4PVszFKa76M/Uae4jFA9Lv233JqWcxj+K2UoghuGhAFbV/JQIIswY2CBYI8JlVSifSqNEl9vvsTJ8bkVMm3MKbG2P7Q==",
|
133
|
+
"encryption_iv": "8I2hhNIYNTrwxfHk"
|
134
|
+
}
|
123
135
|
}
|
124
136
|
],
|
125
137
|
"start": 0,
|
@@ -40,7 +40,13 @@ describe 'Recording' do
|
|
40
40
|
"status": "completed",
|
41
41
|
"channels": 1,
|
42
42
|
"source": "Trunking",
|
43
|
-
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
|
43
|
+
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
|
44
|
+
"encryption_type": "public-key",
|
45
|
+
"encryption_details": {
|
46
|
+
"encryption_public_key_sid": "CRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
47
|
+
"encryption_cek": "OV4h6zrsxMIW7h0Zfqwfn6TI2GCNl54KALlg8wn8YB8KYZhXt6HlgvBWAmQTlfYVeLWydMiCewY0YkDDT1xmNe5huEo9vjuKBS5OmYK4CZkSx1NVv3XOGrZHpd2Pl/5WJHVhUK//AUO87uh5qnUP2E0KoLh1nyCLeGcEkXU0RfpPn/6nxjof/n6m6OzZOyeIRK4Oed5+rEtjqFDfqT0EVKjs6JAxv+f0DCc1xYRHl2yV8bahUPVKs+bHYdy4PVszFKa76M/Uae4jFA9Lv233JqWcxj+K2UoghuGhAFbV/JQIIswY2CBYI8JlVSifSqNEl9vvsTJ8bkVMm3MKbG2P7Q==",
|
48
|
+
"encryption_iv": "8I2hhNIYNTrwxfHk"
|
49
|
+
}
|
44
50
|
}
|
45
51
|
]
|
46
52
|
))
|
@@ -122,7 +128,13 @@ describe 'Recording' do
|
|
122
128
|
"status": "completed",
|
123
129
|
"channels": 1,
|
124
130
|
"source": "Trunking",
|
125
|
-
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
|
131
|
+
"uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
|
132
|
+
"encryption_type": "public-key",
|
133
|
+
"encryption_details": {
|
134
|
+
"encryption_public_key_sid": "CRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
135
|
+
"encryption_cek": "OV4h6zrsxMIW7h0Zfqwfn6TI2GCNl54KALlg8wn8YB8KYZhXt6HlgvBWAmQTlfYVeLWydMiCewY0YkDDT1xmNe5huEo9vjuKBS5OmYK4CZkSx1NVv3XOGrZHpd2Pl/5WJHVhUK//AUO87uh5qnUP2E0KoLh1nyCLeGcEkXU0RfpPn/6nxjof/n6m6OzZOyeIRK4Oed5+rEtjqFDfqT0EVKjs6JAxv+f0DCc1xYRHl2yV8bahUPVKs+bHYdy4PVszFKa76M/Uae4jFA9Lv233JqWcxj+K2UoghuGhAFbV/JQIIswY2CBYI8JlVSifSqNEl9vvsTJ8bkVMm3MKbG2P7Q==",
|
136
|
+
"encryption_iv": "8I2hhNIYNTrwxfHk"
|
137
|
+
}
|
126
138
|
}
|
127
139
|
],
|
128
140
|
"start": 0,
|
@@ -50,6 +50,34 @@ describe 'PhoneNumber' do
|
|
50
50
|
expect(actual).to_not eq(nil)
|
51
51
|
end
|
52
52
|
|
53
|
+
it "receives create_with_capabilities responses" do
|
54
|
+
@holodeck.mock(Twilio::TwilioResponse.new(
|
55
|
+
201,
|
56
|
+
%q[
|
57
|
+
{
|
58
|
+
"sid": "PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
59
|
+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
60
|
+
"service_sid": "MGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
61
|
+
"date_created": "2015-07-30T20:12:31Z",
|
62
|
+
"date_updated": "2015-07-30T20:12:33Z",
|
63
|
+
"phone_number": "+987654321",
|
64
|
+
"country_code": "US",
|
65
|
+
"capabilities": [
|
66
|
+
"MMS",
|
67
|
+
"SMS",
|
68
|
+
"Voice"
|
69
|
+
],
|
70
|
+
"url": "https://messaging.twilio.com/v1/Services/MGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/PhoneNumbers/PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
71
|
+
}
|
72
|
+
]
|
73
|
+
))
|
74
|
+
|
75
|
+
actual = @client.messaging.v1.services("MGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
|
76
|
+
.phone_numbers.create(phone_number_sid: "PNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
|
77
|
+
|
78
|
+
expect(actual).to_not eq(nil)
|
79
|
+
end
|
80
|
+
|
53
81
|
it "can delete" do
|
54
82
|
@holodeck.mock(Twilio::TwilioResponse.new(500, ''))
|
55
83
|
|
@@ -47,6 +47,7 @@ describe 'Service' do
|
|
47
47
|
"scan_message_content": "inherit",
|
48
48
|
"area_code_geomatch": true,
|
49
49
|
"validity_period": 600,
|
50
|
+
"synchronous_validation": true,
|
50
51
|
"links": {
|
51
52
|
"phone_numbers": "https://messaging.twilio.com/v1/Services/MGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/PhoneNumbers",
|
52
53
|
"short_codes": "https://messaging.twilio.com/v1/Services/MGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/ShortCodes",
|
@@ -92,6 +93,7 @@ describe 'Service' do
|
|
92
93
|
"smart_encoding": false,
|
93
94
|
"fallback_to_long_code": true,
|
94
95
|
"scan_message_content": "inherit",
|
96
|
+
"synchronous_validation": true,
|
95
97
|
"area_code_geomatch": true,
|
96
98
|
"validity_period": 600,
|
97
99
|
"inbound_request_url": "https://www.example.com",
|
@@ -157,6 +159,7 @@ describe 'Service' do
|
|
157
159
|
"area_code_geomatch": true,
|
158
160
|
"validity_period": 600,
|
159
161
|
"scan_message_content": "inherit",
|
162
|
+
"synchronous_validation": true,
|
160
163
|
"inbound_request_url": "https://www.example.com/",
|
161
164
|
"inbound_method": "POST",
|
162
165
|
"fallback_url": null,
|
@@ -216,6 +219,7 @@ describe 'Service' do
|
|
216
219
|
"area_code_geomatch": true,
|
217
220
|
"validity_period": 600,
|
218
221
|
"scan_message_content": "inherit",
|
222
|
+
"synchronous_validation": true,
|
219
223
|
"links": {
|
220
224
|
"phone_numbers": "https://messaging.twilio.com/v1/Services/MGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/PhoneNumbers",
|
221
225
|
"short_codes": "https://messaging.twilio.com/v1/Services/MGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/ShortCodes",
|
@@ -59,4 +59,39 @@ describe 'Notification' do
|
|
59
59
|
|
60
60
|
expect(actual).to_not eq(nil)
|
61
61
|
end
|
62
|
+
|
63
|
+
it "receives create_direct_notification responses" do
|
64
|
+
@holodeck.mock(Twilio::TwilioResponse.new(
|
65
|
+
201,
|
66
|
+
%q[
|
67
|
+
{
|
68
|
+
"sid": "NOb8021351170b4e1286adaac3fdd6d082",
|
69
|
+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
70
|
+
"service_sid": "IS699b53e02da45a1ba9d13b7d7d2766af",
|
71
|
+
"date_created": "2016-03-24T23:42:28Z",
|
72
|
+
"identities": [],
|
73
|
+
"tags": [],
|
74
|
+
"segments": [],
|
75
|
+
"priority": "high",
|
76
|
+
"ttl": 2419200,
|
77
|
+
"title": null,
|
78
|
+
"body": "body",
|
79
|
+
"sound": null,
|
80
|
+
"action": null,
|
81
|
+
"data": null,
|
82
|
+
"apn": null,
|
83
|
+
"fcm": null,
|
84
|
+
"gcm": null,
|
85
|
+
"sms": null,
|
86
|
+
"facebook_messenger": null,
|
87
|
+
"alexa": null
|
88
|
+
}
|
89
|
+
]
|
90
|
+
))
|
91
|
+
|
92
|
+
actual = @client.notify.v1.services("ISaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") \
|
93
|
+
.notifications.create()
|
94
|
+
|
95
|
+
expect(actual).to_not eq(nil)
|
96
|
+
end
|
62
97
|
end
|
@@ -92,6 +92,51 @@ describe 'Recording' do
|
|
92
92
|
expect(actual).to_not eq(nil)
|
93
93
|
end
|
94
94
|
|
95
|
+
it "receives read_results responses" do
|
96
|
+
@holodeck.mock(Twilio::TwilioResponse.new(
|
97
|
+
200,
|
98
|
+
%q[
|
99
|
+
{
|
100
|
+
"recordings": [
|
101
|
+
{
|
102
|
+
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
103
|
+
"status": "completed",
|
104
|
+
"date_created": "2015-07-30T20:00:00Z",
|
105
|
+
"sid": "RTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
106
|
+
"source_sid": "MTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
107
|
+
"size": 23,
|
108
|
+
"type": "audio",
|
109
|
+
"duration": 10,
|
110
|
+
"container_format": "mka",
|
111
|
+
"codec": "OPUS",
|
112
|
+
"grouping_sids": {
|
113
|
+
"room_sid": "RMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
114
|
+
"participant_sid": "PAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
115
|
+
},
|
116
|
+
"url": "https://video.twilio.com/v1/Recordings/RTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
117
|
+
"links": {
|
118
|
+
"media": "https://video.twilio.com/v1/Recordings/RTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Media"
|
119
|
+
}
|
120
|
+
}
|
121
|
+
],
|
122
|
+
"meta": {
|
123
|
+
"page": 0,
|
124
|
+
"page_size": 50,
|
125
|
+
"first_page_url": "https://video.twilio.com/v1/Recordings?PageSize=50&Page=0",
|
126
|
+
"previous_page_url": null,
|
127
|
+
"url": "https://video.twilio.com/v1/Recordings?PageSize=50&Page=0",
|
128
|
+
"next_page_url": null,
|
129
|
+
"key": "recordings"
|
130
|
+
}
|
131
|
+
}
|
132
|
+
]
|
133
|
+
))
|
134
|
+
|
135
|
+
actual = @client.video.v1.recordings.list()
|
136
|
+
|
137
|
+
expect(actual).to_not eq(nil)
|
138
|
+
end
|
139
|
+
|
95
140
|
it "can delete" do
|
96
141
|
@holodeck.mock(Twilio::TwilioResponse.new(500, ''))
|
97
142
|
|