bandwidth-sdk 7.0.0 → 9.1.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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -0
  3. data/lib/bandwidth/api_helper.rb +19 -17
  4. data/lib/bandwidth/configuration.rb +7 -19
  5. data/lib/bandwidth/http/faraday_client.rb +1 -1
  6. data/lib/bandwidth/messaging_lib/messaging/controllers/api_controller.rb +53 -42
  7. data/lib/bandwidth/messaging_lib/messaging/controllers/base_controller.rb +3 -5
  8. data/lib/bandwidth/messaging_lib/messaging/exceptions/messaging_exception.rb +5 -2
  9. data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_callback_message.rb +31 -11
  10. data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_message.rb +54 -25
  11. data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_message_item.rb +65 -32
  12. data/lib/bandwidth/messaging_lib/messaging/models/bandwidth_messages_list.rb +23 -4
  13. data/lib/bandwidth/messaging_lib/messaging/models/deferred_result.rb +20 -4
  14. data/lib/bandwidth/messaging_lib/messaging/models/media.rb +23 -6
  15. data/lib/bandwidth/messaging_lib/messaging/models/message_request.rb +32 -14
  16. data/lib/bandwidth/messaging_lib/messaging/models/page_info.rb +28 -8
  17. data/lib/bandwidth/messaging_lib/messaging/models/tag.rb +20 -4
  18. data/lib/bandwidth/models/base_model.rb +11 -0
  19. data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth/controllers/base_controller.rb +3 -5
  20. data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth/controllers/mfa_controller.rb +21 -16
  21. data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth/exceptions/error_with_request_exception.rb +5 -2
  22. data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth/exceptions/forbidden_request_exception.rb +4 -1
  23. data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth/exceptions/unauthorized_request_exception.rb +4 -1
  24. data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth/models/two_factor_code_request_schema.rb +27 -12
  25. data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth/models/two_factor_messaging_response.rb +17 -2
  26. data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth/models/two_factor_verify_code_response.rb +17 -2
  27. data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth/models/two_factor_verify_request_schema.rb +29 -10
  28. data/lib/bandwidth/multi_factor_auth_lib/multi_factor_auth/models/two_factor_voice_response.rb +17 -2
  29. data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/controllers/api_controller.rb +212 -210
  30. data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/controllers/base_controller.rb +3 -5
  31. data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/exceptions/accounts_tnlookup400_error_exception.rb +4 -1
  32. data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/models/order_request.rb +17 -2
  33. data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/models/order_response.rb +20 -4
  34. data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/models/order_status.rb +28 -7
  35. data/lib/bandwidth/phone_number_lookup_lib/phone_number_lookup/models/result.rb +43 -18
  36. data/lib/bandwidth/utilities/date_time_helper.rb +2 -2
  37. data/lib/bandwidth/utilities/file_wrapper.rb +1 -2
  38. data/lib/bandwidth/voice_lib/bxml/verbs/ring.rb +2 -1
  39. data/lib/bandwidth/voice_lib/voice/controllers/api_controller.rb +171 -150
  40. data/lib/bandwidth/voice_lib/voice/controllers/base_controller.rb +3 -5
  41. data/lib/bandwidth/voice_lib/voice/exceptions/api_error_exception.rb +6 -3
  42. data/lib/bandwidth/voice_lib/voice/models/call_callback.rb +343 -0
  43. data/lib/bandwidth/voice_lib/voice/models/call_recording_metadata.rb +78 -37
  44. data/lib/bandwidth/voice_lib/voice/models/call_state.rb +94 -42
  45. data/lib/bandwidth/voice_lib/voice/models/conference_callback.rb +211 -0
  46. data/lib/bandwidth/voice_lib/voice/models/conference_member_state.rb +35 -12
  47. data/lib/bandwidth/voice_lib/voice/models/conference_recording_metadata.rb +55 -24
  48. data/lib/bandwidth/voice_lib/voice/models/conference_state.rb +54 -17
  49. data/lib/bandwidth/voice_lib/voice/models/create_call_request.rb +173 -96
  50. data/lib/bandwidth/voice_lib/voice/models/create_call_response.rb +85 -41
  51. data/lib/bandwidth/voice_lib/voice/models/diversion.rb +80 -0
  52. data/lib/bandwidth/voice_lib/voice/models/fallback_method_enum.rb +17 -0
  53. data/lib/bandwidth/voice_lib/voice/models/machine_detection_configuration.rb +218 -0
  54. data/lib/bandwidth/voice_lib/voice/models/mode_enum.rb +20 -0
  55. data/lib/bandwidth/voice_lib/voice/models/modify_call_recording_request.rb +15 -2
  56. data/lib/bandwidth/voice_lib/voice/models/modify_call_request.rb +59 -19
  57. data/lib/bandwidth/voice_lib/voice/models/modify_conference_request.rb +55 -18
  58. data/lib/bandwidth/voice_lib/voice/models/transcribe_recording_request.rb +40 -12
  59. data/lib/bandwidth/voice_lib/voice/models/transcript.rb +20 -4
  60. data/lib/bandwidth/voice_lib/voice/models/transcription.rb +80 -0
  61. data/lib/bandwidth/voice_lib/voice/models/transcription_metadata.rb +26 -8
  62. data/lib/bandwidth/voice_lib/voice/models/transcription_response.rb +18 -1
  63. data/lib/bandwidth/voice_lib/voice.rb +7 -1
  64. data/lib/bandwidth/web_rtc_lib/utils/web_rtc_transfer.rb +7 -2
  65. data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/api_controller.rb +61 -50
  66. data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/base_controller.rb +3 -5
  67. data/lib/bandwidth/web_rtc_lib/web_rtc/exceptions/error_exception.rb +5 -2
  68. data/lib/bandwidth/web_rtc_lib/web_rtc/models/accounts_participants_response.rb +20 -5
  69. data/lib/bandwidth/web_rtc_lib/web_rtc/models/participant.rb +37 -14
  70. data/lib/bandwidth/web_rtc_lib/web_rtc/models/participant_subscription.rb +15 -2
  71. data/lib/bandwidth/web_rtc_lib/web_rtc/models/session.rb +20 -4
  72. data/lib/bandwidth/web_rtc_lib/web_rtc/models/subscriptions.rb +20 -3
  73. data/lib/bandwidth.rb +19 -18
  74. data/test/integration/test_integration.rb +95 -58
  75. metadata +10 -3
