bandwidth-sdk 2.2.2 → 3.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/bandwidth.rb +28 -2
- data/lib/bandwidth/api_helper.rb +14 -9
- data/lib/bandwidth/client.rb +22 -2
- data/lib/bandwidth/configuration.rb +67 -12
- data/lib/bandwidth/http/auth/two_factor_auth_basic_auth.rb +22 -0
- data/lib/bandwidth/http/auth/web_rtc_basic_auth.rb +22 -0
- data/lib/bandwidth/messaging_lib/messaging.rb +1 -3
- data/lib/bandwidth/messaging_lib/messaging/client.rb +13 -2
- data/lib/bandwidth/messaging_lib/messaging/controllers/api_controller.rb +48 -95
- data/lib/bandwidth/messaging_lib/messaging/controllers/base_controller.rb +1 -1
- data/lib/bandwidth/messaging_lib/messaging/exceptions/{generic_client_exception.rb → messaging_exception.rb} +2 -14
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth.rb +20 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/client.rb +51 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/api_controller.rb +158 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/base_controller.rb +49 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/exceptions/invalid_request_exception.rb +29 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/models/two_factor_code_request_schema.rb +88 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/models/two_factor_messaging_response.rb +35 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/models/two_factor_verify_code_response.rb +35 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/models/two_factor_verify_request_schema.rb +94 -0
- data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/models/two_factor_voice_response.rb +35 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/bridge.rb +28 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/conference.rb +32 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/gather.rb +13 -1
- data/lib/bandwidth/voice_lib/bxml/verbs/phone_number.rb +5 -1
- data/lib/bandwidth/voice_lib/bxml/verbs/record.rb +6 -1
- data/lib/bandwidth/voice_lib/bxml/verbs/redirect.rb +5 -1
- data/lib/bandwidth/voice_lib/bxml/verbs/ring.rb +15 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/send_dtmf.rb +4 -1
- data/lib/bandwidth/voice_lib/bxml/verbs/start_gather.rb +20 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/stop_gather.rb +14 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/transfer.rb +5 -1
- data/lib/bandwidth/voice_lib/voice.rb +8 -0
- data/lib/bandwidth/voice_lib/voice/client.rb +13 -2
- data/lib/bandwidth/voice_lib/voice/controllers/api_controller.rb +768 -131
- data/lib/bandwidth/voice_lib/voice/controllers/base_controller.rb +1 -1
- data/lib/bandwidth/voice_lib/voice/models/answer_fallback_method_enum.rb +17 -0
- data/lib/bandwidth/voice_lib/voice/models/api_call_response.rb +45 -0
- data/lib/bandwidth/voice_lib/voice/models/api_create_call_request.rb +65 -2
- data/lib/bandwidth/voice_lib/voice/models/api_modify_call_request.rb +36 -0
- data/lib/bandwidth/voice_lib/voice/models/api_transcribe_recording_request.rb +11 -2
- data/lib/bandwidth/voice_lib/voice/models/call_engine_modify_conference_request.rb +107 -0
- data/lib/bandwidth/voice_lib/voice/models/conference_detail.rb +108 -0
- data/lib/bandwidth/voice_lib/voice/models/conference_event_method_enum.rb +35 -0
- data/lib/bandwidth/voice_lib/voice/models/conference_member_detail.rb +80 -0
- data/lib/bandwidth/voice_lib/voice/models/conference_recording_metadata_response.rb +126 -0
- data/lib/bandwidth/voice_lib/voice/models/disconnect_cause_enum.rb +4 -1
- data/lib/bandwidth/voice_lib/voice/models/recording_metadata_response.rb +33 -5
- data/lib/bandwidth/voice_lib/voice/models/redirect_fallback_method_enum.rb +17 -0
- data/lib/bandwidth/voice_lib/voice/models/state_enum.rb +3 -3
- data/lib/bandwidth/voice_lib/voice/models/status1_enum.rb +10 -13
- data/lib/bandwidth/voice_lib/voice/models/status3_enum.rb +32 -0
- data/lib/bandwidth/voice_lib/voice/models/status_enum.rb +4 -13
- data/lib/bandwidth/voice_lib/voice/models/transcription.rb +1 -1
- data/lib/bandwidth/web_rtc_lib/utils/web_rtc_transfer.rb +13 -0
- data/lib/bandwidth/web_rtc_lib/web_rtc.rb +21 -0
- data/lib/bandwidth/web_rtc_lib/web_rtc/client.rb +51 -0
- data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/api_controller.rb +692 -0
- data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/base_controller.rb +49 -0
- data/lib/bandwidth/{messaging_lib/messaging/exceptions/path_client_exception.rb → web_rtc_lib/web_rtc/exceptions/error_exception.rb} +4 -19
- data/lib/bandwidth/web_rtc_lib/web_rtc/models/accounts_participants_response.rb +47 -0
- data/lib/bandwidth/web_rtc_lib/web_rtc/models/participant.rb +83 -0
- data/lib/bandwidth/web_rtc_lib/web_rtc/models/participant_subscription.rb +35 -0
- data/lib/bandwidth/web_rtc_lib/web_rtc/models/publish_permission_enum.rb +17 -0
- data/lib/bandwidth/web_rtc_lib/web_rtc/models/session.rb +44 -0
- data/lib/bandwidth/web_rtc_lib/web_rtc/models/subscriptions.rb +54 -0
- metadata +60 -13
- data/lib/bandwidth/messaging_lib/messaging/models/field_error.rb +0 -44
@@ -17,20 +17,31 @@ module Bandwidth
|
|
17
17
|
|
18
18
|
def initialize(timeout: 60, max_retries: 0, retry_interval: 1,
|
19
19
|
backoff_factor: 1, environment: Environment::PRODUCTION,
|
20
|
+
base_url: 'https://www.example.com',
|
20
21
|
messaging_basic_auth_user_name: 'TODO: Replace',
|
21
22
|
messaging_basic_auth_password: 'TODO: Replace',
|
23
|
+
two_factor_auth_basic_auth_user_name: 'TODO: Replace',
|
24
|
+
two_factor_auth_basic_auth_password: 'TODO: Replace',
|
22
25
|
voice_basic_auth_user_name: 'TODO: Replace',
|
23
|
-
voice_basic_auth_password: 'TODO: Replace',
|
26
|
+
voice_basic_auth_password: 'TODO: Replace',
|
27
|
+
web_rtc_basic_auth_user_name: 'TODO: Replace',
|
28
|
+
web_rtc_basic_auth_password: 'TODO: Replace',
|
29
|
+
config: nil)
|
24
30
|
@config = if config.nil?
|
25
31
|
Configuration.new(timeout: timeout,
|
26
32
|
max_retries: max_retries,
|
27
33
|
retry_interval: retry_interval,
|
28
34
|
backoff_factor: backoff_factor,
|
29
35
|
environment: environment,
|
36
|
+
base_url: base_url,
|
30
37
|
messaging_basic_auth_user_name: messaging_basic_auth_user_name,
|
31
38
|
messaging_basic_auth_password: messaging_basic_auth_password,
|
39
|
+
two_factor_auth_basic_auth_user_name: two_factor_auth_basic_auth_user_name,
|
40
|
+
two_factor_auth_basic_auth_password: two_factor_auth_basic_auth_password,
|
32
41
|
voice_basic_auth_user_name: voice_basic_auth_user_name,
|
33
|
-
voice_basic_auth_password: voice_basic_auth_password
|
42
|
+
voice_basic_auth_password: voice_basic_auth_password,
|
43
|
+
web_rtc_basic_auth_user_name: web_rtc_basic_auth_user_name,
|
44
|
+
web_rtc_basic_auth_password: web_rtc_basic_auth_password)
|
34
45
|
else
|
35
46
|
config
|
36
47
|
end
|
@@ -22,7 +22,7 @@ module Voice
|
|
22
22
|
_query_builder << '/api/v2/accounts/{accountId}/calls'
|
23
23
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
24
24
|
_query_builder,
|
25
|
-
'accountId' => account_id
|
25
|
+
'accountId' => { 'value' => account_id, 'encode' => true }
|
26
26
|
)
|
27
27
|
_query_url = APIHelper.clean_url _query_builder
|
28
28
|
|
@@ -44,20 +44,19 @@ module Voice
|
|
44
44
|
# Validate response against endpoint and global error codes.
|
45
45
|
if _response.status_code == 400
|
46
46
|
raise ApiErrorResponseException.new(
|
47
|
-
'Something\'s not quite right...
|
48
|
-
'
|
49
|
-
' before trying again.',
|
47
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
48
|
+
' fix it before trying again.',
|
50
49
|
_response
|
51
50
|
)
|
52
51
|
elsif _response.status_code == 401
|
53
52
|
raise APIException.new(
|
54
|
-
'Please
|
53
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
54
|
+
' credentials to authenticate to the API.',
|
55
55
|
_response
|
56
56
|
)
|
57
57
|
elsif _response.status_code == 403
|
58
58
|
raise ApiErrorResponseException.new(
|
59
|
-
'
|
60
|
-
' the Bandwidth Dashboard.',
|
59
|
+
'User unauthorized to perform this action.',
|
61
60
|
_response
|
62
61
|
)
|
63
62
|
elsif _response.status_code == 404
|
@@ -87,7 +86,9 @@ module Voice
|
|
87
86
|
|
88
87
|
# Return appropriate response type.
|
89
88
|
decoded = APIHelper.json_deserialize(_response.raw_body)
|
90
|
-
ApiResponse.new(
|
89
|
+
ApiResponse.new(
|
90
|
+
_response, data: ApiCallResponse.from_hash(decoded)
|
91
|
+
)
|
91
92
|
end
|
92
93
|
|
93
94
|
# Returns near-realtime metadata about the specified call
|
@@ -101,8 +102,8 @@ module Voice
|
|
101
102
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}'
|
102
103
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
103
104
|
_query_builder,
|
104
|
-
'accountId' => account_id,
|
105
|
-
'callId' => call_id
|
105
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
106
|
+
'callId' => { 'value' => call_id, 'encode' => true }
|
106
107
|
)
|
107
108
|
_query_url = APIHelper.clean_url _query_builder
|
108
109
|
|
@@ -122,20 +123,19 @@ module Voice
|
|
122
123
|
# Validate response against endpoint and global error codes.
|
123
124
|
if _response.status_code == 400
|
124
125
|
raise ApiErrorResponseException.new(
|
125
|
-
'Something\'s not quite right...
|
126
|
-
'
|
127
|
-
' before trying again.',
|
126
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
127
|
+
' fix it before trying again.',
|
128
128
|
_response
|
129
129
|
)
|
130
130
|
elsif _response.status_code == 401
|
131
131
|
raise APIException.new(
|
132
|
-
'Please
|
132
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
133
|
+
' credentials to authenticate to the API.',
|
133
134
|
_response
|
134
135
|
)
|
135
136
|
elsif _response.status_code == 403
|
136
137
|
raise ApiErrorResponseException.new(
|
137
|
-
'
|
138
|
-
' the Bandwidth Dashboard.',
|
138
|
+
'User unauthorized to perform this action.',
|
139
139
|
_response
|
140
140
|
)
|
141
141
|
elsif _response.status_code == 404
|
@@ -165,7 +165,9 @@ module Voice
|
|
165
165
|
|
166
166
|
# Return appropriate response type.
|
167
167
|
decoded = APIHelper.json_deserialize(_response.raw_body)
|
168
|
-
ApiResponse.new(
|
168
|
+
ApiResponse.new(
|
169
|
+
_response, data: ApiCallStateResponse.from_hash(decoded)
|
170
|
+
)
|
169
171
|
end
|
170
172
|
|
171
173
|
# Interrupts and replaces an active call's BXML document
|
@@ -181,8 +183,8 @@ module Voice
|
|
181
183
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}'
|
182
184
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
183
185
|
_query_builder,
|
184
|
-
'accountId' => account_id,
|
185
|
-
'callId' => call_id
|
186
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
187
|
+
'callId' => { 'value' => call_id, 'encode' => true }
|
186
188
|
)
|
187
189
|
_query_url = APIHelper.clean_url _query_builder
|
188
190
|
|
@@ -203,20 +205,19 @@ module Voice
|
|
203
205
|
# Validate response against endpoint and global error codes.
|
204
206
|
if _response.status_code == 400
|
205
207
|
raise ApiErrorResponseException.new(
|
206
|
-
'Something\'s not quite right...
|
207
|
-
'
|
208
|
-
' before trying again.',
|
208
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
209
|
+
' fix it before trying again.',
|
209
210
|
_response
|
210
211
|
)
|
211
212
|
elsif _response.status_code == 401
|
212
213
|
raise APIException.new(
|
213
|
-
'Please
|
214
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
215
|
+
' credentials to authenticate to the API.',
|
214
216
|
_response
|
215
217
|
)
|
216
218
|
elsif _response.status_code == 403
|
217
219
|
raise ApiErrorResponseException.new(
|
218
|
-
'
|
219
|
-
' the Bandwidth Dashboard.',
|
220
|
+
'User unauthorized to perform this action.',
|
220
221
|
_response
|
221
222
|
)
|
222
223
|
elsif _response.status_code == 404
|
@@ -261,8 +262,8 @@ module Voice
|
|
261
262
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recording'
|
262
263
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
263
264
|
_query_builder,
|
264
|
-
'accountId' => account_id,
|
265
|
-
'callId' => call_id
|
265
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
266
|
+
'callId' => { 'value' => call_id, 'encode' => true }
|
266
267
|
)
|
267
268
|
_query_url = APIHelper.clean_url _query_builder
|
268
269
|
|
@@ -283,20 +284,19 @@ module Voice
|
|
283
284
|
# Validate response against endpoint and global error codes.
|
284
285
|
if _response.status_code == 400
|
285
286
|
raise ApiErrorResponseException.new(
|
286
|
-
'Something\'s not quite right...
|
287
|
-
'
|
288
|
-
' before trying again.',
|
287
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
288
|
+
' fix it before trying again.',
|
289
289
|
_response
|
290
290
|
)
|
291
291
|
elsif _response.status_code == 401
|
292
292
|
raise APIException.new(
|
293
|
-
'Please
|
293
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
294
|
+
' credentials to authenticate to the API.',
|
294
295
|
_response
|
295
296
|
)
|
296
297
|
elsif _response.status_code == 403
|
297
298
|
raise ApiErrorResponseException.new(
|
298
|
-
'
|
299
|
-
' the Bandwidth Dashboard.',
|
299
|
+
'User unauthorized to perform this action.',
|
300
300
|
_response
|
301
301
|
)
|
302
302
|
elsif _response.status_code == 404
|
@@ -332,31 +332,16 @@ module Voice
|
|
332
332
|
# took place during the specified call
|
333
333
|
# @param [String] account_id Required parameter: Example:
|
334
334
|
# @param [String] call_id Required parameter: Example:
|
335
|
-
# @param [String] from Optional parameter: Example:
|
336
|
-
# @param [String] to Optional parameter: Example:
|
337
|
-
# @param [String] min_start_time Optional parameter: Example:
|
338
|
-
# @param [String] max_start_time Optional parameter: Example:
|
339
335
|
# @return [List of RecordingMetadataResponse] response from the API call
|
340
336
|
def get_query_metadata_for_account_and_call(account_id,
|
341
|
-
call_id
|
342
|
-
from: nil,
|
343
|
-
to: nil,
|
344
|
-
min_start_time: nil,
|
345
|
-
max_start_time: nil)
|
337
|
+
call_id)
|
346
338
|
# Prepare query url.
|
347
339
|
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
348
340
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings'
|
349
341
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
350
342
|
_query_builder,
|
351
|
-
'accountId' => account_id,
|
352
|
-
'callId' => call_id
|
353
|
-
)
|
354
|
-
_query_builder = APIHelper.append_url_with_query_parameters(
|
355
|
-
_query_builder,
|
356
|
-
'from' => from,
|
357
|
-
'to' => to,
|
358
|
-
'minStartTime' => min_start_time,
|
359
|
-
'maxStartTime' => max_start_time
|
343
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
344
|
+
'callId' => { 'value' => call_id, 'encode' => true }
|
360
345
|
)
|
361
346
|
_query_url = APIHelper.clean_url _query_builder
|
362
347
|
|
@@ -376,20 +361,19 @@ module Voice
|
|
376
361
|
# Validate response against endpoint and global error codes.
|
377
362
|
if _response.status_code == 400
|
378
363
|
raise ApiErrorResponseException.new(
|
379
|
-
'Something\'s not quite right...
|
380
|
-
'
|
381
|
-
' before trying again.',
|
364
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
365
|
+
' fix it before trying again.',
|
382
366
|
_response
|
383
367
|
)
|
384
368
|
elsif _response.status_code == 401
|
385
369
|
raise APIException.new(
|
386
|
-
'Please
|
370
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
371
|
+
' credentials to authenticate to the API.',
|
387
372
|
_response
|
388
373
|
)
|
389
374
|
elsif _response.status_code == 403
|
390
375
|
raise ApiErrorResponseException.new(
|
391
|
-
'
|
392
|
-
' the Bandwidth Dashboard.',
|
376
|
+
'User unauthorized to perform this action.',
|
393
377
|
_response
|
394
378
|
)
|
395
379
|
elsif _response.status_code == 404
|
@@ -438,9 +422,9 @@ module Voice
|
|
438
422
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}'
|
439
423
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
440
424
|
_query_builder,
|
441
|
-
'accountId' => account_id,
|
442
|
-
'callId' => call_id,
|
443
|
-
'recordingId' => recording_id
|
425
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
426
|
+
'callId' => { 'value' => call_id, 'encode' => true },
|
427
|
+
'recordingId' => { 'value' => recording_id, 'encode' => true }
|
444
428
|
)
|
445
429
|
_query_url = APIHelper.clean_url _query_builder
|
446
430
|
|
@@ -460,20 +444,19 @@ module Voice
|
|
460
444
|
# Validate response against endpoint and global error codes.
|
461
445
|
if _response.status_code == 400
|
462
446
|
raise ApiErrorResponseException.new(
|
463
|
-
'Something\'s not quite right...
|
464
|
-
'
|
465
|
-
' before trying again.',
|
447
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
448
|
+
' fix it before trying again.',
|
466
449
|
_response
|
467
450
|
)
|
468
451
|
elsif _response.status_code == 401
|
469
452
|
raise APIException.new(
|
470
|
-
'Please
|
453
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
454
|
+
' credentials to authenticate to the API.',
|
471
455
|
_response
|
472
456
|
)
|
473
457
|
elsif _response.status_code == 403
|
474
458
|
raise ApiErrorResponseException.new(
|
475
|
-
'
|
476
|
-
' the Bandwidth Dashboard.',
|
459
|
+
'User unauthorized to perform this action.',
|
477
460
|
_response
|
478
461
|
)
|
479
462
|
elsif _response.status_code == 404
|
@@ -503,8 +486,9 @@ module Voice
|
|
503
486
|
|
504
487
|
# Return appropriate response type.
|
505
488
|
decoded = APIHelper.json_deserialize(_response.raw_body)
|
506
|
-
ApiResponse.new(
|
507
|
-
|
489
|
+
ApiResponse.new(
|
490
|
+
_response, data: RecordingMetadataResponse.from_hash(decoded)
|
491
|
+
)
|
508
492
|
end
|
509
493
|
|
510
494
|
# Deletes the specified recording
|
@@ -520,9 +504,9 @@ module Voice
|
|
520
504
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}'
|
521
505
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
522
506
|
_query_builder,
|
523
|
-
'accountId' => account_id,
|
524
|
-
'callId' => call_id,
|
525
|
-
'recordingId' => recording_id
|
507
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
508
|
+
'callId' => { 'value' => call_id, 'encode' => true },
|
509
|
+
'recordingId' => { 'value' => recording_id, 'encode' => true }
|
526
510
|
)
|
527
511
|
_query_url = APIHelper.clean_url _query_builder
|
528
512
|
|
@@ -536,20 +520,19 @@ module Voice
|
|
536
520
|
# Validate response against endpoint and global error codes.
|
537
521
|
if _response.status_code == 400
|
538
522
|
raise ApiErrorResponseException.new(
|
539
|
-
'Something\'s not quite right...
|
540
|
-
'
|
541
|
-
' before trying again.',
|
523
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
524
|
+
' fix it before trying again.',
|
542
525
|
_response
|
543
526
|
)
|
544
527
|
elsif _response.status_code == 401
|
545
528
|
raise APIException.new(
|
546
|
-
'Please
|
529
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
530
|
+
' credentials to authenticate to the API.',
|
547
531
|
_response
|
548
532
|
)
|
549
533
|
elsif _response.status_code == 403
|
550
534
|
raise ApiErrorResponseException.new(
|
551
|
-
'
|
552
|
-
' the Bandwidth Dashboard.',
|
535
|
+
'User unauthorized to perform this action.',
|
553
536
|
_response
|
554
537
|
)
|
555
538
|
elsif _response.status_code == 404
|
@@ -594,9 +577,9 @@ module Voice
|
|
594
577
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/media'
|
595
578
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
596
579
|
_query_builder,
|
597
|
-
'accountId' => account_id,
|
598
|
-
'callId' => call_id,
|
599
|
-
'recordingId' => recording_id
|
580
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
581
|
+
'callId' => { 'value' => call_id, 'encode' => true },
|
582
|
+
'recordingId' => { 'value' => recording_id, 'encode' => true }
|
600
583
|
)
|
601
584
|
_query_url = APIHelper.clean_url _query_builder
|
602
585
|
|
@@ -610,20 +593,19 @@ module Voice
|
|
610
593
|
# Validate response against endpoint and global error codes.
|
611
594
|
if _response.status_code == 400
|
612
595
|
raise ApiErrorResponseException.new(
|
613
|
-
'Something\'s not quite right...
|
614
|
-
'
|
615
|
-
' before trying again.',
|
596
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
597
|
+
' fix it before trying again.',
|
616
598
|
_response
|
617
599
|
)
|
618
600
|
elsif _response.status_code == 401
|
619
601
|
raise APIException.new(
|
620
|
-
'Please
|
602
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
603
|
+
' credentials to authenticate to the API.',
|
621
604
|
_response
|
622
605
|
)
|
623
606
|
elsif _response.status_code == 403
|
624
607
|
raise ApiErrorResponseException.new(
|
625
|
-
'
|
626
|
-
' the Bandwidth Dashboard.',
|
608
|
+
'User unauthorized to perform this action.',
|
627
609
|
_response
|
628
610
|
)
|
629
611
|
elsif _response.status_code == 404
|
@@ -652,7 +634,9 @@ module Voice
|
|
652
634
|
validate_response(_response)
|
653
635
|
|
654
636
|
# Return appropriate response type.
|
655
|
-
ApiResponse.new(
|
637
|
+
ApiResponse.new(
|
638
|
+
_response, data: _response.raw_body
|
639
|
+
)
|
656
640
|
end
|
657
641
|
|
658
642
|
# Deletes the specified recording's media
|
@@ -668,9 +652,9 @@ module Voice
|
|
668
652
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/media'
|
669
653
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
670
654
|
_query_builder,
|
671
|
-
'accountId' => account_id,
|
672
|
-
'callId' => call_id,
|
673
|
-
'recordingId' => recording_id
|
655
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
656
|
+
'callId' => { 'value' => call_id, 'encode' => true },
|
657
|
+
'recordingId' => { 'value' => recording_id, 'encode' => true }
|
674
658
|
)
|
675
659
|
_query_url = APIHelper.clean_url _query_builder
|
676
660
|
|
@@ -684,20 +668,19 @@ module Voice
|
|
684
668
|
# Validate response against endpoint and global error codes.
|
685
669
|
if _response.status_code == 400
|
686
670
|
raise ApiErrorResponseException.new(
|
687
|
-
'Something\'s not quite right...
|
688
|
-
'
|
689
|
-
' before trying again.',
|
671
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
672
|
+
' fix it before trying again.',
|
690
673
|
_response
|
691
674
|
)
|
692
675
|
elsif _response.status_code == 401
|
693
676
|
raise APIException.new(
|
694
|
-
'Please
|
677
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
678
|
+
' credentials to authenticate to the API.',
|
695
679
|
_response
|
696
680
|
)
|
697
681
|
elsif _response.status_code == 403
|
698
682
|
raise ApiErrorResponseException.new(
|
699
|
-
'
|
700
|
-
' the Bandwidth Dashboard.',
|
683
|
+
'User unauthorized to perform this action.',
|
701
684
|
_response
|
702
685
|
)
|
703
686
|
elsif _response.status_code == 404
|
@@ -742,9 +725,9 @@ module Voice
|
|
742
725
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/transcription'
|
743
726
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
744
727
|
_query_builder,
|
745
|
-
'accountId' => account_id,
|
746
|
-
'callId' => call_id,
|
747
|
-
'recordingId' => recording_id
|
728
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
729
|
+
'callId' => { 'value' => call_id, 'encode' => true },
|
730
|
+
'recordingId' => { 'value' => recording_id, 'encode' => true }
|
748
731
|
)
|
749
732
|
_query_url = APIHelper.clean_url _query_builder
|
750
733
|
|
@@ -764,20 +747,19 @@ module Voice
|
|
764
747
|
# Validate response against endpoint and global error codes.
|
765
748
|
if _response.status_code == 400
|
766
749
|
raise ApiErrorResponseException.new(
|
767
|
-
'Something\'s not quite right...
|
768
|
-
'
|
769
|
-
' before trying again.',
|
750
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
751
|
+
' fix it before trying again.',
|
770
752
|
_response
|
771
753
|
)
|
772
754
|
elsif _response.status_code == 401
|
773
755
|
raise APIException.new(
|
774
|
-
'Please
|
756
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
757
|
+
' credentials to authenticate to the API.',
|
775
758
|
_response
|
776
759
|
)
|
777
760
|
elsif _response.status_code == 403
|
778
761
|
raise ApiErrorResponseException.new(
|
779
|
-
'
|
780
|
-
' the Bandwidth Dashboard.',
|
762
|
+
'User unauthorized to perform this action.',
|
781
763
|
_response
|
782
764
|
)
|
783
765
|
elsif _response.status_code == 404
|
@@ -807,7 +789,9 @@ module Voice
|
|
807
789
|
|
808
790
|
# Return appropriate response type.
|
809
791
|
decoded = APIHelper.json_deserialize(_response.raw_body)
|
810
|
-
ApiResponse.new(
|
792
|
+
ApiResponse.new(
|
793
|
+
_response, data: TranscriptionResponse.from_hash(decoded)
|
794
|
+
)
|
811
795
|
end
|
812
796
|
|
813
797
|
# Requests that the specified recording be transcribed
|
@@ -825,9 +809,9 @@ module Voice
|
|
825
809
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/transcription'
|
826
810
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
827
811
|
_query_builder,
|
828
|
-
'accountId' => account_id,
|
829
|
-
'callId' => call_id,
|
830
|
-
'recordingId' => recording_id
|
812
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
813
|
+
'callId' => { 'value' => call_id, 'encode' => true },
|
814
|
+
'recordingId' => { 'value' => recording_id, 'encode' => true }
|
831
815
|
)
|
832
816
|
_query_url = APIHelper.clean_url _query_builder
|
833
817
|
|
@@ -848,20 +832,19 @@ module Voice
|
|
848
832
|
# Validate response against endpoint and global error codes.
|
849
833
|
if _response.status_code == 400
|
850
834
|
raise ApiErrorResponseException.new(
|
851
|
-
'Something\'s not quite right...
|
852
|
-
'
|
853
|
-
' before trying again.',
|
835
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
836
|
+
' fix it before trying again.',
|
854
837
|
_response
|
855
838
|
)
|
856
839
|
elsif _response.status_code == 401
|
857
840
|
raise APIException.new(
|
858
|
-
'Please
|
841
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
842
|
+
' credentials to authenticate to the API.',
|
859
843
|
_response
|
860
844
|
)
|
861
845
|
elsif _response.status_code == 403
|
862
846
|
raise ApiErrorResponseException.new(
|
863
|
-
'
|
864
|
-
' the Bandwidth Dashboard.',
|
847
|
+
'User unauthorized to perform this action.',
|
865
848
|
_response
|
866
849
|
)
|
867
850
|
elsif _response.status_code == 404
|
@@ -912,9 +895,9 @@ module Voice
|
|
912
895
|
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/transcription'
|
913
896
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
914
897
|
_query_builder,
|
915
|
-
'accountId' => account_id,
|
916
|
-
'callId' => call_id,
|
917
|
-
'recordingId' => recording_id
|
898
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
899
|
+
'callId' => { 'value' => call_id, 'encode' => true },
|
900
|
+
'recordingId' => { 'value' => recording_id, 'encode' => true }
|
918
901
|
)
|
919
902
|
_query_url = APIHelper.clean_url _query_builder
|
920
903
|
|
@@ -928,20 +911,273 @@ module Voice
|
|
928
911
|
# Validate response against endpoint and global error codes.
|
929
912
|
if _response.status_code == 400
|
930
913
|
raise ApiErrorResponseException.new(
|
931
|
-
'Something\'s not quite right...
|
932
|
-
'
|
933
|
-
|
914
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
915
|
+
' fix it before trying again.',
|
916
|
+
_response
|
917
|
+
)
|
918
|
+
elsif _response.status_code == 401
|
919
|
+
raise APIException.new(
|
920
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
921
|
+
' credentials to authenticate to the API.',
|
922
|
+
_response
|
923
|
+
)
|
924
|
+
elsif _response.status_code == 403
|
925
|
+
raise ApiErrorResponseException.new(
|
926
|
+
'User unauthorized to perform this action.',
|
927
|
+
_response
|
928
|
+
)
|
929
|
+
elsif _response.status_code == 404
|
930
|
+
raise ApiErrorResponseException.new(
|
931
|
+
'The resource specified cannot be found or does not belong to you.',
|
932
|
+
_response
|
933
|
+
)
|
934
|
+
elsif _response.status_code == 415
|
935
|
+
raise ApiErrorResponseException.new(
|
936
|
+
'We don\'t support that media type. If a request body is required,' \
|
937
|
+
' please send it to us as `application/json`.',
|
938
|
+
_response
|
939
|
+
)
|
940
|
+
elsif _response.status_code == 429
|
941
|
+
raise ApiErrorResponseException.new(
|
942
|
+
'You\'re sending requests to this endpoint too frequently. Please' \
|
943
|
+
' slow your request rate down and try again.',
|
944
|
+
_response
|
945
|
+
)
|
946
|
+
elsif _response.status_code == 500
|
947
|
+
raise ApiErrorResponseException.new(
|
948
|
+
'Something unexpected happened. Please try again.',
|
949
|
+
_response
|
950
|
+
)
|
951
|
+
end
|
952
|
+
validate_response(_response)
|
953
|
+
|
954
|
+
# Return appropriate response type.
|
955
|
+
ApiResponse.new(_response)
|
956
|
+
end
|
957
|
+
|
958
|
+
# Returns information about the conferences in the account
|
959
|
+
# @param [String] account_id Required parameter: Example:
|
960
|
+
# @param [Integer] page_size Optional parameter: Example:1000
|
961
|
+
# @param [String] page_token Optional parameter: Example:
|
962
|
+
# @param [String] name Optional parameter: Example:
|
963
|
+
# @param [String] min_created_time Optional parameter: Example:
|
964
|
+
# @param [String] max_created_time Optional parameter: Example:
|
965
|
+
# @return [List of ConferenceDetail] response from the API call
|
966
|
+
def get_conferences_by_account(account_id,
|
967
|
+
page_size: 1000,
|
968
|
+
page_token: nil,
|
969
|
+
name: nil,
|
970
|
+
min_created_time: nil,
|
971
|
+
max_created_time: nil)
|
972
|
+
# Prepare query url.
|
973
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
974
|
+
_query_builder << '/api/v2/accounts/{accountId}/conferences'
|
975
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
976
|
+
_query_builder,
|
977
|
+
'accountId' => { 'value' => account_id, 'encode' => true }
|
978
|
+
)
|
979
|
+
_query_builder = APIHelper.append_url_with_query_parameters(
|
980
|
+
_query_builder,
|
981
|
+
'pageSize' => page_size,
|
982
|
+
'pageToken' => page_token,
|
983
|
+
'name' => name,
|
984
|
+
'minCreatedTime' => min_created_time,
|
985
|
+
'maxCreatedTime' => max_created_time
|
986
|
+
)
|
987
|
+
_query_url = APIHelper.clean_url _query_builder
|
988
|
+
|
989
|
+
# Prepare headers.
|
990
|
+
_headers = {
|
991
|
+
'accept' => 'application/json'
|
992
|
+
}
|
993
|
+
|
994
|
+
# Prepare and execute HttpRequest.
|
995
|
+
_request = config.http_client.get(
|
996
|
+
_query_url,
|
997
|
+
headers: _headers
|
998
|
+
)
|
999
|
+
VoiceBasicAuth.apply(config, _request)
|
1000
|
+
_response = execute_request(_request)
|
1001
|
+
|
1002
|
+
# Validate response against endpoint and global error codes.
|
1003
|
+
if _response.status_code == 400
|
1004
|
+
raise ApiErrorResponseException.new(
|
1005
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
1006
|
+
' fix it before trying again.',
|
1007
|
+
_response
|
1008
|
+
)
|
1009
|
+
elsif _response.status_code == 401
|
1010
|
+
raise APIException.new(
|
1011
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
1012
|
+
' credentials to authenticate to the API.',
|
1013
|
+
_response
|
1014
|
+
)
|
1015
|
+
elsif _response.status_code == 403
|
1016
|
+
raise ApiErrorResponseException.new(
|
1017
|
+
'User unauthorized to perform this action.',
|
1018
|
+
_response
|
1019
|
+
)
|
1020
|
+
elsif _response.status_code == 404
|
1021
|
+
raise ApiErrorResponseException.new(
|
1022
|
+
'The resource specified cannot be found or does not belong to you.',
|
1023
|
+
_response
|
1024
|
+
)
|
1025
|
+
elsif _response.status_code == 415
|
1026
|
+
raise ApiErrorResponseException.new(
|
1027
|
+
'We don\'t support that media type. If a request body is required,' \
|
1028
|
+
' please send it to us as `application/json`.',
|
1029
|
+
_response
|
1030
|
+
)
|
1031
|
+
elsif _response.status_code == 429
|
1032
|
+
raise ApiErrorResponseException.new(
|
1033
|
+
'You\'re sending requests to this endpoint too frequently. Please' \
|
1034
|
+
' slow your request rate down and try again.',
|
1035
|
+
_response
|
1036
|
+
)
|
1037
|
+
elsif _response.status_code == 500
|
1038
|
+
raise ApiErrorResponseException.new(
|
1039
|
+
'Something unexpected happened. Please try again.',
|
1040
|
+
_response
|
1041
|
+
)
|
1042
|
+
end
|
1043
|
+
validate_response(_response)
|
1044
|
+
|
1045
|
+
# Return appropriate response type.
|
1046
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
1047
|
+
ApiResponse.new(
|
1048
|
+
_response,
|
1049
|
+
data: decoded.map { |element| ConferenceDetail.from_hash(element) }
|
1050
|
+
)
|
1051
|
+
end
|
1052
|
+
|
1053
|
+
# Returns information about the specified conference
|
1054
|
+
# @param [String] account_id Required parameter: Example:
|
1055
|
+
# @param [String] conference_id Required parameter: Example:
|
1056
|
+
# @return [ConferenceDetail] response from the API call
|
1057
|
+
def get_conference_by_id(account_id,
|
1058
|
+
conference_id)
|
1059
|
+
# Prepare query url.
|
1060
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
1061
|
+
_query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}'
|
1062
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
1063
|
+
_query_builder,
|
1064
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
1065
|
+
'conferenceId' => { 'value' => conference_id, 'encode' => true }
|
1066
|
+
)
|
1067
|
+
_query_url = APIHelper.clean_url _query_builder
|
1068
|
+
|
1069
|
+
# Prepare headers.
|
1070
|
+
_headers = {
|
1071
|
+
'accept' => 'application/json'
|
1072
|
+
}
|
1073
|
+
|
1074
|
+
# Prepare and execute HttpRequest.
|
1075
|
+
_request = config.http_client.get(
|
1076
|
+
_query_url,
|
1077
|
+
headers: _headers
|
1078
|
+
)
|
1079
|
+
VoiceBasicAuth.apply(config, _request)
|
1080
|
+
_response = execute_request(_request)
|
1081
|
+
|
1082
|
+
# Validate response against endpoint and global error codes.
|
1083
|
+
if _response.status_code == 400
|
1084
|
+
raise ApiErrorResponseException.new(
|
1085
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
1086
|
+
' fix it before trying again.',
|
1087
|
+
_response
|
1088
|
+
)
|
1089
|
+
elsif _response.status_code == 401
|
1090
|
+
raise APIException.new(
|
1091
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
1092
|
+
' credentials to authenticate to the API.',
|
1093
|
+
_response
|
1094
|
+
)
|
1095
|
+
elsif _response.status_code == 403
|
1096
|
+
raise ApiErrorResponseException.new(
|
1097
|
+
'User unauthorized to perform this action.',
|
1098
|
+
_response
|
1099
|
+
)
|
1100
|
+
elsif _response.status_code == 404
|
1101
|
+
raise ApiErrorResponseException.new(
|
1102
|
+
'The resource specified cannot be found or does not belong to you.',
|
1103
|
+
_response
|
1104
|
+
)
|
1105
|
+
elsif _response.status_code == 415
|
1106
|
+
raise ApiErrorResponseException.new(
|
1107
|
+
'We don\'t support that media type. If a request body is required,' \
|
1108
|
+
' please send it to us as `application/json`.',
|
1109
|
+
_response
|
1110
|
+
)
|
1111
|
+
elsif _response.status_code == 429
|
1112
|
+
raise ApiErrorResponseException.new(
|
1113
|
+
'You\'re sending requests to this endpoint too frequently. Please' \
|
1114
|
+
' slow your request rate down and try again.',
|
1115
|
+
_response
|
1116
|
+
)
|
1117
|
+
elsif _response.status_code == 500
|
1118
|
+
raise ApiErrorResponseException.new(
|
1119
|
+
'Something unexpected happened. Please try again.',
|
1120
|
+
_response
|
1121
|
+
)
|
1122
|
+
end
|
1123
|
+
validate_response(_response)
|
1124
|
+
|
1125
|
+
# Return appropriate response type.
|
1126
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
1127
|
+
ApiResponse.new(
|
1128
|
+
_response, data: ConferenceDetail.from_hash(decoded)
|
1129
|
+
)
|
1130
|
+
end
|
1131
|
+
|
1132
|
+
# Modify the conference state
|
1133
|
+
# @param [String] account_id Required parameter: Example:
|
1134
|
+
# @param [String] conference_id Required parameter: Example:
|
1135
|
+
# @param [CallEngineModifyConferenceRequest] body Optional parameter:
|
1136
|
+
# Example:
|
1137
|
+
# @return [void] response from the API call
|
1138
|
+
def modify_conference(account_id,
|
1139
|
+
conference_id,
|
1140
|
+
body: nil)
|
1141
|
+
# Prepare query url.
|
1142
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
1143
|
+
_query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}'
|
1144
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
1145
|
+
_query_builder,
|
1146
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
1147
|
+
'conferenceId' => { 'value' => conference_id, 'encode' => true }
|
1148
|
+
)
|
1149
|
+
_query_url = APIHelper.clean_url _query_builder
|
1150
|
+
|
1151
|
+
# Prepare headers.
|
1152
|
+
_headers = {
|
1153
|
+
'content-type' => 'application/json; charset=utf-8'
|
1154
|
+
}
|
1155
|
+
|
1156
|
+
# Prepare and execute HttpRequest.
|
1157
|
+
_request = config.http_client.post(
|
1158
|
+
_query_url,
|
1159
|
+
headers: _headers,
|
1160
|
+
parameters: body.to_json
|
1161
|
+
)
|
1162
|
+
VoiceBasicAuth.apply(config, _request)
|
1163
|
+
_response = execute_request(_request)
|
1164
|
+
|
1165
|
+
# Validate response against endpoint and global error codes.
|
1166
|
+
if _response.status_code == 400
|
1167
|
+
raise ApiErrorResponseException.new(
|
1168
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
1169
|
+
' fix it before trying again.',
|
934
1170
|
_response
|
935
1171
|
)
|
936
1172
|
elsif _response.status_code == 401
|
937
1173
|
raise APIException.new(
|
938
|
-
'Please
|
1174
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
1175
|
+
' credentials to authenticate to the API.',
|
939
1176
|
_response
|
940
1177
|
)
|
941
1178
|
elsif _response.status_code == 403
|
942
1179
|
raise ApiErrorResponseException.new(
|
943
|
-
'
|
944
|
-
' the Bandwidth Dashboard.',
|
1180
|
+
'User unauthorized to perform this action.',
|
945
1181
|
_response
|
946
1182
|
)
|
947
1183
|
elsif _response.status_code == 404
|
@@ -973,6 +1209,408 @@ module Voice
|
|
973
1209
|
ApiResponse.new(_response)
|
974
1210
|
end
|
975
1211
|
|
1212
|
+
# Updates settings for a particular conference member
|
1213
|
+
# @param [String] account_id Required parameter: Example:
|
1214
|
+
# @param [String] conference_id Required parameter: Example:
|
1215
|
+
# @param [String] call_id Required parameter: Example:
|
1216
|
+
# @param [ConferenceMemberDetail] body Optional parameter: Example:
|
1217
|
+
# @return [void] response from the API call
|
1218
|
+
def modify_conference_member(account_id,
|
1219
|
+
conference_id,
|
1220
|
+
call_id,
|
1221
|
+
body: nil)
|
1222
|
+
# Prepare query url.
|
1223
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
1224
|
+
_query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}/members/{callId}'
|
1225
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
1226
|
+
_query_builder,
|
1227
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
1228
|
+
'conferenceId' => { 'value' => conference_id, 'encode' => true },
|
1229
|
+
'callId' => { 'value' => call_id, 'encode' => true }
|
1230
|
+
)
|
1231
|
+
_query_url = APIHelper.clean_url _query_builder
|
1232
|
+
|
1233
|
+
# Prepare headers.
|
1234
|
+
_headers = {
|
1235
|
+
'content-type' => 'application/json; charset=utf-8'
|
1236
|
+
}
|
1237
|
+
|
1238
|
+
# Prepare and execute HttpRequest.
|
1239
|
+
_request = config.http_client.put(
|
1240
|
+
_query_url,
|
1241
|
+
headers: _headers,
|
1242
|
+
parameters: body.to_json
|
1243
|
+
)
|
1244
|
+
VoiceBasicAuth.apply(config, _request)
|
1245
|
+
_response = execute_request(_request)
|
1246
|
+
|
1247
|
+
# Validate response against endpoint and global error codes.
|
1248
|
+
if _response.status_code == 400
|
1249
|
+
raise ApiErrorResponseException.new(
|
1250
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
1251
|
+
' fix it before trying again.',
|
1252
|
+
_response
|
1253
|
+
)
|
1254
|
+
elsif _response.status_code == 401
|
1255
|
+
raise APIException.new(
|
1256
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
1257
|
+
' credentials to authenticate to the API.',
|
1258
|
+
_response
|
1259
|
+
)
|
1260
|
+
elsif _response.status_code == 403
|
1261
|
+
raise ApiErrorResponseException.new(
|
1262
|
+
'User unauthorized to perform this action.',
|
1263
|
+
_response
|
1264
|
+
)
|
1265
|
+
elsif _response.status_code == 404
|
1266
|
+
raise ApiErrorResponseException.new(
|
1267
|
+
'The resource specified cannot be found or does not belong to you.',
|
1268
|
+
_response
|
1269
|
+
)
|
1270
|
+
elsif _response.status_code == 415
|
1271
|
+
raise ApiErrorResponseException.new(
|
1272
|
+
'We don\'t support that media type. If a request body is required,' \
|
1273
|
+
' please send it to us as `application/json`.',
|
1274
|
+
_response
|
1275
|
+
)
|
1276
|
+
elsif _response.status_code == 429
|
1277
|
+
raise ApiErrorResponseException.new(
|
1278
|
+
'You\'re sending requests to this endpoint too frequently. Please' \
|
1279
|
+
' slow your request rate down and try again.',
|
1280
|
+
_response
|
1281
|
+
)
|
1282
|
+
elsif _response.status_code == 500
|
1283
|
+
raise ApiErrorResponseException.new(
|
1284
|
+
'Something unexpected happened. Please try again.',
|
1285
|
+
_response
|
1286
|
+
)
|
1287
|
+
end
|
1288
|
+
validate_response(_response)
|
1289
|
+
|
1290
|
+
# Return appropriate response type.
|
1291
|
+
ApiResponse.new(_response)
|
1292
|
+
end
|
1293
|
+
|
1294
|
+
# Returns information about the specified conference member
|
1295
|
+
# @param [String] account_id Required parameter: Example:
|
1296
|
+
# @param [String] conference_id Required parameter: Example:
|
1297
|
+
# @param [String] member_id Required parameter: Example:
|
1298
|
+
# @return [ConferenceMemberDetail] response from the API call
|
1299
|
+
def get_conference_member(account_id,
|
1300
|
+
conference_id,
|
1301
|
+
member_id)
|
1302
|
+
# Prepare query url.
|
1303
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
1304
|
+
_query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}/members/{memberId}'
|
1305
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
1306
|
+
_query_builder,
|
1307
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
1308
|
+
'conferenceId' => { 'value' => conference_id, 'encode' => true },
|
1309
|
+
'memberId' => { 'value' => member_id, 'encode' => true }
|
1310
|
+
)
|
1311
|
+
_query_url = APIHelper.clean_url _query_builder
|
1312
|
+
|
1313
|
+
# Prepare headers.
|
1314
|
+
_headers = {
|
1315
|
+
'accept' => 'application/json'
|
1316
|
+
}
|
1317
|
+
|
1318
|
+
# Prepare and execute HttpRequest.
|
1319
|
+
_request = config.http_client.get(
|
1320
|
+
_query_url,
|
1321
|
+
headers: _headers
|
1322
|
+
)
|
1323
|
+
VoiceBasicAuth.apply(config, _request)
|
1324
|
+
_response = execute_request(_request)
|
1325
|
+
|
1326
|
+
# Validate response against endpoint and global error codes.
|
1327
|
+
if _response.status_code == 400
|
1328
|
+
raise ApiErrorResponseException.new(
|
1329
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
1330
|
+
' fix it before trying again.',
|
1331
|
+
_response
|
1332
|
+
)
|
1333
|
+
elsif _response.status_code == 401
|
1334
|
+
raise APIException.new(
|
1335
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
1336
|
+
' credentials to authenticate to the API.',
|
1337
|
+
_response
|
1338
|
+
)
|
1339
|
+
elsif _response.status_code == 403
|
1340
|
+
raise ApiErrorResponseException.new(
|
1341
|
+
'User unauthorized to perform this action.',
|
1342
|
+
_response
|
1343
|
+
)
|
1344
|
+
elsif _response.status_code == 404
|
1345
|
+
raise ApiErrorResponseException.new(
|
1346
|
+
'The resource specified cannot be found or does not belong to you.',
|
1347
|
+
_response
|
1348
|
+
)
|
1349
|
+
elsif _response.status_code == 415
|
1350
|
+
raise ApiErrorResponseException.new(
|
1351
|
+
'We don\'t support that media type. If a request body is required,' \
|
1352
|
+
' please send it to us as `application/json`.',
|
1353
|
+
_response
|
1354
|
+
)
|
1355
|
+
elsif _response.status_code == 429
|
1356
|
+
raise ApiErrorResponseException.new(
|
1357
|
+
'You\'re sending requests to this endpoint too frequently. Please' \
|
1358
|
+
' slow your request rate down and try again.',
|
1359
|
+
_response
|
1360
|
+
)
|
1361
|
+
elsif _response.status_code == 500
|
1362
|
+
raise ApiErrorResponseException.new(
|
1363
|
+
'Something unexpected happened. Please try again.',
|
1364
|
+
_response
|
1365
|
+
)
|
1366
|
+
end
|
1367
|
+
validate_response(_response)
|
1368
|
+
|
1369
|
+
# Return appropriate response type.
|
1370
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
1371
|
+
ApiResponse.new(
|
1372
|
+
_response, data: ConferenceMemberDetail.from_hash(decoded)
|
1373
|
+
)
|
1374
|
+
end
|
1375
|
+
|
1376
|
+
# Returns a (potentially empty) list of metadata for the recordings that
|
1377
|
+
# took place during the specified conference
|
1378
|
+
# @param [String] account_id Required parameter: Example:
|
1379
|
+
# @param [String] conference_id Required parameter: Example:
|
1380
|
+
# @return [List of ConferenceRecordingMetadataResponse] response from the API call
|
1381
|
+
def get_query_metadata_for_account_and_conference(account_id,
|
1382
|
+
conference_id)
|
1383
|
+
# Prepare query url.
|
1384
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
1385
|
+
_query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}/recordings'
|
1386
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
1387
|
+
_query_builder,
|
1388
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
1389
|
+
'conferenceId' => { 'value' => conference_id, 'encode' => true }
|
1390
|
+
)
|
1391
|
+
_query_url = APIHelper.clean_url _query_builder
|
1392
|
+
|
1393
|
+
# Prepare headers.
|
1394
|
+
_headers = {
|
1395
|
+
'accept' => 'application/json'
|
1396
|
+
}
|
1397
|
+
|
1398
|
+
# Prepare and execute HttpRequest.
|
1399
|
+
_request = config.http_client.get(
|
1400
|
+
_query_url,
|
1401
|
+
headers: _headers
|
1402
|
+
)
|
1403
|
+
VoiceBasicAuth.apply(config, _request)
|
1404
|
+
_response = execute_request(_request)
|
1405
|
+
|
1406
|
+
# Validate response against endpoint and global error codes.
|
1407
|
+
if _response.status_code == 400
|
1408
|
+
raise ApiErrorResponseException.new(
|
1409
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
1410
|
+
' fix it before trying again.',
|
1411
|
+
_response
|
1412
|
+
)
|
1413
|
+
elsif _response.status_code == 401
|
1414
|
+
raise APIException.new(
|
1415
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
1416
|
+
' credentials to authenticate to the API.',
|
1417
|
+
_response
|
1418
|
+
)
|
1419
|
+
elsif _response.status_code == 403
|
1420
|
+
raise ApiErrorResponseException.new(
|
1421
|
+
'User unauthorized to perform this action.',
|
1422
|
+
_response
|
1423
|
+
)
|
1424
|
+
elsif _response.status_code == 404
|
1425
|
+
raise ApiErrorResponseException.new(
|
1426
|
+
'The resource specified cannot be found or does not belong to you.',
|
1427
|
+
_response
|
1428
|
+
)
|
1429
|
+
elsif _response.status_code == 415
|
1430
|
+
raise ApiErrorResponseException.new(
|
1431
|
+
'We don\'t support that media type. If a request body is required,' \
|
1432
|
+
' please send it to us as `application/json`.',
|
1433
|
+
_response
|
1434
|
+
)
|
1435
|
+
elsif _response.status_code == 429
|
1436
|
+
raise ApiErrorResponseException.new(
|
1437
|
+
'You\'re sending requests to this endpoint too frequently. Please' \
|
1438
|
+
' slow your request rate down and try again.',
|
1439
|
+
_response
|
1440
|
+
)
|
1441
|
+
elsif _response.status_code == 500
|
1442
|
+
raise ApiErrorResponseException.new(
|
1443
|
+
'Something unexpected happened. Please try again.',
|
1444
|
+
_response
|
1445
|
+
)
|
1446
|
+
end
|
1447
|
+
validate_response(_response)
|
1448
|
+
|
1449
|
+
# Return appropriate response type.
|
1450
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
1451
|
+
ApiResponse.new(
|
1452
|
+
_response,
|
1453
|
+
data: decoded.map { |element| ConferenceRecordingMetadataResponse.from_hash(element) }
|
1454
|
+
)
|
1455
|
+
end
|
1456
|
+
|
1457
|
+
# Returns metadata for the specified recording
|
1458
|
+
# @param [String] account_id Required parameter: Example:
|
1459
|
+
# @param [String] conference_id Required parameter: Example:
|
1460
|
+
# @param [String] recording_id Required parameter: Example:
|
1461
|
+
# @return [RecordingMetadataResponse] response from the API call
|
1462
|
+
def get_metadata_for_conference_recording(account_id,
|
1463
|
+
conference_id,
|
1464
|
+
recording_id)
|
1465
|
+
# Prepare query url.
|
1466
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
1467
|
+
_query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}/recordings/{recordingId}'
|
1468
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
1469
|
+
_query_builder,
|
1470
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
1471
|
+
'conferenceId' => { 'value' => conference_id, 'encode' => true },
|
1472
|
+
'recordingId' => { 'value' => recording_id, 'encode' => true }
|
1473
|
+
)
|
1474
|
+
_query_url = APIHelper.clean_url _query_builder
|
1475
|
+
|
1476
|
+
# Prepare headers.
|
1477
|
+
_headers = {
|
1478
|
+
'accept' => 'application/json'
|
1479
|
+
}
|
1480
|
+
|
1481
|
+
# Prepare and execute HttpRequest.
|
1482
|
+
_request = config.http_client.get(
|
1483
|
+
_query_url,
|
1484
|
+
headers: _headers
|
1485
|
+
)
|
1486
|
+
VoiceBasicAuth.apply(config, _request)
|
1487
|
+
_response = execute_request(_request)
|
1488
|
+
|
1489
|
+
# Validate response against endpoint and global error codes.
|
1490
|
+
if _response.status_code == 400
|
1491
|
+
raise ApiErrorResponseException.new(
|
1492
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
1493
|
+
' fix it before trying again.',
|
1494
|
+
_response
|
1495
|
+
)
|
1496
|
+
elsif _response.status_code == 401
|
1497
|
+
raise APIException.new(
|
1498
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
1499
|
+
' credentials to authenticate to the API.',
|
1500
|
+
_response
|
1501
|
+
)
|
1502
|
+
elsif _response.status_code == 403
|
1503
|
+
raise ApiErrorResponseException.new(
|
1504
|
+
'User unauthorized to perform this action.',
|
1505
|
+
_response
|
1506
|
+
)
|
1507
|
+
elsif _response.status_code == 404
|
1508
|
+
raise ApiErrorResponseException.new(
|
1509
|
+
'The resource specified cannot be found or does not belong to you.',
|
1510
|
+
_response
|
1511
|
+
)
|
1512
|
+
elsif _response.status_code == 415
|
1513
|
+
raise ApiErrorResponseException.new(
|
1514
|
+
'We don\'t support that media type. If a request body is required,' \
|
1515
|
+
' please send it to us as `application/json`.',
|
1516
|
+
_response
|
1517
|
+
)
|
1518
|
+
elsif _response.status_code == 429
|
1519
|
+
raise ApiErrorResponseException.new(
|
1520
|
+
'You\'re sending requests to this endpoint too frequently. Please' \
|
1521
|
+
' slow your request rate down and try again.',
|
1522
|
+
_response
|
1523
|
+
)
|
1524
|
+
elsif _response.status_code == 500
|
1525
|
+
raise ApiErrorResponseException.new(
|
1526
|
+
'Something unexpected happened. Please try again.',
|
1527
|
+
_response
|
1528
|
+
)
|
1529
|
+
end
|
1530
|
+
validate_response(_response)
|
1531
|
+
|
1532
|
+
# Return appropriate response type.
|
1533
|
+
decoded = APIHelper.json_deserialize(_response.raw_body)
|
1534
|
+
ApiResponse.new(
|
1535
|
+
_response, data: RecordingMetadataResponse.from_hash(decoded)
|
1536
|
+
)
|
1537
|
+
end
|
1538
|
+
|
1539
|
+
# Downloads the specified recording
|
1540
|
+
# @param [String] account_id Required parameter: Example:
|
1541
|
+
# @param [String] conference_id Required parameter: Example:
|
1542
|
+
# @param [String] recording_id Required parameter: Example:
|
1543
|
+
# @return [Binary] response from the API call
|
1544
|
+
def get_stream_conference_recording_media(account_id,
|
1545
|
+
conference_id,
|
1546
|
+
recording_id)
|
1547
|
+
# Prepare query url.
|
1548
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
1549
|
+
_query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}/recordings/{recordingId}/media'
|
1550
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
1551
|
+
_query_builder,
|
1552
|
+
'accountId' => { 'value' => account_id, 'encode' => true },
|
1553
|
+
'conferenceId' => { 'value' => conference_id, 'encode' => true },
|
1554
|
+
'recordingId' => { 'value' => recording_id, 'encode' => true }
|
1555
|
+
)
|
1556
|
+
_query_url = APIHelper.clean_url _query_builder
|
1557
|
+
|
1558
|
+
# Prepare and execute HttpRequest.
|
1559
|
+
_request = config.http_client.get(
|
1560
|
+
_query_url
|
1561
|
+
)
|
1562
|
+
VoiceBasicAuth.apply(config, _request)
|
1563
|
+
_response = execute_request(_request, binary: true)
|
1564
|
+
|
1565
|
+
# Validate response against endpoint and global error codes.
|
1566
|
+
if _response.status_code == 400
|
1567
|
+
raise ApiErrorResponseException.new(
|
1568
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
1569
|
+
' fix it before trying again.',
|
1570
|
+
_response
|
1571
|
+
)
|
1572
|
+
elsif _response.status_code == 401
|
1573
|
+
raise APIException.new(
|
1574
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
1575
|
+
' credentials to authenticate to the API.',
|
1576
|
+
_response
|
1577
|
+
)
|
1578
|
+
elsif _response.status_code == 403
|
1579
|
+
raise ApiErrorResponseException.new(
|
1580
|
+
'User unauthorized to perform this action.',
|
1581
|
+
_response
|
1582
|
+
)
|
1583
|
+
elsif _response.status_code == 404
|
1584
|
+
raise ApiErrorResponseException.new(
|
1585
|
+
'The resource specified cannot be found or does not belong to you.',
|
1586
|
+
_response
|
1587
|
+
)
|
1588
|
+
elsif _response.status_code == 415
|
1589
|
+
raise ApiErrorResponseException.new(
|
1590
|
+
'We don\'t support that media type. If a request body is required,' \
|
1591
|
+
' please send it to us as `application/json`.',
|
1592
|
+
_response
|
1593
|
+
)
|
1594
|
+
elsif _response.status_code == 429
|
1595
|
+
raise ApiErrorResponseException.new(
|
1596
|
+
'You\'re sending requests to this endpoint too frequently. Please' \
|
1597
|
+
' slow your request rate down and try again.',
|
1598
|
+
_response
|
1599
|
+
)
|
1600
|
+
elsif _response.status_code == 500
|
1601
|
+
raise ApiErrorResponseException.new(
|
1602
|
+
'Something unexpected happened. Please try again.',
|
1603
|
+
_response
|
1604
|
+
)
|
1605
|
+
end
|
1606
|
+
validate_response(_response)
|
1607
|
+
|
1608
|
+
# Return appropriate response type.
|
1609
|
+
ApiResponse.new(
|
1610
|
+
_response, data: _response.raw_body
|
1611
|
+
)
|
1612
|
+
end
|
1613
|
+
|
976
1614
|
# Returns a list of metadata for the recordings associated with the
|
977
1615
|
# specified account. The list can be filtered by the optional from, to,
|
978
1616
|
# minStartTime, and maxStartTime arguments. The list is capped at 1000
|
@@ -993,7 +1631,7 @@ module Voice
|
|
993
1631
|
_query_builder << '/api/v2/accounts/{accountId}/recordings'
|
994
1632
|
_query_builder = APIHelper.append_url_with_template_parameters(
|
995
1633
|
_query_builder,
|
996
|
-
'accountId' => account_id
|
1634
|
+
'accountId' => { 'value' => account_id, 'encode' => true }
|
997
1635
|
)
|
998
1636
|
_query_builder = APIHelper.append_url_with_query_parameters(
|
999
1637
|
_query_builder,
|
@@ -1020,20 +1658,19 @@ module Voice
|
|
1020
1658
|
# Validate response against endpoint and global error codes.
|
1021
1659
|
if _response.status_code == 400
|
1022
1660
|
raise ApiErrorResponseException.new(
|
1023
|
-
'Something\'s not quite right...
|
1024
|
-
'
|
1025
|
-
' before trying again.',
|
1661
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
1662
|
+
' fix it before trying again.',
|
1026
1663
|
_response
|
1027
1664
|
)
|
1028
1665
|
elsif _response.status_code == 401
|
1029
1666
|
raise APIException.new(
|
1030
|
-
'Please
|
1667
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
1668
|
+
' credentials to authenticate to the API.',
|
1031
1669
|
_response
|
1032
1670
|
)
|
1033
1671
|
elsif _response.status_code == 403
|
1034
1672
|
raise ApiErrorResponseException.new(
|
1035
|
-
'
|
1036
|
-
' the Bandwidth Dashboard.',
|
1673
|
+
'User unauthorized to perform this action.',
|
1037
1674
|
_response
|
1038
1675
|
)
|
1039
1676
|
elsif _response.status_code == 404
|