bandwidth-sdk 9.3.0 → 9.4.0
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18a1aa70f505740cb401da02868903300dd1dea4bad46e34334387a24b5ed391
|
4
|
+
data.tar.gz: c6d3de5ab878190e7a7b9fe29fd503b240aa3434c3fd54b72bce236d1ddfafd9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97b472c59acf4f4fe5552a5a7c561d0b36fdbdbeb7c240fc0d3c4dfcf3eee3a46d0ca5316325f1245086ab6efc91101a80a9826d49078ccee6d2f7563db6171c
|
7
|
+
data.tar.gz: 526b08eeab6f9335208edd49b2c3ea7b01193b4077254374d5cf496d20048231ff990029a92c2e4c33013657ef5a5cad7705296073910a5b6406862d7d06ee9b
|
@@ -3,14 +3,11 @@ Dir[File.dirname(__FILE__) + '/verbs/*'].each {|file|
|
|
3
3
|
require_relative file
|
4
4
|
}
|
5
5
|
|
6
|
-
SSML_REGEX = /<([a-zA-Z\/\/].*?)>/
|
7
|
-
SPEAK_SENTENCE_REGEX = /<SpeakSentence.*?>.*?<\/SpeakSentence>/
|
8
|
-
|
9
6
|
module Bandwidth
|
10
7
|
module Voice
|
11
|
-
class
|
8
|
+
class Bxml
|
12
9
|
# Initializer
|
13
|
-
# @param verbs [Array] optional list of verbs to include
|
10
|
+
# @param verbs [Array] optional list of verbs to include in the bxml tag
|
14
11
|
def initialize(verbs = nil)
|
15
12
|
@verbs = verbs || []
|
16
13
|
end
|
@@ -19,7 +16,7 @@ module Bandwidth
|
|
19
16
|
def to_bxml()
|
20
17
|
xml = Builder::XmlMarkup.new()
|
21
18
|
xml.instruct!(:xml, :version=>'1.0', :encoding=>'UTF-8')
|
22
|
-
xml.
|
19
|
+
xml.Bxml do
|
23
20
|
@verbs.each {|verb| verb.to_bxml(xml)}
|
24
21
|
end
|
25
22
|
xml.target!().gsub(SPEAK_SENTENCE_REGEX){|s|s.gsub(SSML_REGEX, '<\1>')}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'builder'
|
2
|
+
Dir[File.dirname(__FILE__) + '/verbs/*'].each {|file|
|
3
|
+
require_relative file
|
4
|
+
}
|
5
|
+
|
6
|
+
SSML_REGEX = /<([a-zA-Z\/\/].*?)>/
|
7
|
+
SPEAK_SENTENCE_REGEX = /<SpeakSentence.*?>.*?<\/SpeakSentence>/
|
8
|
+
|
9
|
+
module Bandwidth
|
10
|
+
module Voice
|
11
|
+
class Response
|
12
|
+
# Initializer
|
13
|
+
# @param verbs [Array] optional list of verbs to include into response
|
14
|
+
def initialize(verbs = nil)
|
15
|
+
@verbs = verbs || []
|
16
|
+
end
|
17
|
+
|
18
|
+
# Return BXML representaion of this response
|
19
|
+
def to_bxml()
|
20
|
+
xml = Builder::XmlMarkup.new()
|
21
|
+
xml.instruct!(:xml, :version=>'1.0', :encoding=>'UTF-8')
|
22
|
+
xml.Response do
|
23
|
+
@verbs.each {|verb| verb.to_bxml(xml)}
|
24
|
+
end
|
25
|
+
xml.target!().gsub(SPEAK_SENTENCE_REGEX){|s|s.gsub(SSML_REGEX, '<\1>')}
|
26
|
+
end
|
27
|
+
|
28
|
+
# Add one or more verbs to this response
|
29
|
+
def push(*verbs)
|
30
|
+
@verbs.push(*verbs)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Add a verb to this response
|
34
|
+
def <<(verb)
|
35
|
+
@verbs << verb
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -252,6 +252,87 @@ module Voice
|
|
252
252
|
ApiResponse.new(_response)
|
253
253
|
end
|
254
254
|
|
255
|
+
# Makes a PUT request to /api/v2/accounts/{accountId}/calls/{callId}/bxml
|
256
|
+
# @param [String] account_id Required parameter: Example:
|
257
|
+
# @param [String] call_id Required parameter: Example:
|
258
|
+
# @param [String] body Required parameter: Example:
|
259
|
+
# @return [void] response from the API call
|
260
|
+
def modify_call_bxml(account_id,
|
261
|
+
call_id,
|
262
|
+
body
|
263
|
+
)
|
264
|
+
# Prepare query url.
|
265
|
+
_query_builder = config.get_base_uri(Server::VOICEDEFAULT)
|
266
|
+
_query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/bxml'
|
267
|
+
_query_builder = APIHelper.append_url_with_template_parameters(
|
268
|
+
_query_builder,
|
269
|
+
'accountId' => { 'value' => account_id, 'encode' => false },
|
270
|
+
'callId' => { 'value' => call_id, 'encode' => false }
|
271
|
+
)
|
272
|
+
_query_url = APIHelper.clean_url _query_builder
|
273
|
+
|
274
|
+
# Prepare headers.
|
275
|
+
_headers = {
|
276
|
+
'content-type' => 'application/xml; charset=utf-8'
|
277
|
+
}
|
278
|
+
|
279
|
+
# Prepare and execute HttpRequest.
|
280
|
+
_request = config.http_client.put(
|
281
|
+
_query_url,
|
282
|
+
headers: _headers,
|
283
|
+
parameters: body.to_json
|
284
|
+
)
|
285
|
+
VoiceBasicAuth.apply(config, _request)
|
286
|
+
_response = execute_request(_request)
|
287
|
+
|
288
|
+
# Validate response against endpoint and global error codes.
|
289
|
+
case _response.status_code
|
290
|
+
when 400
|
291
|
+
raise ApiErrorException.new(
|
292
|
+
'Something\'s not quite right... Your request is invalid. Please' \
|
293
|
+
' fix it before trying again.',
|
294
|
+
_response
|
295
|
+
)
|
296
|
+
when 401
|
297
|
+
raise APIException.new(
|
298
|
+
'Your credentials are invalid. Please use your Bandwidth dashboard' \
|
299
|
+
' credentials to authenticate to the API.',
|
300
|
+
_response
|
301
|
+
)
|
302
|
+
when 403
|
303
|
+
raise ApiErrorException.new(
|
304
|
+
'User unauthorized to perform this action.',
|
305
|
+
_response
|
306
|
+
)
|
307
|
+
when 404
|
308
|
+
raise ApiErrorException.new(
|
309
|
+
'The resource specified cannot be found or does not belong to you.',
|
310
|
+
_response
|
311
|
+
)
|
312
|
+
when 415
|
313
|
+
raise ApiErrorException.new(
|
314
|
+
'We don\'t support that media type. If a request body is required,' \
|
315
|
+
' please send it to us as `application/xml`.',
|
316
|
+
_response
|
317
|
+
)
|
318
|
+
when 429
|
319
|
+
raise ApiErrorException.new(
|
320
|
+
'You\'re sending requests to this endpoint too frequently. Please' \
|
321
|
+
' slow your request rate down and try again.',
|
322
|
+
_response
|
323
|
+
)
|
324
|
+
when 500
|
325
|
+
raise ApiErrorException.new(
|
326
|
+
'Something unexpected happened. Please try again.',
|
327
|
+
_response
|
328
|
+
)
|
329
|
+
end
|
330
|
+
validate_response(_response)
|
331
|
+
|
332
|
+
# Return appropriate response type.
|
333
|
+
ApiResponse.new(_response)
|
334
|
+
end
|
335
|
+
|
255
336
|
# Pauses or resumes a recording.
|
256
337
|
# @param [String] account_id Required parameter: Example:
|
257
338
|
# @param [String] call_id Required parameter: Example:
|
data/lib/bandwidth.rb
CHANGED
@@ -47,6 +47,7 @@ require_relative 'bandwidth/http/auth/web_rtc_basic_auth'
|
|
47
47
|
require_relative 'bandwidth/http/auth/web_rtc_basic_auth.rb'
|
48
48
|
|
49
49
|
# External Files
|
50
|
+
require_relative 'bandwidth/voice_lib/bxml/response.rb'
|
50
51
|
require_relative 'bandwidth/voice_lib/bxml/bxml.rb'
|
51
52
|
require_relative 'bandwidth/voice_lib/bxml/verbs/bridge.rb'
|
52
53
|
require_relative 'bandwidth/voice_lib/bxml/verbs/conference.rb'
|
@@ -262,6 +262,34 @@ class IntegrationTest < Test::Unit::TestCase
|
|
262
262
|
assert_equal(expected, actual)
|
263
263
|
end
|
264
264
|
|
265
|
+
def test_empty_bxml_verb
|
266
|
+
bxml = Bandwidth::Voice::Bxml.new()
|
267
|
+
|
268
|
+
expected = '<?xml version="1.0" encoding="UTF-8"?><Bxml></Bxml>'
|
269
|
+
actual = bxml.to_bxml()
|
270
|
+
assert_equal(expected, actual)
|
271
|
+
end
|
272
|
+
|
273
|
+
def test_bxml_speak_sentence_pause
|
274
|
+
bxml = Bandwidth::Voice::Bxml.new()
|
275
|
+
|
276
|
+
speak_sentence = Bandwidth::Voice::SpeakSentence.new({
|
277
|
+
:sentence => "new modify call bxml is pog",
|
278
|
+
:voice => "Julie"
|
279
|
+
})
|
280
|
+
|
281
|
+
pause = Bandwidth::Voice::Pause.new({
|
282
|
+
:duration => 6
|
283
|
+
})
|
284
|
+
|
285
|
+
bxml.push(speak_sentence)
|
286
|
+
bxml.push(pause)
|
287
|
+
|
288
|
+
expected = '<?xml version="1.0" encoding="UTF-8"?><Bxml><SpeakSentence voice="Julie">new modify call bxml is pog</SpeakSentence><Pause duration="6"/></Bxml>'
|
289
|
+
actual = bxml.to_bxml()
|
290
|
+
assert_equal(expected, actual)
|
291
|
+
end
|
292
|
+
|
265
293
|
def test_hangup
|
266
294
|
hangup = Bandwidth::Voice::Hangup.new()
|
267
295
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bandwidth-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 9.
|
4
|
+
version: 9.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bandwidth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logging
|
@@ -206,6 +206,7 @@ files:
|
|
206
206
|
- lib/bandwidth/utilities/date_time_helper.rb
|
207
207
|
- lib/bandwidth/utilities/file_wrapper.rb
|
208
208
|
- lib/bandwidth/voice_lib/bxml/bxml.rb
|
209
|
+
- lib/bandwidth/voice_lib/bxml/response.rb
|
209
210
|
- lib/bandwidth/voice_lib/bxml/verbs/bridge.rb
|
210
211
|
- lib/bandwidth/voice_lib/bxml/verbs/conference.rb
|
211
212
|
- lib/bandwidth/voice_lib/bxml/verbs/forward.rb
|