@@ -6,6 +6,9 @@
6
6
  module Bandwidth
7
7
  # ParticipantSubscription Model.
8
8
  class ParticipantSubscription < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
9
12
  # Participant the subscriber should be subscribed to
10
13
  # @return [String]
11
14
  attr_accessor :participant_id
@@ -17,8 +20,18 @@ module Bandwidth
17
20
  @_hash
18
21
  end
19
22
 
23
+ # An array for optional fields
24
+ def optionals
25
+ []
26
+ end
27
+
28
+ # An array for nullable fields
29
+ def nullables
30
+ []
31
+ end
32
+
20
33
  def initialize(participant_id = nil)
21
- @participant_id = participant_id
34
+ @participant_id = participant_id unless participant_id == SKIP
22
35
  end
23
36
 
24
37
  # Creates an instance of the object from a hash.
@@ -26,7 +39,7 @@ module Bandwidth
26
39
  return nil unless hash
27
40
 
28
41
  # Extract variables from the hash.
29
- participant_id = hash['participantId']
42
+ participant_id = hash.key?('participantId') ? hash['participantId'] : SKIP
30
43
 
31
44
  # Create object from extracted values.
32
45
  ParticipantSubscription.new(participant_id)
@@ -6,6 +6,9 @@
6
6
  module Bandwidth
7
7
  # A session object
8
8
  class Session < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
9
12
  # Unique id of the session
10
13
  # @return [String]
11
14
  attr_accessor :id
@@ -22,10 +25,23 @@ module Bandwidth
22
25
  @_hash
23
26
  end
24
27
 
28
+ # An array for optional fields
29
+ def optionals
30
+ %w[
31
+ id
32
+ tag
33
+ ]
34
+ end
35
+
36
+ # An array for nullable fields
37
+ def nullables
38
+ []
39
+ end
40
+
25
41
  def initialize(id = nil,
26
42
  tag = nil)
27
- @id = id
28
- @tag = tag
43
+ @id = id unless id == SKIP
44
+ @tag = tag unless tag == SKIP
29
45
  end
30
46
 
31
47
  # Creates an instance of the object from a hash.
