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: 714d17e79fcabfbf641b2953be3d87f4661957c4ce6452a9add5fba71f7e06fc
4
- data.tar.gz: 910e102f0b21b52e4ab8cacb474595a95960f8d5db93689c41261d775175bc86
3
+ metadata.gz: 18a1aa70f505740cb401da02868903300dd1dea4bad46e34334387a24b5ed391
4
+ data.tar.gz: c6d3de5ab878190e7a7b9fe29fd503b240aa3434c3fd54b72bce236d1ddfafd9
5
5
  SHA512:
6
- metadata.gz: 4bd7b9cb0599cbe42a6f414b2ba26b5b3aa3267f8b27be6748e6f50e0f53e0eb382860abcbedf3330e0aaf6c5c4994ee08986c5df2b898a021c84e8d7f7407a6
7
- data.tar.gz: 875c6add47513bdd45c8db63c614f5ea58c030370a1c5265840eb0a8a1c652487ff0d0752d853fbdf2a2f3fb644b6afa87e4ecc98f8b70a168aca8f9321a2799
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 Response
8
+ class Bxml
12
9
  # Initializer
13
- # @param verbs [Array] optional list of verbs to include into response
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.Response do
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 = /&lt;([a-zA-Z\/\/].*?)&gt;/
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.3.0
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-04-26 00:00:00.000000000 Z
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