vonage 7.23.0 → 8.0.0.beta
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/README.md +87 -387
- data/lib/vonage/applications.rb +4 -12
- data/lib/vonage/client.rb +0 -51
- data/lib/vonage/client_error.rb +1 -1
- data/lib/vonage/config.rb +1 -9
- data/lib/vonage/conversations/events.rb +0 -12
- data/lib/vonage/conversations/legs.rb +0 -6
- data/lib/vonage/conversations/members.rb +0 -15
- data/lib/vonage/conversations/users.rb +0 -15
- data/lib/vonage/conversations.rb +0 -30
- data/lib/vonage/errors.rb +20 -37
- data/lib/vonage/gsm7.rb +1 -1
- data/lib/vonage/jwt.rb +0 -17
- data/lib/vonage/keys.rb +0 -2
- data/lib/vonage/logger.rb +3 -5
- data/lib/vonage/messaging/channels/viber.rb +1 -8
- data/lib/vonage/messaging/channels/whats_app.rb +1 -3
- data/lib/vonage/messaging.rb +0 -11
- data/lib/vonage/namespace.rb +60 -132
- data/lib/vonage/numbers.rb +6 -29
- data/lib/vonage/server_error.rb +1 -1
- data/lib/vonage/signature.rb +5 -5
- data/lib/vonage/sms.rb +20 -20
- data/lib/vonage/version.rb +1 -1
- data/lib/vonage/video/archives.rb +53 -18
- data/lib/vonage/video/list_response.rb +11 -0
- data/lib/vonage/video/moderation.rb +22 -7
- data/lib/vonage/video/signals.rb +9 -4
- data/lib/vonage/video/streams.rb +12 -6
- data/lib/vonage/video.rb +13 -31
- data/lib/vonage/voice/actions/connect.rb +3 -27
- data/lib/vonage/voice/actions/conversation.rb +2 -2
- data/lib/vonage/voice/actions/pay.rb +107 -0
- data/lib/vonage/voice/actions/talk.rb +2 -11
- data/lib/vonage/voice/talk.rb +1 -11
- data/lib/vonage/voice.rb +0 -22
- data/lib/vonage.rb +0 -2
- data/vonage.gemspec +1 -3
- metadata +9 -94
- data/lib/vonage/api_error.rb +0 -33
- data/lib/vonage/conversation/event/list_response.rb +0 -11
- data/lib/vonage/conversation/event.rb +0 -108
- data/lib/vonage/conversation/list_response.rb +0 -11
- data/lib/vonage/conversation/member/list_response.rb +0 -11
- data/lib/vonage/conversation/member.rb +0 -134
- data/lib/vonage/conversation/user/conversations_list_response.rb +0 -11
- data/lib/vonage/conversation/user/sessions_list_response.rb +0 -11
- data/lib/vonage/conversation/user.rb +0 -67
- data/lib/vonage/conversation.rb +0 -164
- data/lib/vonage/meetings/applications.rb +0 -25
- data/lib/vonage/meetings/dial_in_numbers/list_response.rb +0 -11
- data/lib/vonage/meetings/dial_in_numbers.rb +0 -23
- data/lib/vonage/meetings/recordings.rb +0 -36
- data/lib/vonage/meetings/rooms/list_response.rb +0 -11
- data/lib/vonage/meetings/rooms.rb +0 -155
- data/lib/vonage/meetings/sessions/list_response.rb +0 -11
- data/lib/vonage/meetings/sessions.rb +0 -28
- data/lib/vonage/meetings/themes/list_response.rb +0 -11
- data/lib/vonage/meetings/themes.rb +0 -218
- data/lib/vonage/meetings.rb +0 -38
- data/lib/vonage/number_insight_2.rb +0 -36
- data/lib/vonage/proactive_connect/events/list_response.rb +0 -11
- data/lib/vonage/proactive_connect/events.rb +0 -68
- data/lib/vonage/proactive_connect/item.rb +0 -104
- data/lib/vonage/proactive_connect/items/file_response.rb +0 -32
- data/lib/vonage/proactive_connect/items/list_response.rb +0 -11
- data/lib/vonage/proactive_connect/items.rb +0 -107
- data/lib/vonage/proactive_connect/list.rb +0 -168
- data/lib/vonage/proactive_connect/lists/list_response.rb +0 -11
- data/lib/vonage/proactive_connect/lists.rb +0 -35
- data/lib/vonage/proactive_connect.rb +0 -33
- data/lib/vonage/subaccounts/balance_transfers/list_response.rb +0 -11
- data/lib/vonage/subaccounts/credit_transfers/list_response.rb +0 -11
- data/lib/vonage/subaccounts/list_response.rb +0 -15
- data/lib/vonage/subaccounts.rb +0 -203
- data/lib/vonage/users/list_response.rb +0 -11
- data/lib/vonage/users.rb +0 -156
- data/lib/vonage/verify2/channels/email.rb +0 -36
- data/lib/vonage/verify2/channels/silent_auth.rb +0 -45
- data/lib/vonage/verify2/channels/sms.rb +0 -53
- data/lib/vonage/verify2/channels/voice.rb +0 -32
- data/lib/vonage/verify2/channels/whats_app.rb +0 -38
- data/lib/vonage/verify2/channels/whats_app_interactive.rb +0 -32
- data/lib/vonage/verify2/start_verification_options.rb +0 -62
- data/lib/vonage/verify2/workflow.rb +0 -39
- data/lib/vonage/verify2/workflow_builder.rb +0 -25
- data/lib/vonage/verify2.rb +0 -97
- data/lib/vonage/video/archives/list_response.rb +0 -11
- data/lib/vonage/video/broadcasts/list_response.rb +0 -11
- data/lib/vonage/video/broadcasts.rb +0 -75
- data/lib/vonage/video/sip.rb +0 -48
- data/lib/vonage/video/streams/list_response.rb +0 -11
@@ -13,6 +13,8 @@ module Vonage
|
|
13
13
|
|
14
14
|
# Get a list of archives for a specified Vonage application.
|
15
15
|
#
|
16
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
17
|
+
#
|
16
18
|
# @param [optional, Integer] :offset
|
17
19
|
#
|
18
20
|
# @param [optional, Integer] :count
|
@@ -25,24 +27,32 @@ module Vonage
|
|
25
27
|
#
|
26
28
|
# @see TODO: add docs link
|
27
29
|
#
|
28
|
-
def list(**params)
|
29
|
-
|
30
|
+
def list(application_id: @config.application_id, **params)
|
31
|
+
# TODO: raise error if application_id is nil
|
32
|
+
|
33
|
+
request('/v2/project/' + application_id + '/archive', params: params, response_class: Video::ListResponse)
|
30
34
|
end
|
31
35
|
|
32
36
|
# Return information for specified archive.
|
33
37
|
#
|
38
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
39
|
+
#
|
34
40
|
# @param [required, String] archive_id
|
35
41
|
#
|
36
42
|
# @return [Response]
|
37
43
|
#
|
38
44
|
# @see TODO: add docs link
|
39
45
|
#
|
40
|
-
def info(archive_id:)
|
41
|
-
|
46
|
+
def info(application_id: @config.application_id, archive_id:)
|
47
|
+
# TODO: raise error if application_id is nil
|
48
|
+
|
49
|
+
request('/v2/project/' + application_id + '/archive/' + archive_id)
|
42
50
|
end
|
43
51
|
|
44
52
|
# Create a new archive.
|
45
53
|
#
|
54
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
55
|
+
#
|
46
56
|
# @param [required, String] :session_id
|
47
57
|
#
|
48
58
|
# @param [optional, String] :hasAudio
|
@@ -71,39 +81,52 @@ module Vonage
|
|
71
81
|
#
|
72
82
|
# @see TODO: add docs link
|
73
83
|
#
|
74
|
-
def start(
|
75
|
-
|
84
|
+
def start(application_id: @config.application_id, **params)
|
85
|
+
# TODO: raise error if application_id is nil
|
86
|
+
# TODO: raise error if session_id is nil
|
87
|
+
|
88
|
+
request('/v2/project/' + application_id + '/archive', params: params, type: Post)
|
76
89
|
end
|
77
90
|
|
78
91
|
# Stop recording a specified archive.
|
79
92
|
#
|
93
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
94
|
+
#
|
80
95
|
# @param [required, String] archive_id
|
81
96
|
#
|
82
97
|
# @return [Response]
|
83
98
|
#
|
84
99
|
# @see TODO: add docs link
|
85
100
|
#
|
86
|
-
def stop(archive_id:)
|
87
|
-
|
101
|
+
def stop(application_id: @config.application_id, archive_id:)
|
102
|
+
# TODO: raise error if application_id is nil
|
103
|
+
|
104
|
+
request('/v2/project/' + application_id + '/archive/' + archive_id + '/stop', type: Post)
|
88
105
|
end
|
89
106
|
|
90
107
|
# Delete a specified archive.
|
91
108
|
#
|
109
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
110
|
+
#
|
92
111
|
# @param [required, String] archive_id
|
93
112
|
#
|
94
113
|
# @return [Response]
|
95
114
|
#
|
96
115
|
# @see TODO: add docs link
|
97
116
|
#
|
98
|
-
def delete(archive_id:)
|
99
|
-
|
117
|
+
def delete(application_id: @config.application_id, archive_id:)
|
118
|
+
# TODO: raise error if application_id is nil
|
119
|
+
|
120
|
+
request('/v2/project/' + application_id + '/archive/' + archive_id, type: Delete)
|
100
121
|
end
|
101
122
|
|
102
123
|
# Add a stream to a composed archive that was started with the streamMode set to "manual".
|
103
124
|
#
|
125
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
126
|
+
#
|
104
127
|
# @param [required, String] archive_id
|
105
128
|
#
|
106
|
-
# @param [required, String]
|
129
|
+
# @param [required, String] add_stream The ID of the stream to be added
|
107
130
|
#
|
108
131
|
# @param [optional, Boolean] has_audio
|
109
132
|
#
|
@@ -113,26 +136,36 @@ module Vonage
|
|
113
136
|
#
|
114
137
|
# @see TODO: add docs link
|
115
138
|
#
|
116
|
-
def add_stream(archive_id:,
|
117
|
-
|
139
|
+
def add_stream(application_id: @config.application_id, archive_id:, **params)
|
140
|
+
# TODO: raise error if application_id is nil
|
141
|
+
# TODO: raise error if add_stream is nil
|
142
|
+
|
143
|
+
request('/v2/project/' + application_id + '/archive/' + archive_id + '/streams', params: camelcase(params), type: Patch)
|
118
144
|
end
|
119
145
|
|
120
146
|
# Remove a stream from a composed archive that was started with the streamMode set to "manual".
|
121
147
|
#
|
148
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
149
|
+
#
|
122
150
|
# @param [required, String] archive_id
|
123
151
|
#
|
124
|
-
# @param [required, String]
|
152
|
+
# @param [required, String] remove_stream The ID of the stream to be removed
|
125
153
|
#
|
126
154
|
# @return [Response]
|
127
155
|
#
|
128
156
|
# @see TODO: add docs link
|
129
157
|
#
|
130
|
-
def remove_stream(archive_id:,
|
131
|
-
|
158
|
+
def remove_stream(application_id: @config.application_id, archive_id:, **params)
|
159
|
+
# TODO: raise error if application_id is nil
|
160
|
+
# TODO: raise error if remove_stream is nil
|
161
|
+
|
162
|
+
request('/v2/project/' + application_id + '/archive/' + archive_id + '/streams', params: camelcase(params), type: Patch)
|
132
163
|
end
|
133
164
|
|
134
165
|
# Change the layout of a composed archive while it is being recorded.
|
135
166
|
#
|
167
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
168
|
+
#
|
136
169
|
# @param [required, String] archive_id
|
137
170
|
#
|
138
171
|
# @param [optional, String] type
|
@@ -145,8 +178,10 @@ module Vonage
|
|
145
178
|
#
|
146
179
|
# @see TODO: add docs link
|
147
180
|
#
|
148
|
-
def change_layout(archive_id:, **params)
|
149
|
-
|
181
|
+
def change_layout(application_id: @config.application_id, archive_id:, **params)
|
182
|
+
# TODO: raise error if application_id is nil
|
183
|
+
|
184
|
+
request('/v2/project/' + application_id + '/archive/' + archive_id + '/layout', params: camelcase(params), type: Put)
|
150
185
|
end
|
151
186
|
end
|
152
187
|
end
|
@@ -11,6 +11,8 @@ module Vonage
|
|
11
11
|
|
12
12
|
# Force a client to disconnect from a session.
|
13
13
|
#
|
14
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
15
|
+
#
|
14
16
|
# @param [required, String] :session_id
|
15
17
|
#
|
16
18
|
# @param [required, String] :connection_id The connection ID of the specific participant to be disconnected from the session.
|
@@ -19,12 +21,16 @@ module Vonage
|
|
19
21
|
#
|
20
22
|
# @see TODO: add docs link
|
21
23
|
#
|
22
|
-
def force_disconnect(session_id:, connection_id:)
|
23
|
-
|
24
|
+
def force_disconnect(application_id: @config.application_id, session_id:, connection_id:)
|
25
|
+
# TODO: raise error if application_id is nil
|
26
|
+
|
27
|
+
request('/v2/project/' + application_id + '/session/' + session_id + '/connection/' + connection_id, type: Delete)
|
24
28
|
end
|
25
29
|
|
26
30
|
# Force mute a specific publisher stream in a session.
|
27
31
|
#
|
32
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
33
|
+
#
|
28
34
|
# @param [required, String] :session_id
|
29
35
|
#
|
30
36
|
# @param [required, String] :stream_id The stream ID of the specific stream to be muted.
|
@@ -33,26 +39,35 @@ module Vonage
|
|
33
39
|
#
|
34
40
|
# @see TODO: add docs link
|
35
41
|
#
|
36
|
-
def mute_single_stream(session_id:, stream_id:)
|
37
|
-
|
42
|
+
def mute_single_stream(application_id: @config.application_id, session_id:, stream_id:)
|
43
|
+
application_id ||= @config.application_id
|
44
|
+
# TODO: raise error if application_id is nil
|
45
|
+
|
46
|
+
request('/v2/project/' + application_id + '/session/' + session_id + '/stream/' + stream_id + '/mute', type: Post)
|
38
47
|
end
|
39
48
|
|
40
49
|
# Force mute all publisher stream for a specific session.
|
41
50
|
#
|
51
|
+
# @param [optional, String] :application_id (Required unless already set at Client instantiation or set in ENV)
|
52
|
+
#
|
42
53
|
# @param [required, String] :session_id
|
43
54
|
#
|
44
55
|
# @param [required, String] :active
|
45
56
|
#
|
46
|
-
# @param [required, Array<String>] :excludedStreamIds
|
57
|
+
# @param [required, Array<String>] :excludedStreamIds
|
47
58
|
#
|
48
59
|
# @return [Response]
|
49
60
|
#
|
50
61
|
# @see TODO: add docs link
|
51
62
|
#
|
52
|
-
def mute_multiple_streams(session_id:, **params)
|
53
|
-
|
63
|
+
def mute_multiple_streams(application_id: @config.application_id, session_id:, **params)
|
64
|
+
# TODO: raise error if application_id is nil
|
65
|
+
# TODO: camelcase params
|
66
|
+
|
67
|
+
request('/v2/project/' + application_id + '/session/' + session_id + '/mute', params: params, type: Post)
|
54
68
|
end
|
55
69
|
|
56
70
|
# TODO: add disable_force_mute ??
|
57
71
|
end
|
58
72
|
end
|
73
|
+
|
data/lib/vonage/video/signals.rb
CHANGED
@@ -25,8 +25,10 @@ module Vonage
|
|
25
25
|
#
|
26
26
|
# @see TODO: add docs link
|
27
27
|
#
|
28
|
-
def send_to_one(session_id:, connection_id:, **params)
|
29
|
-
|
28
|
+
def send_to_one(application_id: @config.application_id, session_id:, connection_id:, **params)
|
29
|
+
# TODO: raise error if application_id is nil
|
30
|
+
|
31
|
+
request('/v2/project/' + application_id + '/session/' + session_id + '/connection/' + connection_id + '/signal', params: params, type: Post)
|
30
32
|
end
|
31
33
|
|
32
34
|
# Send a signal to all participants in an active Vonage Video session.
|
@@ -43,8 +45,11 @@ module Vonage
|
|
43
45
|
#
|
44
46
|
# @see TODO: add docs link
|
45
47
|
#
|
46
|
-
def send_to_all(session_id:, **params)
|
47
|
-
|
48
|
+
def send_to_all(application_id: @config.application_id, session_id:, **params)
|
49
|
+
# TODO: raise error if application_id is nil
|
50
|
+
|
51
|
+
request('/v2/project/' + application_id + '/session/' + session_id + '/signal', params: params, type: Post)
|
48
52
|
end
|
49
53
|
end
|
50
54
|
end
|
55
|
+
|
data/lib/vonage/video/streams.rb
CHANGED
@@ -22,8 +22,10 @@ module Vonage
|
|
22
22
|
#
|
23
23
|
# @see TODO: add docs link
|
24
24
|
#
|
25
|
-
def list(session_id:)
|
26
|
-
|
25
|
+
def list(application_id: @config.application_id, session_id:)
|
26
|
+
# TODO: raise error if application_id is nil
|
27
|
+
|
28
|
+
request('/v2/project/' + application_id + '/session/' + session_id + '/stream', response_class: Video::ListResponse)
|
27
29
|
end
|
28
30
|
|
29
31
|
# Get information about a specified stream.
|
@@ -38,8 +40,10 @@ module Vonage
|
|
38
40
|
#
|
39
41
|
# @see TODO: add docs link
|
40
42
|
#
|
41
|
-
def info(session_id:, stream_id:)
|
42
|
-
|
43
|
+
def info(application_id: @config.application_id, session_id:, stream_id:)
|
44
|
+
# TODO: raise error if application_id is nil
|
45
|
+
|
46
|
+
request('/v2/project/' + application_id + '/session/' + session_id + '/stream/' + stream_id)
|
43
47
|
end
|
44
48
|
|
45
49
|
# Change the layout for a list of specified streams.
|
@@ -58,13 +62,15 @@ module Vonage
|
|
58
62
|
#
|
59
63
|
# @see TODO: add docs link
|
60
64
|
#
|
61
|
-
def change_layout(session_id:, **params)
|
65
|
+
def change_layout(application_id: @config.application_id, session_id:, **params)
|
66
|
+
# TODO: raise error if application_id is nil
|
62
67
|
# TODO camelcase layout_class_list
|
63
68
|
# if params[:items]
|
64
69
|
# params[:items] = params[:items].map {|item| camelcase(item)}
|
65
70
|
# end
|
66
71
|
|
67
|
-
request('/v2/project/' +
|
72
|
+
request('/v2/project/' + application_id + '/session/' + session_id + '/stream', params: params, type: Put)
|
68
73
|
end
|
69
74
|
end
|
70
75
|
end
|
76
|
+
|
data/lib/vonage/video.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
module Vonage
|
5
5
|
class Video < Namespace
|
6
6
|
include Keys
|
7
|
-
|
7
|
+
|
8
8
|
self.authentication = BearerToken
|
9
9
|
|
10
10
|
self.host = :video_host
|
@@ -30,7 +30,7 @@ module Vonage
|
|
30
30
|
#
|
31
31
|
def create_session(**params)
|
32
32
|
request_params = params.clone
|
33
|
-
request_params[:archive_mode] ||= 'manual'
|
33
|
+
request_params[:archive_mode] ||= 'manual'
|
34
34
|
media_mode = request_params.delete(:media_mode) || 'routed'
|
35
35
|
|
36
36
|
if media_mode == 'relayed' && request_params[:archive_mode] == 'manual'
|
@@ -42,7 +42,7 @@ module Vonage
|
|
42
42
|
response = request('/session/create', params: camelcase(request_params), type: Post)
|
43
43
|
|
44
44
|
public_response_data = {
|
45
|
-
session_id: response.entity
|
45
|
+
session_id: response.entity[:session_id],
|
46
46
|
archive_mode: request_params[:archive_mode],
|
47
47
|
media_mode: media_mode,
|
48
48
|
location: request_params[:location]
|
@@ -54,19 +54,7 @@ module Vonage
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def generate_client_token(session_id:, scope: 'session.connect', role: 'publisher', **params)
|
57
|
-
claims = {
|
58
|
-
application_id: @config.application_id,
|
59
|
-
scope: scope,
|
60
|
-
session_id: session_id,
|
61
|
-
role: role,
|
62
|
-
initial_layout_class_list: '',
|
63
|
-
sub: 'video',
|
64
|
-
acl: {
|
65
|
-
paths: {'/session/**' => {}}
|
66
|
-
}
|
67
|
-
}
|
68
|
-
|
69
|
-
|
57
|
+
claims = {session_id: session_id, application_id: @config.application_id, scope: scope, role: role}
|
70
58
|
claims[:data] = params[:data] if params[:data]
|
71
59
|
claims[:initial_layout_class_list] = params[:initial_layout_class_list].join(' ') if params[:initial_layout_class_list]
|
72
60
|
claims[:exp] = params[:expire_time].to_i if params[:expire_time]
|
@@ -74,36 +62,30 @@ module Vonage
|
|
74
62
|
JWT.generate(claims, @config.private_key)
|
75
63
|
end
|
76
64
|
|
77
|
-
# @return [
|
65
|
+
# @return [Streams]
|
78
66
|
#
|
79
|
-
def
|
80
|
-
@
|
67
|
+
def streams
|
68
|
+
@streams ||= Streams.new(@config)
|
81
69
|
end
|
82
70
|
|
83
|
-
# @return [
|
71
|
+
# @return [Archives]
|
84
72
|
#
|
85
|
-
def
|
86
|
-
@
|
73
|
+
def archives
|
74
|
+
@archives ||= Archives.new(@config)
|
87
75
|
end
|
88
76
|
|
89
|
-
# @return [
|
77
|
+
# @return [Archives]
|
90
78
|
#
|
91
79
|
def moderation
|
92
80
|
@moderation ||= Moderation.new(@config)
|
93
81
|
end
|
94
82
|
|
95
|
-
# @return [
|
83
|
+
# @return [Archives]
|
96
84
|
#
|
97
85
|
def signals
|
98
86
|
@signals ||= Signals.new(@config)
|
99
87
|
end
|
100
88
|
|
101
|
-
#
|
102
|
-
#
|
103
|
-
def streams
|
104
|
-
@streams ||= Streams.new(@config)
|
105
|
-
end
|
106
|
-
|
107
|
-
|
89
|
+
# TODO: add token generator
|
108
90
|
end
|
109
91
|
end
|
@@ -2,9 +2,9 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
require 'phonelib'
|
4
4
|
|
5
|
-
module Vonage
|
5
|
+
module Vonage
|
6
6
|
class Voice::Actions::Connect
|
7
|
-
attr_accessor :endpoint, :from, :eventType, :timeout, :limit, :machineDetection, :
|
7
|
+
attr_accessor :endpoint, :from, :eventType, :timeout, :limit, :machineDetection, :eventUrl, :eventMethod, :ringbackTone
|
8
8
|
|
9
9
|
def initialize(attributes = {})
|
10
10
|
@endpoint = attributes.fetch(:endpoint)
|
@@ -13,7 +13,6 @@ module Vonage
|
|
13
13
|
@timeout = attributes.fetch(:timeout, nil)
|
14
14
|
@limit = attributes.fetch(:limit, nil)
|
15
15
|
@machineDetection = attributes.fetch(:machineDetection, nil)
|
16
|
-
@advanced_machine_detection = attributes.fetch(:advanced_machine_detection, nil)
|
17
16
|
@eventUrl = attributes.fetch(:eventUrl, nil)
|
18
17
|
@eventMethod = attributes.fetch(:eventMethod, nil)
|
19
18
|
@ringbackTone = attributes.fetch(:ringbackTone, nil)
|
@@ -40,10 +39,6 @@ module Vonage
|
|
40
39
|
verify_machine_detection
|
41
40
|
end
|
42
41
|
|
43
|
-
if self.advanced_machine_detection
|
44
|
-
verify_advanced_machine_detection
|
45
|
-
end
|
46
|
-
|
47
42
|
if self.eventUrl
|
48
43
|
verify_event_url
|
49
44
|
end
|
@@ -87,25 +82,6 @@ module Vonage
|
|
87
82
|
raise ClientError.new("Invalid 'machineDetection' value, must be either: 'continue' or 'hangup' if defined") unless self.machineDetection == 'continue' || self.machineDetection == 'hangup'
|
88
83
|
end
|
89
84
|
|
90
|
-
def verify_advanced_machine_detection
|
91
|
-
raise ClientError.new("Invalid 'advanced_machine_detection' value, must be a Hash") unless self.advanced_machine_detection.is_a?(Hash)
|
92
|
-
verify_advanced_machine_detection_behavior if self.advanced_machine_detection[:behavior]
|
93
|
-
verify_advanced_machine_detection_mode if self.advanced_machine_detection[:mode]
|
94
|
-
verify_advanced_machine_detection_beep_timeout if self.advanced_machine_detection[:beep_timeout]
|
95
|
-
end
|
96
|
-
|
97
|
-
def verify_advanced_machine_detection_behavior
|
98
|
-
raise ClientError.new("Invalid 'advanced_machine_detection[:behavior]' value, must be a `continue` or `hangup`") unless ['continue', 'hangup'].include?(self.advanced_machine_detection[:behavior])
|
99
|
-
end
|
100
|
-
|
101
|
-
def verify_advanced_machine_detection_mode
|
102
|
-
raise ClientError.new("Invalid 'advanced_machine_detection[:mode]' value, must be a `detect` or `detect_beep`") unless ['detect', 'detect_beep'].include?(self.advanced_machine_detection[:mode])
|
103
|
-
end
|
104
|
-
|
105
|
-
def verify_advanced_machine_detection_beep_timeout
|
106
|
-
raise ClientError.new("Invalid 'advanced_machine_detection[:beep_timeout]' value, must be between 45 and 120") unless self.advanced_machine_detection[:beep_timeout].between?(45, 120)
|
107
|
-
end
|
108
|
-
|
109
85
|
def verify_event_url
|
110
86
|
uri = URI.parse(self.eventUrl)
|
111
87
|
|
@@ -220,4 +196,4 @@ module Vonage
|
|
220
196
|
}
|
221
197
|
end
|
222
198
|
end
|
223
|
-
end
|
199
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
# typed: true
|
2
|
+
# frozen_string_literal: true
|
3
|
+
module Vonage
|
4
|
+
class Voice::Actions::Pay
|
5
|
+
attr_accessor :amount, :currency, :eventUrl, :prompts, :voice
|
6
|
+
|
7
|
+
def initialize(attributes= {})
|
8
|
+
@amount = attributes.fetch(:amount)
|
9
|
+
@currency = attributes.fetch(:currency, nil)
|
10
|
+
@eventUrl = attributes.fetch(:eventUrl, nil)
|
11
|
+
@prompts = attributes.fetch(:prompts, nil)
|
12
|
+
@voice = attributes.fetch(:voice, nil)
|
13
|
+
|
14
|
+
after_initialize!
|
15
|
+
end
|
16
|
+
|
17
|
+
def action
|
18
|
+
create_pay!(self)
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_pay!(builder)
|
22
|
+
ncco = [
|
23
|
+
{
|
24
|
+
action: 'pay',
|
25
|
+
amount: builder.amount
|
26
|
+
}
|
27
|
+
]
|
28
|
+
|
29
|
+
ncco[0].merge!(currency: builder.currency) if builder.currency
|
30
|
+
ncco[0].merge!(eventUrl: builder.eventUrl) if builder.eventUrl
|
31
|
+
ncco[0].merge!(prompts: builder.prompts) if builder.prompts
|
32
|
+
ncco[0].merge!(voice: builder.voice) if builder.voice
|
33
|
+
|
34
|
+
ncco
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def after_initialize!
|
40
|
+
verify_amount
|
41
|
+
|
42
|
+
if self.eventUrl
|
43
|
+
verify_event_url
|
44
|
+
end
|
45
|
+
|
46
|
+
if self.prompts
|
47
|
+
verify_prompts
|
48
|
+
end
|
49
|
+
|
50
|
+
if self.voice
|
51
|
+
verify_voice
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def verify_amount
|
56
|
+
verify_amount_class
|
57
|
+
verify_amount_value
|
58
|
+
end
|
59
|
+
|
60
|
+
def verify_event_url
|
61
|
+
raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item") unless self.eventUrl.is_a?(Array)
|
62
|
+
|
63
|
+
uri = URI.parse(self.eventUrl[0])
|
64
|
+
|
65
|
+
raise ClientError.new("Invalid 'eventUrl' value, must be a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
66
|
+
end
|
67
|
+
|
68
|
+
def verify_prompts
|
69
|
+
verify_prompts_structure
|
70
|
+
verify_prompts_values
|
71
|
+
end
|
72
|
+
|
73
|
+
def verify_voice
|
74
|
+
verify_voice_structure
|
75
|
+
verify_voice_style if self.voice[:style]
|
76
|
+
end
|
77
|
+
|
78
|
+
def verify_amount_class
|
79
|
+
raise ClientError.new("Invalid 'amount' value, must be a float") unless self.amount.is_a?(Float)
|
80
|
+
end
|
81
|
+
|
82
|
+
def verify_amount_value
|
83
|
+
raise ClientError.new("Invalid 'amount' value, must be greater than 0") unless self.amount > 0
|
84
|
+
end
|
85
|
+
|
86
|
+
def verify_prompts_structure
|
87
|
+
raise ClientError.new("Invalid 'prompt', must be an array of at least one hash") unless self.prompts.is_a?(Array) && !self.prompts.empty? && self.prompts.all?(Hash)
|
88
|
+
end
|
89
|
+
|
90
|
+
def verify_prompts_values
|
91
|
+
self.prompts.each do |prompt|
|
92
|
+
prompt_keys = prompt.keys
|
93
|
+
[:type, :text, :errors].each do |key|
|
94
|
+
raise ClientError.new("Invalid 'prompt', '#{key}' is required") unless prompt_keys.include?(key)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def verify_voice_structure
|
100
|
+
raise ClientError.new("Expected 'voice' value to be a Hash") unless self.voice.is_a?(Hash)
|
101
|
+
end
|
102
|
+
|
103
|
+
def verify_voice_style
|
104
|
+
raise ClientError.new("Expected 'style' value to be an Integer") unless self.voice[:style].is_a?(Integer)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
module Vonage
|
4
4
|
class Voice::Actions::Talk
|
5
|
-
attr_accessor :text, :bargeIn, :loop, :level, :language, :style
|
5
|
+
attr_accessor :text, :bargeIn, :loop, :level, :language, :style
|
6
6
|
|
7
7
|
def initialize(attributes= {})
|
8
8
|
@text = attributes.fetch(:text)
|
@@ -11,7 +11,6 @@ module Vonage
|
|
11
11
|
@level = attributes.fetch(:level, nil)
|
12
12
|
@language = attributes.fetch(:language, nil)
|
13
13
|
@style = attributes.fetch(:style, nil)
|
14
|
-
@premium = attributes.fetch(:premium, nil)
|
15
14
|
|
16
15
|
after_initialize!
|
17
16
|
end
|
@@ -32,10 +31,6 @@ module Vonage
|
|
32
31
|
if self.style
|
33
32
|
verify_style
|
34
33
|
end
|
35
|
-
|
36
|
-
if self.premium
|
37
|
-
verify_premium
|
38
|
-
end
|
39
34
|
end
|
40
35
|
|
41
36
|
def verify_barge_in
|
@@ -54,10 +49,6 @@ module Vonage
|
|
54
49
|
raise ClientError.new("Expected 'style' value to be an Integer") unless self.style.is_a?(Integer)
|
55
50
|
end
|
56
51
|
|
57
|
-
def verify_premium
|
58
|
-
raise ClientError.new("Expected 'premium' value to be a Boolean") unless self.premium == true || self.premium == false
|
59
|
-
end
|
60
|
-
|
61
52
|
def action
|
62
53
|
create_talk!(self)
|
63
54
|
end
|
@@ -79,4 +70,4 @@ module Vonage
|
|
79
70
|
ncco
|
80
71
|
end
|
81
72
|
end
|
82
|
-
end
|
73
|
+
end
|
data/lib/vonage/voice/talk.rb
CHANGED
@@ -12,18 +12,8 @@ module Vonage
|
|
12
12
|
# @option params [required, String] :text
|
13
13
|
# The text to read.
|
14
14
|
#
|
15
|
-
# @option params [String] :language
|
16
|
-
# The language to use. See {https://developer.vonage.com/en/api/voice#startTalk-req-body} for a list of valid language codes.
|
17
|
-
#
|
18
|
-
# @option params [Integer] :style
|
19
|
-
# The vocal style, as identified by an assigned integer.
|
20
|
-
# See {https://developer.vonage.com/en/voice/voice-api/concepts/text-to-speech#supported-languages} for a list of available styles.
|
21
|
-
#
|
22
|
-
# @option params [Boolean] :premium
|
23
|
-
# Set to `true` to use the premium version of the specified style if available, otherwise the standard version will be used.
|
24
|
-
#
|
25
15
|
# @option params [String] :voice_name
|
26
|
-
# The voice & language to use.
|
16
|
+
# The voice & language to use.
|
27
17
|
#
|
28
18
|
# @option params [Integer] :loop
|
29
19
|
# The number of times to repeat the text the file, 0 for infinite.
|