@@ -33,8 +49,8 @@ module Bandwidth
33
49
  return nil unless hash
34
50
 
35
51
  # Extract variables from the hash.
36
- id = hash['id']
37
- tag = hash['tag']
52
+ id = hash.key?('id') ? hash['id'] : SKIP
53
+ tag = hash.key?('tag') ? hash['tag'] : SKIP
38
54
 
39
55
  # Create object from extracted values.
40
56
  Session.new(id,
@@ -6,6 +6,9 @@
6
6
  module Bandwidth
7
7
  # Subscriptions Model.
8
8
  class Subscriptions < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
9
12
  # Session the subscriptions are associated with
10
13
  # If this is the only field, the subscriber will be subscribed to all
11
14
  # participants in the session (including any participants that are later
@@ -25,10 +28,22 @@ module Bandwidth
25
28
  @_hash
26
29
  end
27
30
 
31
+ # An array for optional fields
32
+ def optionals
33
+ %w[
34
+ participants
35
+ ]
36
+ end
37
+
38
+ # An array for nullable fields
39
+ def nullables
40
+ []
41
+ end
42
+
28
43
  def initialize(session_id = nil,
29
44
  participants = nil)
30
- @session_id = session_id
31
- @participants = participants
45
+ @session_id = session_id unless session_id == SKIP
46
+ @participants = participants unless participants == SKIP
32
47
  end
33
48
 
34
49
  # Creates an instance of the object from a hash.
@@ -36,7 +51,7 @@ module Bandwidth
36
51
  return nil unless hash
37
52
 
38
53
  # Extract variables from the hash.
39
- session_id = hash['sessionId']
54
+ session_id = hash.key?('sessionId') ? hash['sessionId'] : SKIP
40
55
  # Parameter is an array, so we need to iterate through it
41
56
  participants = nil
42
57
  unless hash['participants'].nil?
@@ -46,6 +61,8 @@ module Bandwidth
46
61
  end
47
62
  end
48
63
 
64
+ participants = SKIP unless hash.key?('participants')
65
+
49
66
  # Create object from extracted values.
50
67
  Subscriptions.new(session_id,
51
68
  participants)
data/lib/bandwidth.rb CHANGED
@@ -9,40 +9,41 @@ require 'faraday'
9
9
  require 'certifi'
10
10
  require 'logging'
11
11
 
12
- require_relative 'bandwidth/api_helper.rb'
13
- require_relative 'bandwidth/client.rb'
12
+ require_relative 'bandwidth/api_helper'
13
+ require_relative 'bandwidth/client'
14
14
 
15
15
  # Utilities
16
- require_relative 'bandwidth/utilities/file_wrapper.rb'
17
- require_relative 'bandwidth/utilities/date_time_helper.rb'
16
+ require_relative 'bandwidth/utilities/file_wrapper'
17
+ require_relative 'bandwidth/utilities/date_time_helper'
18
18
 
19
19
  # Http
20
- require_relative 'bandwidth/http/api_response.rb'
21
- require_relative 'bandwidth/http/http_call_back.rb'
22
- require_relative 'bandwidth/http/http_client.rb'
23
- require_relative 'bandwidth/http/faraday_client.rb'
24
- require_relative 'bandwidth/http/http_method_enum.rb'
25
- require_relative 'bandwidth/http/http_request.rb'
26
- require_relative 'bandwidth/http/http_response.rb'
20
+ require_relative 'bandwidth/http/api_response'
21
+ require_relative 'bandwidth/http/http_call_back'
22
+ require_relative 'bandwidth/http/http_client'
23
+ require_relative 'bandwidth/http/faraday_client'
24
+ require_relative 'bandwidth/http/http_method_enum'
25
+ require_relative 'bandwidth/http/http_request'
26
+ require_relative 'bandwidth/http/http_response'
27
27
 
28
28
  # Models
29
- require_relative 'bandwidth/models/base_model.rb'
29
+ require_relative 'bandwidth/models/base_model'
30
30
 
31
31
  # Exceptions
32
- require_relative 'bandwidth/exceptions/api_exception.rb'
32
+ require_relative 'bandwidth/exceptions/api_exception'
33
33
 
34
- require_relative 'bandwidth/configuration.rb'
34
+ require_relative 'bandwidth/configuration'
35
35
 
36
36
  # Namespaces
37
37
  require_relative 'bandwidth/messaging_lib/messaging'
38
- require_relative 'bandwidth/http/auth/messaging_basic_auth.rb'
38
+ require_relative 'bandwidth/http/auth/messaging_basic_auth'
39
39
  require_relative 'bandwidth/multi_factor_auth_lib/multi_factor_auth'
40
- require_relative 'bandwidth/http/auth/multi_factor_auth_basic_auth.rb'
40
+ require_relative 'bandwidth/http/auth/multi_factor_auth_basic_auth'
41
41
  require_relative 'bandwidth/phone_number_lookup_lib/phone_number_lookup'
42
- require_relative 'bandwidth/http/auth/phone_number_lookup_basic_auth.rb'
42
+ require_relative 'bandwidth/http/auth/phone_number_lookup_basic_auth'
43
43
  require_relative 'bandwidth/voice_lib/voice'
44
- require_relative 'bandwidth/http/auth/voice_basic_auth.rb'
44
+ require_relative 'bandwidth/http/auth/voice_basic_auth'
45
45
  require_relative 'bandwidth/web_rtc_lib/web_rtc'
46
+ require_relative 'bandwidth/http/auth/web_rtc_basic_auth'
46
47
  require_relative 'bandwidth/http/auth/web_rtc_basic_auth.rb'
47
48
 
48
49
  # External Files
@@ -3,25 +3,24 @@
3
3
  # A simple integration test against Bandwidth's APIs
4
4
 
5
5
  require 'test/unit'
6
+ require 'securerandom'
6
7
  require_relative '../../lib/bandwidth.rb'
7
8
 
8
9
  include Bandwidth
9
10
  include Bandwidth::Voice
10
11
  include Bandwidth::Messaging
11
12
  include Bandwidth::MultiFactorAuth
13
+ include Bandwidth::WebRtc
12
14
 
13
15
  begin
14
- USERNAME = ENV.fetch("USERNAME")
15
- PASSWORD = ENV.fetch("PASSWORD")
16
- ACCOUNT_ID = ENV.fetch("ACCOUNT_ID")
17
- VOICE_APPLICATION_ID = ENV.fetch("VOICE_APPLICATION_ID")
18
- MESSAGING_APPLICATION_ID = ENV.fetch("MESSAGING_APPLICATION_ID")
19
- CALLBACK_URL = ENV.fetch("CALLBACK_URL")
20
- PHONE_NUMBER_OUTBOUND = ENV.fetch("PHONE_NUMBER_OUTBOUND")
21
- PHONE_NUMBER_INBOUND = ENV.fetch("PHONE_NUMBER_INBOUND")
22
- MFA_MESSAGING_APPLICATION_ID = ENV.fetch("MFA_MESSAGING_APPLICATION_ID")
23
- MFA_VOICE_APPLICATION_ID = ENV.fetch("MFA_VOICE_APPLICATION_ID")
24
- PHONE_NUMBER_MFA = ENV.fetch("PHONE_NUMBER_MFA")
16
+ BW_USERNAME = ENV.fetch("BW_USERNAME")
17
+ BW_PASSWORD = ENV.fetch("BW_PASSWORD")
18
+ BW_ACCOUNT_ID = ENV.fetch("BW_ACCOUNT_ID")
19
+ BW_VOICE_APPLICATION_ID = ENV.fetch("BW_VOICE_APPLICATION_ID")
20
+ BW_MESSAGING_APPLICATION_ID = ENV.fetch("BW_MESSAGING_APPLICATION_ID")
21
+ BASE_CALLBACK_URL = ENV.fetch("BASE_CALLBACK_URL")
22
+ BW_NUMBER = ENV.fetch("BW_NUMBER")
23
+ USER_NUMBER = ENV.fetch("USER_NUMBER")
25
24
  rescue
26
25
  puts "Environmental variables not found"
27
26
  exit(-1)
@@ -30,35 +29,35 @@ end
30
29
  class IntegrationTest < Test::Unit::TestCase
31
30
  def setup
32
31
  @bandwidth_client = Bandwidth::Client.new(
33
- voice_basic_auth_user_name: USERNAME,
34
- voice_basic_auth_password: PASSWORD,
35
- messaging_basic_auth_user_name: USERNAME,
36
- messaging_basic_auth_password: PASSWORD,
37
- multi_factor_auth_basic_auth_user_name: USERNAME,
38
- multi_factor_auth_basic_auth_password: PASSWORD,
39
- phone_number_lookup_basic_auth_user_name: USERNAME,
40
- phone_number_lookup_basic_auth_password: PASSWORD
32
+ voice_basic_auth_user_name: BW_USERNAME,
33
+ voice_basic_auth_password: BW_PASSWORD,
34
+ messaging_basic_auth_user_name: BW_USERNAME,
35
+ messaging_basic_auth_password: BW_PASSWORD,
36
+ multi_factor_auth_basic_auth_user_name: BW_USERNAME,
37
+ multi_factor_auth_basic_auth_password: BW_PASSWORD,
38
+ phone_number_lookup_basic_auth_user_name: BW_USERNAME,
39
+ phone_number_lookup_basic_auth_password: BW_PASSWORD
41
40
  )
42
41
  end
43
42
 
44
43
  def test_create_message
45
44
  body = MessageRequest.new
46
- body.application_id = MESSAGING_APPLICATION_ID
47
- body.to = [PHONE_NUMBER_INBOUND]
48
- body.from = PHONE_NUMBER_OUTBOUND
45
+ body.application_id = BW_MESSAGING_APPLICATION_ID
46
+ body.to = [USER_NUMBER]
47
+ body.from = BW_NUMBER
49
48
  body.text = "Ruby Integration"
50
- response = @bandwidth_client.messaging_client.client.create_message(ACCOUNT_ID, body)
49
+ response = @bandwidth_client.messaging_client.client.create_message(BW_ACCOUNT_ID, body)
51
50
  assert(response.data.id.length > 0, "id value not set") #validate that _some_ id was returned
52
51
  end
53
52
 
54
53
  def test_create_message_invalid_phone_number
55
54
  body = MessageRequest.new
56
- body.application_id = MESSAGING_APPLICATION_ID
55
+ body.application_id = BW_MESSAGING_APPLICATION_ID
57
56
  body.to = ["+1invalid"]
58
- body.from = PHONE_NUMBER_OUTBOUND
57
+ body.from = BW_NUMBER
59
58
  body.text = "Ruby Integration"
60
59
  begin
61
- @bandwidth_client.messaging_client.client.create_message(ACCOUNT_ID, body)
60
+ @bandwidth_client.messaging_client.client.create_message(BW_ACCOUNT_ID, body)
62
61
  #workaround to make sure that if the above error is not raised, the build will fail
63
62
  assert(false, "Expected exception not raised")
64
63
  rescue MessagingException => e
@@ -68,41 +67,66 @@ class IntegrationTest < Test::Unit::TestCase
68
67
 
69
68
  def test_upload_download_media
70
69
  #define constants for upload media and download media
71
- media_file_name = 'ruby_integration' #future update to add special symbols
72
- media_file = '12345' #todo: check a binary string
70
+ media_id = "text-media-id-" + SecureRandom.uuid
71
+ media = "Hello world"
73
72
 
74
73
  #media upload
75
- @bandwidth_client.messaging_client.client.upload_media(ACCOUNT_ID, media_file_name, media_file, :content_type => "application/octet-stream", :cache_control => "no-cache")
74
+ @bandwidth_client.messaging_client.client.upload_media(BW_ACCOUNT_ID, media_id, media, :content_type => "application/octet-stream", :cache_control => "no-cache")
76
75
 
77
76
  #media download
78
- downloaded_media_file = @bandwidth_client.messaging_client.client.get_media(ACCOUNT_ID, media_file_name).data
77
+ downloaded_media = @bandwidth_client.messaging_client.client.get_media(BW_ACCOUNT_ID, media_id).data
79
78
 
80
- assert_equal(downloaded_media_file, media_file, "Downloaded media file not equal to upload")
79
+ assert_equal(downloaded_media, media, "Downloaded media file not equal to upload")
81
80
  end
82
81
 
83
82
  def test_create_call_and_get_call_state
84
83
  body = CreateCallRequest.new
85
- body.from = PHONE_NUMBER_OUTBOUND
86
- body.to = PHONE_NUMBER_INBOUND
87
- body.application_id = VOICE_APPLICATION_ID
88
- body.answer_url = CALLBACK_URL
89
- response = @bandwidth_client.voice_client.client.create_call(ACCOUNT_ID, body)
84
+ body.from = BW_NUMBER
85
+ body.to = USER_NUMBER
86
+ body.application_id = BW_VOICE_APPLICATION_ID
87
+ body.answer_url = BASE_CALLBACK_URL
88
+ response = @bandwidth_client.voice_client.client.create_call(BW_ACCOUNT_ID, body)
90
89
  assert(response.data.call_id.length > 0, "call_id value not set")
91
90
 
92
91
  #Get phone call information
93
- response = @bandwidth_client.voice_client.client.get_call(ACCOUNT_ID, response.data.call_id)
92
+ response = @bandwidth_client.voice_client.client.get_call(BW_ACCOUNT_ID, response.data.call_id)
93
+ assert(response.data.state.length > 0, "state value not set")
94
+ end
95
+
96
+ def test_create_call_with_amd_and_get_call_state
97
+ machine_detection = MachineDetectionConfiguration.new
98
+ machine_detection.mode = 'async'
99
+ machine_detection.detection_timeout = 5.0
100
+ machine_detection.silence_timeout = 5.0
101
+ machine_detection.speech_threshold = 5.0
102
+ machine_detection.speech_end_threshold = 5.0
103
+ machine_detection.delay_result = true
104
+ machine_detection.callback_url = BASE_CALLBACK_URL + '/machineDetection'
105
+ machine_detection.callback_method = 'POST'
106
+
107
+ body = CreateCallRequest.new
108
+ body.from = BW_NUMBER
109
+ body.to = USER_NUMBER
110
+ body.application_id = BW_VOICE_APPLICATION_ID
111
+ body.answer_url = BASE_CALLBACK_URL
112
+ body.machine_detection = machine_detection
113
+ response = @bandwidth_client.voice_client.client.create_call(BW_ACCOUNT_ID, body)
114
+ assert(response.data.call_id.length > 0, "call_id value not set")
115
+
116
+ #Get phone call information
117
+ response = @bandwidth_client.voice_client.client.get_call(BW_ACCOUNT_ID, response.data.call_id)
94
118
  assert(response.data.state.length > 0, "state value not set")
95
119
  end
96
120
 
97
121
  def test_create_call_invalid_phone_number
98
122
  body = CreateCallRequest.new
99
- body.from = PHONE_NUMBER_OUTBOUND
123
+ body.from = BW_NUMBER
100
124
  body.to = "+1invalid"
101
- body.application_id = VOICE_APPLICATION_ID
102
- body.answer_url = CALLBACK_URL
125
+ body.application_id = BW_VOICE_APPLICATION_ID
126
+ body.answer_url = BASE_CALLBACK_URL
103
127
 
104
128
  begin
105
- @bandwidth_client.voice_client.client.create_call(ACCOUNT_ID, :body => body)
129
+ @bandwidth_client.voice_client.client.create_call(BW_ACCOUNT_ID, :body => body)
106
130
  #workaround to make sure that if the above error is not raised, the build will fail
107
131
  assert(false, "Expected exception not raised")
108
132
  rescue ApiErrorException => e
@@ -466,38 +490,38 @@ class IntegrationTest < Test::Unit::TestCase
466
490
 
467
491
  def test_mfa_messaging
468
492
  body = TwoFactorCodeRequestSchema.new
469
- body.from = PHONE_NUMBER_MFA
470
- body.to = PHONE_NUMBER_INBOUND
471
- body.application_id = MFA_MESSAGING_APPLICATION_ID
493
+ body.from = BW_NUMBER
494
+ body.to = USER_NUMBER
495
+ body.application_id = BW_MESSAGING_APPLICATION_ID
472
496
  body.scope = "scope"
473
497
  body.digits = 6
474
498
  body.message = "Your temporary {NAME} {SCOPE} code is {CODE}"
475
499
 
476
- response = @bandwidth_client.multi_factor_auth_client.mfa.create_messaging_two_factor(ACCOUNT_ID, body)
500
+ response = @bandwidth_client.multi_factor_auth_client.mfa.create_messaging_two_factor(BW_ACCOUNT_ID, body)
477
501
  assert(response.data.message_id.length > 0, "message id value not set")
478
502
  end
479
503
 
480
504
  def test_mfa_voice
481
505
  body = TwoFactorCodeRequestSchema.new
482
- body.from = PHONE_NUMBER_MFA
483
- body.to = PHONE_NUMBER_INBOUND
484
- body.application_id = MFA_VOICE_APPLICATION_ID
506
+ body.from = BW_NUMBER
507
+ body.to = USER_NUMBER
508
+ body.application_id = BW_VOICE_APPLICATION_ID
485
509
  body.scope = "scope"
486
510
  body.digits = 6
487
511
  body.message = "Your temporary {NAME} {SCOPE} code is {CODE}"
488
512
 
489
- response = @bandwidth_client.multi_factor_auth_client.mfa.create_voice_two_factor(ACCOUNT_ID, body)
513
+ response = @bandwidth_client.multi_factor_auth_client.mfa.create_voice_two_factor(BW_ACCOUNT_ID, body)
490
514
  assert(response.data.call_id.length > 0, "call id value not set")
491
515
  end
492
516
 
493
517
  def test_mfa_verify
494
518
  body = TwoFactorVerifyRequestSchema.new
495
- body.to = PHONE_NUMBER_INBOUND
496
- body.application_id = MFA_VOICE_APPLICATION_ID
519
+ body.to = "+1000" + rand(1111111..9999999).to_s
520
+ body.application_id = BW_VOICE_APPLICATION_ID
497
521
  body.scope = "scope"
498
522
  body.code = "123456"
499
523
  body.expiration_time_in_minutes = 3
500
- response = @bandwidth_client.multi_factor_auth_client.mfa.create_verify_two_factor(ACCOUNT_ID, body)
524
+ response = @bandwidth_client.multi_factor_auth_client.mfa.create_verify_two_factor(BW_ACCOUNT_ID, body)
501
525
  #Ruby has no check to see if variables are of type boolean
502
526
  #An explicit true/false check is required
503
527
  assert(response.data.valid == true || response.data.valid == false, "'valid' variable is not a boolean")
@@ -531,13 +555,14 @@ class IntegrationTest < Test::Unit::TestCase
531
555
 
532
556
  def test_ring
533
557
  ring = Bandwidth::Voice::Ring.new({
534
- :duration => 5
558
+ :duration => 5,
559
+ :answer_call => false
535
560
  })
536
561
 
537
562
  response = Bandwidth::Voice::Response.new()
538
563
  response.push(ring)
539
564
 
540
- expected = '<?xml version="1.0" encoding="UTF-8"?><Response><Ring duration="5"/></Response>'
565
+ expected = '<?xml version="1.0" encoding="UTF-8"?><Response><Ring duration="5" answerCall="false"/></Response>'
541
566
  actual = response.to_bxml()
542
567
  assert_equal(expected, actual)
543
568
  end
@@ -558,7 +583,7 @@ class IntegrationTest < Test::Unit::TestCase
558
583
  actual = response.to_bxml()
559
584
  assert_equal(expected, actual)
560
585
  end
561
-
586
+
562
587
  def test_stop_gather
563
588
  stop_gather = Bandwidth::Voice::StopGather.new()
564
589
 
@@ -572,12 +597,24 @@ class IntegrationTest < Test::Unit::TestCase
572
597
 
573
598
  def test_tn_lookup
574
599
  body = OrderRequest.new
575
- body.tns = [PHONE_NUMBER_OUTBOUND]
576
- create_response = @bandwidth_client.phone_number_lookup_client.client.create_lookup_request(ACCOUNT_ID, body)
600
+ body.tns = [BW_NUMBER]
601
+ create_response = @bandwidth_client.phone_number_lookup_client.client.create_lookup_request(BW_ACCOUNT_ID, body)
577
602
  assert(create_response.data.request_id.length > 0, "request_id value not set")
578
603
 
579
604
  request_id = create_response.data.request_id
580
- get_response = @bandwidth_client.phone_number_lookup_client.client.get_lookup_request_status(ACCOUNT_ID, request_id)
605
+ get_response = @bandwidth_client.phone_number_lookup_client.client.get_lookup_request_status(BW_ACCOUNT_ID, request_id)
581
606
  assert(get_response.data.status.length > 0, "status value not set")
582
607
  end
608
+
609
+ def test_webrtc_generate_bxml
610
+ expected = '<?xml version="1.0" encoding="UTF-8"?><Response><Transfer><SipUri uui="93d6f3c0be5845960b744fa28015d8ede84bd1a4;encoding=base64,asdf;encoding=jwt">sip:sipx.webrtc.bandwidth.com:5060</SipUri></Transfer></Response>'
611
+ actual = Bandwidth::WebRtc.generate_bxml('asdf', 'c-93d6f3c0-be584596-0b74-4fa2-8015-d8ede84bd1a4')
612
+ assert_equal(expected, actual)
613
+ end
614
+
615
+ def test_webrtc_generate_transfer_bxml_verb
616
+ expected = '<Transfer><SipUri uui="93d6f3c0be5845960b744fa28015d8ede84bd1a4;encoding=base64,asdf;encoding=jwt">sip:sipx.webrtc.bandwidth.com:5060</SipUri></Transfer>'
617
+ actual = Bandwidth::WebRtc.generate_transfer_bxml_verb('asdf', 'c-93d6f3c0-be584596-0b74-4fa2-8015-d8ede84bd1a4')
618
+ assert_equal(expected, actual)
619
+ end
583
620
  end
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: 7.0.0
4
+ version: 9.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - APIMatic SDK Generator
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-15 00:00:00.000000000 Z
11
+ date: 2021-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logging
@@ -235,9 +235,11 @@ files:
235
235
  - lib/bandwidth/voice_lib/voice/exceptions/api_error_exception.rb
236
236
  - lib/bandwidth/voice_lib/voice/models/answer_fallback_method_enum.rb
237
237
  - lib/bandwidth/voice_lib/voice/models/answer_method_enum.rb
238
+ - lib/bandwidth/voice_lib/voice/models/call_callback.rb
238
239
  - lib/bandwidth/voice_lib/voice/models/call_recording_metadata.rb
239
240
  - lib/bandwidth/voice_lib/voice/models/call_state.rb
240
241
  - lib/bandwidth/voice_lib/voice/models/callback_method_enum.rb
242
+ - lib/bandwidth/voice_lib/voice/models/conference_callback.rb
241
243
  - lib/bandwidth/voice_lib/voice/models/conference_event_method_enum.rb
242
244
  - lib/bandwidth/voice_lib/voice/models/conference_member_state.rb
243
245
  - lib/bandwidth/voice_lib/voice/models/conference_recording_metadata.rb
@@ -246,7 +248,11 @@ files:
246
248
  - lib/bandwidth/voice_lib/voice/models/create_call_response.rb
247
249
  - lib/bandwidth/voice_lib/voice/models/direction_enum.rb
248
250
  - lib/bandwidth/voice_lib/voice/models/disconnect_method_enum.rb
251
+ - lib/bandwidth/voice_lib/voice/models/diversion.rb
252
+ - lib/bandwidth/voice_lib/voice/models/fallback_method_enum.rb
249
253
  - lib/bandwidth/voice_lib/voice/models/file_format_enum.rb
254
+ - lib/bandwidth/voice_lib/voice/models/machine_detection_configuration.rb
255
+ - lib/bandwidth/voice_lib/voice/models/mode_enum.rb
250
256
  - lib/bandwidth/voice_lib/voice/models/modify_call_recording_request.rb
251
257
  - lib/bandwidth/voice_lib/voice/models/modify_call_request.rb
252
258
  - lib/bandwidth/voice_lib/voice/models/modify_conference_request.rb
@@ -257,6 +263,7 @@ files:
257
263
  - lib/bandwidth/voice_lib/voice/models/status_enum.rb
258
264
  - lib/bandwidth/voice_lib/voice/models/transcribe_recording_request.rb
259
265
  - lib/bandwidth/voice_lib/voice/models/transcript.rb
266
+ - lib/bandwidth/voice_lib/voice/models/transcription.rb
260
267
  - lib/bandwidth/voice_lib/voice/models/transcription_metadata.rb
261
268
  - lib/bandwidth/voice_lib/voice/models/transcription_response.rb
262
269
  - lib/bandwidth/web_rtc_lib/utils/web_rtc_transfer.rb
@@ -298,5 +305,5 @@ requirements: []
298
305
  rubygems_version: 3.2.22
299
306
  signing_key:
300
307
  specification_version: 4
301
- summary: bandwidth
308
+ summary: Bandwidth
302
309
  test_files: []