bandwidth-sdk 10.3.0 → 10.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/bandwidth/voice_lib/bxml/verbs/custom_param.rb +17 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/record.rb +1 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/start_recording.rb +1 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/start_transcription.rb +42 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/stop_transcription.rb +16 -0
- data/lib/bandwidth/voice_lib/bxml/verbs/stream_param.rb +1 -1
- data/lib/bandwidth/voice_lib/voice/models/transcribe_recording_request.rb +12 -0
- data/test/integration/test_integration.rb +92 -8
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ffaae51706420e65f3e5d390fb9215c6dbcfab4fafd63afdcb23db02b9f35c2f
|
4
|
+
data.tar.gz: bbf5a6df61b719af55f8207cae476e6e9dfa558e39b144ce6f612616081e8b5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40337ac287221ab0177321f3118373023052bc5f322c44e30768b1b678d51917ada3a261e5620fa0d9ad9cb9fb626d03163e4fcf8bf63b7c4ec7c04480e84a4a
|
7
|
+
data.tar.gz: dfade60302bddd061ff00afe378cc64f006c93c7b95c36a290aeb80f38ded9eb10d8c156b994b6cebe4fa414bde4f103c48925f844e9802cae47505fb9bc5b80
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Bandwidth Ruby SDK
|
2
2
|
|
3
|
-
[![
|
3
|
+
[![Nightly Tests](https://github.com/Bandwidth/ruby-sdk/actions/workflows/test-nightly.yml/badge.svg)](https://github.com/Bandwidth/ruby-sdk/actions/workflows/test-nightly.yml)
|
4
4
|
|
5
5
|
|
6
6
|
| **OS** | **Ruby** |
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative 'xml_verb'
|
2
|
+
|
3
|
+
module Bandwidth
|
4
|
+
module Voice
|
5
|
+
# These elements define optional user specified parameters that will be sent to the destination URL when the real-time transcription is first started
|
6
|
+
class CustomParam
|
7
|
+
include XmlVerb
|
8
|
+
|
9
|
+
def to_bxml(xml)
|
10
|
+
xml.CustomParam(compact_hash({
|
11
|
+
'name' => name,
|
12
|
+
'value' => value
|
13
|
+
}))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -19,6 +19,7 @@ module Bandwidth
|
|
19
19
|
'maxDuration' => max_duration,
|
20
20
|
'fileFormat' => file_format,
|
21
21
|
'transcribe' => transcribe,
|
22
|
+
'detectLanguage' => detect_language,
|
22
23
|
'transcriptionAvailableUrl' => transcription_available_url,
|
23
24
|
'transcriptionAvailableMethod' => transcription_available_method,
|
24
25
|
'silenceTimeout' => silence_timeout,
|
@@ -16,6 +16,7 @@ module Bandwidth
|
|
16
16
|
'fileFormat' => file_format,
|
17
17
|
'multiChannel' => multi_channel,
|
18
18
|
'transcribe' => transcribe,
|
19
|
+
'detectLanguage' => detect_language,
|
19
20
|
'transcriptionAvailableUrl' => transcription_available_url,
|
20
21
|
'transcriptionAvailableMethod' => transcription_available_method
|
21
22
|
}))
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require_relative 'xml_verb'
|
2
|
+
|
3
|
+
module Bandwidth
|
4
|
+
module Voice
|
5
|
+
# The StartTranscription verb allows a segment of a call to be transcribed and optionally for the live transcription to be sent off to another destination for additional processing
|
6
|
+
class StartTranscription
|
7
|
+
include XmlVerb
|
8
|
+
|
9
|
+
def to_bxml(xml)
|
10
|
+
xml.StartTranscription(compact_hash({
|
11
|
+
'name' => name,
|
12
|
+
'tracks' => tracks,
|
13
|
+
'transcriptionEventUrl' => transcriptionEventUrl,
|
14
|
+
'transcriptionEventMethod' => transcriptionEventMethod,
|
15
|
+
'username' => username,
|
16
|
+
'password' => password,
|
17
|
+
'destination' => destination,
|
18
|
+
'stabilized' => stabilized
|
19
|
+
})) do
|
20
|
+
def embedded_xml(xml, property, type)
|
21
|
+
if property
|
22
|
+
s = if property.is_a?(type)
|
23
|
+
then property
|
24
|
+
else type.new(property)
|
25
|
+
end
|
26
|
+
s.to_bxml(xml)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
def nest_verbs_list(xml, property)
|
30
|
+
if property
|
31
|
+
property.each do |verb|
|
32
|
+
verb.to_bxml(xml)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
embedded_xml(xml, custom_params, CustomParam)
|
37
|
+
nest_verbs_list(xml, nested_verbs)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'xml_verb'
|
2
|
+
|
3
|
+
module Bandwidth
|
4
|
+
module Voice
|
5
|
+
# The StopTranscription verb is used to stop a real-time transcription that was started with a previous `<StartTranscription>` verb
|
6
|
+
class StopTranscription
|
7
|
+
include XmlVerb
|
8
|
+
|
9
|
+
def to_bxml(xml)
|
10
|
+
xml.StopTranscription(compact_hash({
|
11
|
+
'name' => name
|
12
|
+
}))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -2,7 +2,7 @@ require_relative 'xml_verb'
|
|
2
2
|
|
3
3
|
module Bandwidth
|
4
4
|
module Voice
|
5
|
-
#
|
5
|
+
# These elements define optional user specified parameters that will be sent to the destination URL when the stream is first started
|
6
6
|
class StreamParam
|
7
7
|
include XmlVerb
|
8
8
|
|
@@ -33,6 +33,10 @@ module Bandwidth
|
|
33
33
|
# @return [Float]
|
34
34
|
attr_accessor :callback_timeout
|
35
35
|
|
36
|
+
# TODO: Write general description for this method
|
37
|
+
# @return [Boolean]
|
38
|
+
attr_accessor :detect_language
|
39
|
+
|
36
40
|
# A mapping from model property names to API property names.
|
37
41
|
def self.names
|
38
42
|
@_hash = {} if @_hash.nil?
|
@@ -42,6 +46,7 @@ module Bandwidth
|
|
42
46
|
@_hash['password'] = 'password'
|
43
47
|
@_hash['tag'] = 'tag'
|
44
48
|
@_hash['callback_timeout'] = 'callbackTimeout'
|
49
|
+
@_hash['detect_language'] = 'detectLanguage'
|
45
50
|
@_hash
|
46
51
|
end
|
47
52
|
|
@@ -54,6 +59,7 @@ module Bandwidth
|
|
54
59
|
password
|
55
60
|
tag
|
56
61
|
callback_timeout
|
62
|
+
detect_language
|
57
63
|
]
|
58
64
|
end
|
59
65
|
|
@@ -65,6 +71,7 @@ module Bandwidth
|
|
65
71
|
password
|
66
72
|
tag
|
67
73
|
callback_timeout
|
74
|
+
detect_language
|
68
75
|
]
|
69
76
|
end
|
70
77
|
|
@@ -73,6 +80,7 @@ module Bandwidth
|
|
73
80
|
username = nil,
|
74
81
|
password = nil,
|
75
82
|
tag = nil,
|
83
|
+
detect_language = nil,
|
76
84
|
callback_timeout = nil)
|
77
85
|
@callback_url = callback_url unless callback_url == SKIP
|
78
86
|
@callback_method = callback_method unless callback_method == SKIP
|
@@ -80,6 +88,7 @@ module Bandwidth
|
|
80
88
|
@password = password unless password == SKIP
|
81
89
|
@tag = tag unless tag == SKIP
|
82
90
|
@callback_timeout = callback_timeout unless callback_timeout == SKIP
|
91
|
+
@detect_language = detect_language unless detect_language == SKIP
|
83
92
|
end
|
84
93
|
|
85
94
|
# Creates an instance of the object from a hash.
|
@@ -95,6 +104,8 @@ module Bandwidth
|
|
95
104
|
tag = hash.key?('tag') ? hash['tag'] : SKIP
|
96
105
|
callback_timeout =
|
97
106
|
hash.key?('callbackTimeout') ? hash['callbackTimeout'] : SKIP
|
107
|
+
detect_language =
|
108
|
+
hash.key?('detectLanguage') ? hash['detectLanguage'] : SKIP
|
98
109
|
|
99
110
|
# Create object from extracted values.
|
100
111
|
TranscribeRecordingRequest.new(callback_url,
|
@@ -102,6 +113,7 @@ module Bandwidth
|
|
102
113
|
username,
|
103
114
|
password,
|
104
115
|
tag,
|
116
|
+
detect_language,
|
105
117
|
callback_timeout)
|
106
118
|
end
|
107
119
|
end
|
@@ -122,11 +122,18 @@ class IntegrationTest < Test::Unit::TestCase
|
|
122
122
|
assert(response.data.enqueued_time.is_a?(DateTime), "enqueued time is not a DateTime object")
|
123
123
|
|
124
124
|
#Get phone call information
|
125
|
-
sleep
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
125
|
+
sleep(2)
|
126
|
+
begin
|
127
|
+
response = @bandwidth_client.voice_client.client.get_call(BW_ACCOUNT_ID, response.data.call_id)
|
128
|
+
assert(response.data.state.length > 0, "state value not set")
|
129
|
+
assert_not_nil(response.data.enqueued_time, "enqueued time is nil")
|
130
|
+
assert(response.data.enqueued_time.is_a?(DateTime), "enqueued time is not a DateTime object")
|
131
|
+
rescue ApiErrorException => e
|
132
|
+
if e.response_code != 404
|
133
|
+
raise StandardError, "Unexpected HTTP Response: " + e.message
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
130
137
|
end
|
131
138
|
|
132
139
|
def test_create_call_with_amd_and_get_call_state
|
@@ -151,8 +158,15 @@ class IntegrationTest < Test::Unit::TestCase
|
|
151
158
|
assert(response.data.call_id.length > 0, "call_id value not set")
|
152
159
|
|
153
160
|
#Get phone call information
|
154
|
-
|
155
|
-
|
161
|
+
sleep(2)
|
162
|
+
begin
|
163
|
+
response = @bandwidth_client.voice_client.client.get_call(BW_ACCOUNT_ID, response.data.call_id)
|
164
|
+
assert(response.data.state.length > 0, "state value not set")
|
165
|
+
rescue ApiErrorException => e
|
166
|
+
if e.response_code != 404
|
167
|
+
raise StandardError, "Unexpected HTTP Response: " + e.message
|
168
|
+
end
|
169
|
+
end
|
156
170
|
end
|
157
171
|
|
158
172
|
def test_create_call_with_priority
|
@@ -354,6 +368,7 @@ class IntegrationTest < Test::Unit::TestCase
|
|
354
368
|
:recording_available_url => "https://available.com",
|
355
369
|
:recording_available_method => "GET",
|
356
370
|
:transcribe => false,
|
371
|
+
:detect_language=> true,
|
357
372
|
:transcription_available_url => "https://transcribe.com",
|
358
373
|
:transcription_available_method => "POST",
|
359
374
|
:username => "user",
|
@@ -371,7 +386,7 @@ class IntegrationTest < Test::Unit::TestCase
|
|
371
386
|
|
372
387
|
response = Bandwidth::Voice::Response.new()
|
373
388
|
response.push(record)
|
374
|
-
expected = '<?xml version="1.0" encoding="UTF-8"?><Response><Record tag="tag" username="user" password="pass" recordCompleteUrl="https://complete.com" recordCompleteMethod="POST" recordingAvailableUrl="https://available.com" recordingAvailableMethod="GET" terminatingDigits="#" maxDuration="3" fileFormat="wav" transcribe="false" transcriptionAvailableUrl="https://transcribe.com" transcriptionAvailableMethod="POST" silenceTimeout="5" recordCompleteFallbackUrl="https://test.com" recordCompleteFallbackMethod="GET" fallbackUsername="fuser" fallbackPassword="fpass"/></Response>'
|
389
|
+
expected = '<?xml version="1.0" encoding="UTF-8"?><Response><Record tag="tag" username="user" password="pass" recordCompleteUrl="https://complete.com" recordCompleteMethod="POST" recordingAvailableUrl="https://available.com" recordingAvailableMethod="GET" terminatingDigits="#" maxDuration="3" fileFormat="wav" transcribe="false" detectLanguage="true" transcriptionAvailableUrl="https://transcribe.com" transcriptionAvailableMethod="POST" silenceTimeout="5" recordCompleteFallbackUrl="https://test.com" recordCompleteFallbackMethod="GET" fallbackUsername="fuser" fallbackPassword="fpass"/></Response>'
|
375
390
|
actual = response.to_bxml()
|
376
391
|
assert_equal(expected, actual)
|
377
392
|
end
|
@@ -764,4 +779,73 @@ class IntegrationTest < Test::Unit::TestCase
|
|
764
779
|
|
765
780
|
assert_equal(expected, actual)
|
766
781
|
end
|
782
|
+
|
783
|
+
def test_start_transcription_bxml_verb
|
784
|
+
expected = '<?xml version="1.0" encoding="UTF-8"?><Response><StartTranscription name="test_transcription" tracks="inbound" transcriptionEventUrl="https://www.test.com/event" transcriptionEventMethod="POST" username="username" password="password" destination="https://www.test.com/transcription"><CustomParam name="name1" value="value1"/></StartTranscription></Response>'
|
785
|
+
response = Bandwidth::Voice::Response.new()
|
786
|
+
|
787
|
+
custom_param1 = Bandwidth::Voice::CustomParam.new({
|
788
|
+
:name => "name1",
|
789
|
+
:value => "value1"
|
790
|
+
})
|
791
|
+
|
792
|
+
start_transcription = Bandwidth::Voice::StartTranscription.new({
|
793
|
+
:name => "test_transcription",
|
794
|
+
:tracks => "inbound",
|
795
|
+
:transcriptionEventUrl => "https://www.test.com/event",
|
796
|
+
:transcriptionEventMethod => "POST",
|
797
|
+
:username => "username",
|
798
|
+
:password => "password",
|
799
|
+
:destination => "https://www.test.com/transcription",
|
800
|
+
:custom_params => custom_param1
|
801
|
+
})
|
802
|
+
|
803
|
+
response.push(start_transcription)
|
804
|
+
actual = response.to_bxml()
|
805
|
+
|
806
|
+
assert_equal(expected, actual)
|
807
|
+
end
|
808
|
+
|
809
|
+
def test_start_transcription_multiple_nested_custom_params
|
810
|
+
expected = '<?xml version="1.0" encoding="UTF-8"?><Response><StartTranscription name="test_transcription" tracks="inbound" transcriptionEventUrl="https://www.test.com/event" transcriptionEventMethod="POST" username="username" password="password" destination="https://www.test.com/transcription"><CustomParam name="name1" value="value1"/><CustomParam name="name2" value="value2"/></StartTranscription></Response>'
|
811
|
+
response = Bandwidth::Voice::Response.new()
|
812
|
+
|
813
|
+
custom_param1 = Bandwidth::Voice::CustomParam.new({
|
814
|
+
:name => "name1",
|
815
|
+
:value => "value1"
|
816
|
+
})
|
817
|
+
|
818
|
+
custom_param2 = Bandwidth::Voice::CustomParam.new({
|
819
|
+
:name => "name2",
|
820
|
+
:value => "value2"
|
821
|
+
})
|
822
|
+
|
823
|
+
start_transcription = Bandwidth::Voice::StartTranscription.new({
|
824
|
+
:destination => "https://www.test.com/transcription",
|
825
|
+
:name => "test_transcription",
|
826
|
+
:tracks => "inbound",
|
827
|
+
:transcriptionEventUrl => "https://www.test.com/event",
|
828
|
+
:transcriptionEventMethod => "POST",
|
829
|
+
:username => "username",
|
830
|
+
:password => "password",
|
831
|
+
:nested_verbs => [custom_param1, custom_param2]
|
832
|
+
})
|
833
|
+
|
834
|
+
response.push(start_transcription)
|
835
|
+
actual = response.to_bxml()
|
836
|
+
|
837
|
+
assert_equal(expected, actual)
|
838
|
+
end
|
839
|
+
|
840
|
+
def test_stop_transcription_bxml_verb
|
841
|
+
expected = '<?xml version="1.0" encoding="UTF-8"?><Response><StopTranscription name="test_transcription"/></Response>'
|
842
|
+
response = Bandwidth::Voice::Response.new()
|
843
|
+
stop_transcription = Bandwidth::Voice::StopTranscription.new({
|
844
|
+
:name => "test_transcription"
|
845
|
+
})
|
846
|
+
response.push(stop_transcription)
|
847
|
+
actual = response.to_bxml()
|
848
|
+
|
849
|
+
assert_equal(expected, actual)
|
850
|
+
end
|
767
851
|
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: 10.
|
4
|
+
version: 10.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bandwidth
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logging
|
@@ -231,6 +231,7 @@ files:
|
|
231
231
|
- lib/bandwidth/voice_lib/bxml/response.rb
|
232
232
|
- lib/bandwidth/voice_lib/bxml/verbs/bridge.rb
|
233
233
|
- lib/bandwidth/voice_lib/bxml/verbs/conference.rb
|
234
|
+
- lib/bandwidth/voice_lib/bxml/verbs/custom_param.rb
|
234
235
|
- lib/bandwidth/voice_lib/bxml/verbs/forward.rb
|
235
236
|
- lib/bandwidth/voice_lib/bxml/verbs/gather.rb
|
236
237
|
- lib/bandwidth/voice_lib/bxml/verbs/hangup.rb
|
@@ -248,9 +249,11 @@ files:
|
|
248
249
|
- lib/bandwidth/voice_lib/bxml/verbs/start_gather.rb
|
249
250
|
- lib/bandwidth/voice_lib/bxml/verbs/start_recording.rb
|
250
251
|
- lib/bandwidth/voice_lib/bxml/verbs/start_stream.rb
|
252
|
+
- lib/bandwidth/voice_lib/bxml/verbs/start_transcription.rb
|
251
253
|
- lib/bandwidth/voice_lib/bxml/verbs/stop_gather.rb
|
252
254
|
- lib/bandwidth/voice_lib/bxml/verbs/stop_recording.rb
|
253
255
|
- lib/bandwidth/voice_lib/bxml/verbs/stop_stream.rb
|
256
|
+
- lib/bandwidth/voice_lib/bxml/verbs/stop_transcription.rb
|
254
257
|
- lib/bandwidth/voice_lib/bxml/verbs/stream_param.rb
|
255
258
|
- lib/bandwidth/voice_lib/bxml/verbs/tag.rb
|
256
259
|
- lib/bandwidth/voice_lib/bxml/verbs/transfer.rb
|
@@ -314,7 +317,7 @@ homepage: https://github.com/Bandwidth/ruby-sdk
|
|
314
317
|
licenses:
|
315
318
|
- MIT
|
316
319
|
metadata: {}
|
317
|
-
post_install_message:
|
320
|
+
post_install_message:
|
318
321
|
rdoc_options: []
|
319
322
|
require_paths:
|
320
323
|
- lib
|
@@ -329,8 +332,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
329
332
|
- !ruby/object:Gem::Version
|
330
333
|
version: '0'
|
331
334
|
requirements: []
|
332
|
-
rubygems_version: 3.4.
|
333
|
-
signing_key:
|
335
|
+
rubygems_version: 3.4.10
|
336
|
+
signing_key:
|
334
337
|
specification_version: 4
|
335
338
|
summary: Bandwidth
|
336
339
|
test_files: []
|