vonage 7.26.0 → 7.27.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 +10 -13
- data/lib/vonage/meetings/applications.rb +3 -0
- data/lib/vonage/meetings/dial_in_numbers.rb +3 -0
- data/lib/vonage/meetings/recordings.rb +6 -0
- data/lib/vonage/meetings/rooms.rb +12 -0
- data/lib/vonage/meetings/sessions.rb +3 -0
- data/lib/vonage/meetings/themes.rb +21 -0
- data/lib/vonage/meetings.rb +12 -0
- data/lib/vonage/messaging/channels/rcs.rb +42 -0
- data/lib/vonage/messaging/message.rb +1 -0
- data/lib/vonage/messaging.rb +15 -1
- data/lib/vonage/numbers.rb +11 -11
- data/lib/vonage/proactive_connect/events.rb +3 -0
- data/lib/vonage/proactive_connect/item.rb +12 -0
- data/lib/vonage/proactive_connect/items.rb +9 -0
- data/lib/vonage/proactive_connect/list.rb +18 -0
- data/lib/vonage/proactive_connect/lists.rb +3 -0
- data/lib/vonage/proactive_connect.rb +10 -0
- data/lib/vonage/version.rb +1 -1
- data/lib/vonage/voice/actions/connect.rb +6 -2
- data/lib/vonage/voice/actions/conversation.rb +8 -2
- data/lib/vonage/voice/actions/input.rb +19 -3
- data/lib/vonage/voice/actions/notify.rb +8 -3
- data/lib/vonage/voice/actions/record.rb +52 -4
- data/lib/vonage/voice/actions/stream.rb +48 -4
- data/lib/vonage/voice/actions/talk.rb +45 -4
- data/lib/vonage.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ef29adae44fffb9754118333b6a82cac7172cb536eb2b4ec31644694c6388ef
|
4
|
+
data.tar.gz: 43496b6bcf0db687cdef8bdd4506db140fea685f48a306abc1aac4325f8300f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 055f8c7f7e0bcdc9eb8c59f0110b6bbfb850a1d725468f0e23d1e5bf736b5acdf3a9dfdbf0e17e0f4e5b54fabe6415173c2d8f39106b73ca336389f4f8483baa
|
7
|
+
data.tar.gz: 72ad26a1bf8696cd465ea2f89f7ab190803a29ee13dcb3680238504b9c81c6264dc444e2e12c0e078a19dd2042ea8fe31e8988e32162413325fa7be5a56444d4
|
data/README.md
CHANGED
@@ -83,7 +83,7 @@ client = Vonage::Client.new(application_id: application_id, private_key: private
|
|
83
83
|
```
|
84
84
|
|
85
85
|
Both arguments should have string values corresponding to the `id` and `private_key`
|
86
|
-
values returned in a ["create an application"](https://developer.
|
86
|
+
values returned in a ["create an application"](https://developer.vonage.com/api/application.v2#createApplication)
|
87
87
|
response. These credentials can be stored in a datastore, in environment variables,
|
88
88
|
on disk outside of source control, or in some kind of key management infrastructure.
|
89
89
|
|
@@ -104,8 +104,8 @@ token = Vonage::JWT.generate(claims)
|
|
104
104
|
client = Vonage::Client.new(token: token)
|
105
105
|
```
|
106
106
|
|
107
|
-
Documentation for the Vonage Ruby JWT generator gem can be found at
|
108
|
-
|
107
|
+
Documentation for the Vonage Ruby JWT generator gem can be found at: https://www.rubydoc.info/gems/vonage-jwt
|
108
|
+
|
109
109
|
The documentation outlines all the possible parameters you can use to customize and build a token with.
|
110
110
|
|
111
111
|
### Logging
|
@@ -179,9 +179,6 @@ client = Vonage::Client.new(
|
|
179
179
|
|
180
180
|
By default the hosts are set to `api.nexmo.com` and `rest.nexmo.com`, respectively.
|
181
181
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
182
|
### Webhook signatures
|
186
183
|
|
187
184
|
Certain Vonage APIs provide signed [webhooks](https://developer.vonage.com/en/getting-started/concepts/webhooks) as a means of verifying the origin of the webhooks. The exact signing mechanism varies depending on the API.
|
@@ -300,10 +297,10 @@ Vonage APIs paginate list requests. This means that if a collection is requested
|
|
300
297
|
|
301
298
|
The `auto_advance` parameter is set to a default of `true` for the following APIs:
|
302
299
|
|
303
|
-
* [Account API](https://developer.
|
304
|
-
* [Application API](https://developer.
|
305
|
-
* [Conversation API](https://developer.
|
306
|
-
* [Voice API](https://developer.
|
300
|
+
* [Account API](https://developer.vonage.com/api/developer/account)
|
301
|
+
* [Application API](https://developer.vonage.com/api/application.v2)
|
302
|
+
* [Conversation API](https://developer.vonage.com/api/conversation)
|
303
|
+
* [Voice API](https://developer.vonage.com/api/voice)
|
307
304
|
|
308
305
|
To modify the `auto_advance` behavior you can specify it in your method:
|
309
306
|
|
@@ -314,7 +311,7 @@ client.applications.list(auto_advance: false)
|
|
314
311
|
|
315
312
|
## Messages API
|
316
313
|
|
317
|
-
The [Vonage Messages API](https://developer.vonage.com/messages/overview) allows you to send messages over a number of different channels, and various message types within each channel. See the Vonage Developer Documentation for a [complete API reference](https://developer.vonage.com/api/messages
|
314
|
+
The [Vonage Messages API](https://developer.vonage.com/messages/overview) allows you to send messages over a number of different channels, and various message types within each channel. See the Vonage Developer Documentation for a [complete API reference](https://developer.vonage.com/en/api/messages) listing all the channel and message type combinations.
|
318
315
|
|
319
316
|
The Ruby SDK allows you to construct message data for specific messaging channels. Other than SMS (which has only one type -- text), you need to pass the message `:type` as well as the `:message` itself as arguments to the appropriate messages method, along with any optional properties if needed.
|
320
317
|
|
@@ -513,11 +510,11 @@ response = client.voice.create({
|
|
513
510
|
|
514
511
|
## Documentation
|
515
512
|
|
516
|
-
Vonage Ruby SDK documentation: https://www.rubydoc.info/
|
513
|
+
Vonage Ruby SDK documentation: https://www.rubydoc.info/gems/vonage
|
517
514
|
|
518
515
|
Vonage Ruby SDK code examples: https://github.com/Vonage/vonage-ruby-code-snippets
|
519
516
|
|
520
|
-
Vonage APIs API reference: https://developer.
|
517
|
+
Vonage APIs API reference: https://developer.vonage.com/api
|
521
518
|
|
522
519
|
## Supported APIs
|
523
520
|
|
@@ -13,12 +13,15 @@ module Vonage
|
|
13
13
|
|
14
14
|
# Update an existing application.
|
15
15
|
#
|
16
|
+
# @deprecated
|
17
|
+
#
|
16
18
|
# @param [required, String] :default_theme_id The id of the theme to set as application default theme
|
17
19
|
#
|
18
20
|
# @return [Response]
|
19
21
|
#
|
20
22
|
# @see https://developer.vonage.com/en/api/meetings#updateApplication
|
21
23
|
def update(default_theme_id:)
|
24
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
22
25
|
request("/v1/meetings/applications", params: {update_details: {default_theme_id: default_theme_id}}, type: Patch)
|
23
26
|
end
|
24
27
|
end
|
@@ -13,10 +13,13 @@ module Vonage
|
|
13
13
|
|
14
14
|
# Get numbers that can be used to dial into a meeting.
|
15
15
|
#
|
16
|
+
# @deprecated
|
17
|
+
#
|
16
18
|
# @return [ListResponse]
|
17
19
|
#
|
18
20
|
# @see https://developer.vonage.com/en/api/meetings#getDialInNumbers
|
19
21
|
def list
|
22
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
20
23
|
request("/v1/meetings/dial-in-numbers", response_class: ListResponse)
|
21
24
|
end
|
22
25
|
end
|
@@ -13,23 +13,29 @@ module Vonage
|
|
13
13
|
|
14
14
|
# Return information for specified recording.
|
15
15
|
#
|
16
|
+
# @deprecated
|
17
|
+
#
|
16
18
|
# @param [required, String] recording_id The id of the recoring for which the info should be returned
|
17
19
|
#
|
18
20
|
# @return [Response]
|
19
21
|
#
|
20
22
|
# @see https://developer.vonage.com/en/api/meetings#getRecording
|
21
23
|
def info(recording_id:)
|
24
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
22
25
|
request("/v1/meetings/recordings/" + recording_id)
|
23
26
|
end
|
24
27
|
|
25
28
|
# Delete a specified recording.
|
26
29
|
#
|
30
|
+
# @deprecated
|
31
|
+
#
|
27
32
|
# @param [required, String] recording_id The id of the recoring to be deleted
|
28
33
|
#
|
29
34
|
# @return [Response]
|
30
35
|
#
|
31
36
|
# @see https://developer.vonage.com/en/api/meetings#deleteRecording
|
32
37
|
def delete(recording_id:)
|
38
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
33
39
|
request("/v1/meetings/recordings/" + recording_id, type: Delete)
|
34
40
|
end
|
35
41
|
end
|
@@ -13,6 +13,8 @@ module Vonage
|
|
13
13
|
|
14
14
|
# Get a list of rooms associated with the Vonage application.
|
15
15
|
#
|
16
|
+
# @deprecated
|
17
|
+
#
|
16
18
|
# @param [optional, Integer] :start_id
|
17
19
|
#
|
18
20
|
# @param [optional, Integer] :end_id
|
@@ -23,6 +25,7 @@ module Vonage
|
|
23
25
|
#
|
24
26
|
# @see https://developer.vonage.com/en/api/meetings#getRooms
|
25
27
|
def list(**params)
|
28
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
26
29
|
path = "/v1/meetings/rooms"
|
27
30
|
path += "?#{Params.encode(params)}" unless params.empty?
|
28
31
|
|
@@ -31,6 +34,8 @@ module Vonage
|
|
31
34
|
|
32
35
|
# Return information for specified room.
|
33
36
|
#
|
37
|
+
# @deprecated
|
38
|
+
#
|
34
39
|
# @param [required, String] room_id
|
35
40
|
# The id of the room for which the info should be returned
|
36
41
|
#
|
@@ -38,11 +43,14 @@ module Vonage
|
|
38
43
|
#
|
39
44
|
# @see https://developer.vonage.com/en/api/meetings#getRoom
|
40
45
|
def info(room_id:)
|
46
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
41
47
|
request("/v1/meetings/rooms/" + room_id)
|
42
48
|
end
|
43
49
|
|
44
50
|
# Create a new room.
|
45
51
|
#
|
52
|
+
# @deprecated
|
53
|
+
#
|
46
54
|
# @param [required, String] :display_name
|
47
55
|
#
|
48
56
|
# @param [optional, String] :metadata
|
@@ -95,6 +103,7 @@ module Vonage
|
|
95
103
|
#
|
96
104
|
# @see https://developer.vonage.com/en/api/meetings#createRoom
|
97
105
|
def create(display_name:, **params)
|
106
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
98
107
|
request(
|
99
108
|
"/v1/meetings/rooms",
|
100
109
|
params: params.merge({ display_name: display_name }),
|
@@ -106,6 +115,8 @@ module Vonage
|
|
106
115
|
# Although paramaters (other than `room_id`) are optional, at least one other parameter must be provided or an error
|
107
116
|
# response will be received.
|
108
117
|
#
|
118
|
+
# @deprecated
|
119
|
+
#
|
109
120
|
# @param [required, String] room_id The ID of the Room to be updated
|
110
121
|
#
|
111
122
|
# @param [optional, String(date)] :expires_at
|
@@ -142,6 +153,7 @@ module Vonage
|
|
142
153
|
#
|
143
154
|
# @see https://developer.vonage.com/en/api/meetings#updateRoom
|
144
155
|
def update(room_id:, **params)
|
156
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
145
157
|
raise ArgumentError, 'must provide at least one other param in addition to :room_id' if params.empty?
|
146
158
|
request(
|
147
159
|
"/v1/meetings/rooms/" + room_id,
|
@@ -13,12 +13,15 @@ module Vonage
|
|
13
13
|
|
14
14
|
# Return a list of recordings for a specified session.
|
15
15
|
#
|
16
|
+
# @deprecated
|
17
|
+
#
|
16
18
|
# @param [required, String] session_id The id of the session for which the recordings list should be returned
|
17
19
|
#
|
18
20
|
# @return [ListResponse]
|
19
21
|
#
|
20
22
|
# @see https://developer.vonage.com/en/api/meetings#getSessionRecordings
|
21
23
|
def list_recordings(session_id:)
|
24
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
22
25
|
request(
|
23
26
|
"/v1/meetings/sessions/" + session_id + "/recordings",
|
24
27
|
response_class: ListResponse
|
@@ -13,26 +13,34 @@ module Vonage
|
|
13
13
|
|
14
14
|
# Get a list of themes associated with the Vonage application.
|
15
15
|
#
|
16
|
+
# @deprecated
|
17
|
+
#
|
16
18
|
# @return [ListResponse]
|
17
19
|
#
|
18
20
|
# @see https://developer.vonage.com/en/api/meetings#getThemes
|
19
21
|
def list
|
22
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
20
23
|
request("/v1/meetings/themes", response_class: ListResponse)
|
21
24
|
end
|
22
25
|
|
23
26
|
# Return information for specified theme.
|
24
27
|
#
|
28
|
+
# @deprecated
|
29
|
+
#
|
25
30
|
# @param [required, String] theme_id The id of the theme for which the info should be returned
|
26
31
|
#
|
27
32
|
# @return [Response]
|
28
33
|
#
|
29
34
|
# @see https://developer.vonage.com/en/api/meetings#getThemeById
|
30
35
|
def info(theme_id:)
|
36
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
31
37
|
request("/v1/meetings/themes/" + theme_id)
|
32
38
|
end
|
33
39
|
|
34
40
|
# Create a new theme.
|
35
41
|
#
|
42
|
+
# @deprecated
|
43
|
+
#
|
36
44
|
# @param [required, String] :main_color
|
37
45
|
# The main color that will be used for the meeting room.
|
38
46
|
#
|
@@ -49,6 +57,7 @@ module Vonage
|
|
49
57
|
#
|
50
58
|
# @see https://developer.vonage.com/en/api/meetings#createTheme
|
51
59
|
def create(main_color:, brand_text:, **params)
|
60
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
52
61
|
request(
|
53
62
|
"/v1/meetings/themes",
|
54
63
|
params: params.merge(main_color: main_color, brand_text: brand_text),
|
@@ -58,6 +67,8 @@ module Vonage
|
|
58
67
|
|
59
68
|
# Update an existing theme.
|
60
69
|
#
|
70
|
+
# @deprecated
|
71
|
+
#
|
61
72
|
# @param [required, String] theme_id The id of the theme to be updated
|
62
73
|
#
|
63
74
|
# @param [required, String] :main_color
|
@@ -76,6 +87,7 @@ module Vonage
|
|
76
87
|
#
|
77
88
|
# @see https://developer.vonage.com/en/api/meetings#updateTheme
|
78
89
|
def update(theme_id:, **params)
|
90
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
79
91
|
request(
|
80
92
|
"/v1/meetings/themes/" + theme_id,
|
81
93
|
params: {
|
@@ -87,6 +99,8 @@ module Vonage
|
|
87
99
|
|
88
100
|
# Delete an existing theme.
|
89
101
|
#
|
102
|
+
# @deprecated
|
103
|
+
#
|
90
104
|
# @param [required, String] :theme_id The id of the theme to be deleted
|
91
105
|
#
|
92
106
|
# @param [optional, Boolean] :force. Set to `true` to force delete a theme currently being used for a room, or as
|
@@ -96,6 +110,7 @@ module Vonage
|
|
96
110
|
#
|
97
111
|
# @see https://developer.vonage.com/en/api/meetings#deleteTheme
|
98
112
|
def delete(theme_id:, force: false)
|
113
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
99
114
|
request(
|
100
115
|
"/v1/meetings/themes/" + theme_id + "?force=#{force}",
|
101
116
|
type: Delete
|
@@ -104,6 +119,8 @@ module Vonage
|
|
104
119
|
|
105
120
|
# Get a list of rooms that are associated with a theme id.
|
106
121
|
#
|
122
|
+
# @deprecated
|
123
|
+
#
|
107
124
|
# @param [required, String] theme_id THe ID of the theme to search for rooms associated with.
|
108
125
|
#
|
109
126
|
# @param [optional, Integer] :start_id
|
@@ -116,6 +133,7 @@ module Vonage
|
|
116
133
|
#
|
117
134
|
# @see https://developer.vonage.com/en/api/meetings#getRoomsByThemeId
|
118
135
|
def list_rooms(theme_id:, **params)
|
136
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
119
137
|
path = "/v1/meetings/themes/" + theme_id + "/rooms"
|
120
138
|
path += "?#{Params.encode(params)}" unless params.empty?
|
121
139
|
|
@@ -124,6 +142,8 @@ module Vonage
|
|
124
142
|
|
125
143
|
# Set a logo for a theme.
|
126
144
|
#
|
145
|
+
# @deprecated
|
146
|
+
#
|
127
147
|
# @param [required, String] :theme_id The ID of the theme for which the logo should be set
|
128
148
|
#
|
129
149
|
# @param [required, String] :filepath
|
@@ -146,6 +166,7 @@ module Vonage
|
|
146
166
|
#
|
147
167
|
# TODO: add type signature
|
148
168
|
def set_logo(theme_id:, filepath:, logo_type:)
|
169
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
149
170
|
pn = Pathname.new(filepath)
|
150
171
|
valid_logo_types = ['white', 'colored', 'favicon']
|
151
172
|
raise ArgumentError, ':filepath not for a file' unless pn.file?
|
data/lib/vonage/meetings.rb
CHANGED
@@ -5,33 +5,45 @@ module Vonage
|
|
5
5
|
class Meetings < Namespace
|
6
6
|
extend T::Sig
|
7
7
|
|
8
|
+
# @deprecated
|
8
9
|
sig { returns(T.nilable(Vonage::Meetings::Rooms)) }
|
9
10
|
def rooms
|
11
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
10
12
|
@rooms ||= Rooms.new(@config)
|
11
13
|
end
|
12
14
|
|
15
|
+
# @deprecated
|
13
16
|
sig { returns(T.nilable(Vonage::Meetings::Recordings)) }
|
14
17
|
def recordings
|
18
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
15
19
|
@recordings ||= Recordings.new(@config)
|
16
20
|
end
|
17
21
|
|
22
|
+
# @deprecated
|
18
23
|
sig { returns(T.nilable(Vonage::Meetings::Sessions)) }
|
19
24
|
def sessions
|
25
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
20
26
|
@sessions ||= Sessions.new(@config)
|
21
27
|
end
|
22
28
|
|
29
|
+
# @deprecated
|
23
30
|
sig { returns(T.nilable(Vonage::Meetings::Themes)) }
|
24
31
|
def themes
|
32
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
25
33
|
@themes ||= Themes.new(@config)
|
26
34
|
end
|
27
35
|
|
36
|
+
# @deprecated
|
28
37
|
sig { returns(T.nilable(Vonage::Meetings::Applications)) }
|
29
38
|
def applications
|
39
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
30
40
|
@applications ||= Applications.new(@config)
|
31
41
|
end
|
32
42
|
|
43
|
+
# @deprecated
|
33
44
|
sig { returns(T.nilable(Vonage::Meetings::DialInNumbers)) }
|
34
45
|
def dial_in_numbers
|
46
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
35
47
|
@dial_in_numbers ||= DialInNumbers.new(@config)
|
36
48
|
end
|
37
49
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
module Vonage
|
4
|
+
class Messaging::Channels::RCS < Messaging::Message
|
5
|
+
MESSAGE_TYPES = ['text', 'image', 'video', 'file', 'custom']
|
6
|
+
|
7
|
+
attr_reader :data
|
8
|
+
|
9
|
+
def initialize(attributes = {})
|
10
|
+
@type = attributes.fetch(:type, nil)
|
11
|
+
@message = attributes.fetch(:message, nil)
|
12
|
+
@opts = attributes.fetch(:opts, {})
|
13
|
+
@data = {}
|
14
|
+
|
15
|
+
after_initialize!
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def build
|
21
|
+
data[:channel] = 'rcs'
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
def verify_type
|
26
|
+
raise ClientError.new("Invalid message type") unless MESSAGE_TYPES.include?(type)
|
27
|
+
end
|
28
|
+
|
29
|
+
def verify_message
|
30
|
+
case type
|
31
|
+
when 'text'
|
32
|
+
raise Vonage::ClientError.new("Invalid parameter type. `:message` must be a String") unless message.is_a? String
|
33
|
+
when 'custom'
|
34
|
+
raise Vonage::ClientError.new("Invalid parameter type. `:message` must be a Hash") unless message.is_a? Hash
|
35
|
+
raise Vonage::ClientError.new("Invalid parameter content. `:message` must not be empty") if message.empty?
|
36
|
+
else
|
37
|
+
raise Vonage::ClientError.new("Invalid parameter type. `:message` must be a Hash") unless message.is_a? Hash
|
38
|
+
raise Vonage::ClientError.new("Missing parameter. `:message` must contain a `:url` key") unless message[:url]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -5,6 +5,7 @@ module Vonage
|
|
5
5
|
CHANNELS = {
|
6
6
|
sms: Vonage::Messaging::Channels::SMS,
|
7
7
|
mms: Vonage::Messaging::Channels::MMS,
|
8
|
+
rcs: Vonage::Messaging::Channels::RCS,
|
8
9
|
whatsapp: Vonage::Messaging::Channels::WhatsApp,
|
9
10
|
messenger: Vonage::Messaging::Channels::Messenger,
|
10
11
|
viber: Vonage::Messaging::Channels::Viber
|
data/lib/vonage/messaging.rb
CHANGED
@@ -25,12 +25,26 @@ module Vonage
|
|
25
25
|
# @option params [required, Hash] **message
|
26
26
|
# The Vonage Message object to use for this message.
|
27
27
|
#
|
28
|
-
# @see https://developer.vonage.com/api/messages
|
28
|
+
# @see https://developer.vonage.com/api/messages#SendMessage
|
29
29
|
#
|
30
30
|
def send(to:, from:, **message)
|
31
31
|
request('/v1/messages', params: {to: to, from: from, **message}, type: Post)
|
32
32
|
end
|
33
33
|
|
34
|
+
# Update a Message Object.
|
35
|
+
#
|
36
|
+
# @example
|
37
|
+
# message = client.messaging.update(message_uuid: "aaaaaaaa-bbbb-4ccc-8ddd-0123456789ab", status: "read")
|
38
|
+
#
|
39
|
+
# @option params [required, String] :message_uuid. the UUID of the message to update.
|
40
|
+
#
|
41
|
+
# `:message_uuid` is always required. Other parameters will depend on the message channel and the specific action being performed.
|
42
|
+
# @see https://developer.vonage.com/api/messages#UpdateMessage
|
43
|
+
#
|
44
|
+
def update(message_uuid:, **params)
|
45
|
+
request("/v1/messages/#{message_uuid}", params: params, type: Patch)
|
46
|
+
end
|
47
|
+
|
34
48
|
# Validate a JSON Web Token from a Messages API Webhook.
|
35
49
|
#
|
36
50
|
# @param [String, required] :token The JWT from the Webhook's Authorization header
|
data/lib/vonage/numbers.rb
CHANGED
@@ -17,6 +17,8 @@ module Vonage
|
|
17
17
|
# puts "#{item.msisdn} #{item.country} #{item.type}"
|
18
18
|
# end
|
19
19
|
#
|
20
|
+
# @param [Hash] params
|
21
|
+
#
|
20
22
|
# @option params [String] :application_id
|
21
23
|
# The application that you want to return the numbers for.
|
22
24
|
#
|
@@ -47,8 +49,6 @@ module Vonage
|
|
47
49
|
# Set this to `true` to auto-advance through all the pages in the record
|
48
50
|
# and collect all the data. The default is `false`.
|
49
51
|
#
|
50
|
-
# @param [Hash] params
|
51
|
-
#
|
52
52
|
# @return [ListResponse]
|
53
53
|
#
|
54
54
|
# @see https://developer.nexmo.com/api/developer/numbers#getOwnedNumbers
|
@@ -65,6 +65,8 @@ module Vonage
|
|
65
65
|
# puts "#{item.msisdn} #{item.type} #{item.cost}"
|
66
66
|
# end
|
67
67
|
#
|
68
|
+
# @param [Hash] params
|
69
|
+
#
|
68
70
|
# @option params [required, String] :country
|
69
71
|
# The two character country code in ISO 3166-1 alpha-2 format.
|
70
72
|
#
|
@@ -82,7 +84,7 @@ module Vonage
|
|
82
84
|
# - `2` - Search for numbers that end with **:pattern**
|
83
85
|
#
|
84
86
|
# @option params [String] :features
|
85
|
-
# Available features are `SMS` and `VOICE`.
|
87
|
+
# Available features are `SMS`, `MMS`, and `VOICE`.
|
86
88
|
# To look for numbers that support both, use a comma-separated value: `SMS,VOICE`.
|
87
89
|
#
|
88
90
|
# @option params [Integer] :size
|
@@ -95,8 +97,6 @@ module Vonage
|
|
95
97
|
# Set this to `true` to auto-advance through all the pages in the record
|
96
98
|
# and collect all the data. The default is `false`.
|
97
99
|
#
|
98
|
-
# @param [Hash] params
|
99
|
-
#
|
100
100
|
# @return [ListResponse]
|
101
101
|
#
|
102
102
|
# @see https://developer.nexmo.com/api/developer/numbers#getAvailableNumbers
|
@@ -110,6 +110,8 @@ module Vonage
|
|
110
110
|
# @example
|
111
111
|
# response = client.numbers.buy(country: 'GB', msisdn: '447700900000')
|
112
112
|
#
|
113
|
+
# @param [Hash] params
|
114
|
+
#
|
113
115
|
# @option params [required, String] :country
|
114
116
|
# The two character country code in ISO 3166-1 alpha-2 format.
|
115
117
|
#
|
@@ -120,8 +122,6 @@ module Vonage
|
|
120
122
|
# If you'd like to perform an action on a subaccount, provide the `api_key` of that account here.
|
121
123
|
# If you'd like to perform an action on your own account, you do not need to provide this field.
|
122
124
|
#
|
123
|
-
# @param [Hash] params
|
124
|
-
#
|
125
125
|
# @return [Response]
|
126
126
|
#
|
127
127
|
# @see https://developer.nexmo.com/api/developer/numbers#buyANumber
|
@@ -140,6 +140,8 @@ module Vonage
|
|
140
140
|
# @example
|
141
141
|
# response = client.numbers.cancel(country: 'GB', msisdn: '447700900000')
|
142
142
|
#
|
143
|
+
# @param [Hash] params
|
144
|
+
#
|
143
145
|
# @option params [required, String] :country
|
144
146
|
# The two character country code in ISO 3166-1 alpha-2 format.
|
145
147
|
#
|
@@ -150,8 +152,6 @@ module Vonage
|
|
150
152
|
# If you'd like to perform an action on a subaccount, provide the `api_key` of that account here.
|
151
153
|
# If you'd like to perform an action on your own account, you do not need to provide this field.
|
152
154
|
#
|
153
|
-
# @param [Hash] params
|
154
|
-
#
|
155
155
|
# @return [Response]
|
156
156
|
#
|
157
157
|
# @see https://developer.nexmo.com/api/developer/numbers#cancelANumber
|
@@ -177,6 +177,8 @@ module Vonage
|
|
177
177
|
#
|
178
178
|
# response = client.numbers.update(params)
|
179
179
|
#
|
180
|
+
# @param [Hash] params
|
181
|
+
#
|
180
182
|
# @option params [required, String] :country
|
181
183
|
# The two character country code in ISO 3166-1 alpha-2 format.
|
182
184
|
#
|
@@ -203,8 +205,6 @@ module Vonage
|
|
203
205
|
# @option params [String] :voice_status_callback
|
204
206
|
# A webhook URI for Vonage to send a request to when a call ends.
|
205
207
|
#
|
206
|
-
# @param [Hash] params
|
207
|
-
#
|
208
208
|
# @return [Response]
|
209
209
|
#
|
210
210
|
# @see https://developer.nexmo.com/api/developer/numbers#updateANumber
|
@@ -11,6 +11,8 @@ module Vonage
|
|
11
11
|
|
12
12
|
# Find all events
|
13
13
|
#
|
14
|
+
# @deprecated
|
15
|
+
#
|
14
16
|
# @example
|
15
17
|
# response = proactive_connect.events.list
|
16
18
|
#
|
@@ -59,6 +61,7 @@ module Vonage
|
|
59
61
|
# @see https://developer.vonage.com/en/api/proactive-connect#eventsFindAll
|
60
62
|
#
|
61
63
|
def list(**params)
|
64
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
62
65
|
path = "/v0.1/bulk/events"
|
63
66
|
path += "?#{Params.encode(params)}" unless params.empty?
|
64
67
|
|
@@ -13,6 +13,8 @@ module Vonage
|
|
13
13
|
|
14
14
|
# Create a list item
|
15
15
|
#
|
16
|
+
# @deprecated
|
17
|
+
#
|
16
18
|
# @example
|
17
19
|
# response = proactive_connect.item.create(list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865', data: {name: 'Joe Bloggs', email: 'joe@email.com'})
|
18
20
|
#
|
@@ -25,6 +27,7 @@ module Vonage
|
|
25
27
|
# @see https://developer.vonage.com/en/api/proactive-connect#itemsCreate
|
26
28
|
#
|
27
29
|
def create(list_id:, data:)
|
30
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
28
31
|
raise ArgumentError.new(":data must be a Hash") unless data.is_a? Hash
|
29
32
|
request(
|
30
33
|
"/v0.1/bulk/lists/#{list_id}/items",
|
@@ -35,6 +38,8 @@ module Vonage
|
|
35
38
|
|
36
39
|
# Get list item by id
|
37
40
|
#
|
41
|
+
# @deprecated
|
42
|
+
#
|
38
43
|
# @example
|
39
44
|
# response = proactive_connect.item.find(list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865', item_id: 'd97ebf20-e4de-4e50-921a-7bb4dceb373a')
|
40
45
|
#
|
@@ -47,11 +52,14 @@ module Vonage
|
|
47
52
|
# @see https://developer.vonage.com/en/api/proactive-connect#itemsGet
|
48
53
|
#
|
49
54
|
def find(list_id:, item_id:)
|
55
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
50
56
|
request("/v0.1/bulk/lists/#{list_id}/items/#{item_id}")
|
51
57
|
end
|
52
58
|
|
53
59
|
# Update list item
|
54
60
|
#
|
61
|
+
# @deprecated
|
62
|
+
#
|
55
63
|
# @example
|
56
64
|
# response = proactive_connect.item.create(
|
57
65
|
# list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865',
|
@@ -73,6 +81,7 @@ module Vonage
|
|
73
81
|
# @see https://developer.vonage.com/en/api/proactive-connect#itemsUpdate
|
74
82
|
#
|
75
83
|
def update(list_id:, item_id:, data:)
|
84
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
76
85
|
raise ArgumentError.new(":data must be a Hash") unless data.is_a? Hash
|
77
86
|
request(
|
78
87
|
"/v0.1/bulk/lists/#{list_id}/items/#{item_id}",
|
@@ -83,6 +92,8 @@ module Vonage
|
|
83
92
|
|
84
93
|
# Delete list item
|
85
94
|
#
|
95
|
+
# @deprecated
|
96
|
+
#
|
86
97
|
# @example
|
87
98
|
# response = proactive_connect.item.delete(list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865', item_id: 'd97ebf20-e4de-4e50-921a-7bb4dceb373a')
|
88
99
|
#
|
@@ -95,6 +106,7 @@ module Vonage
|
|
95
106
|
# @see https://developer.vonage.com/en/api/proactive-connect#itemsDelete
|
96
107
|
#
|
97
108
|
def delete(list_id:, item_id:)
|
109
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
98
110
|
request(
|
99
111
|
"/v0.1/bulk/lists/#{list_id}/items/#{item_id}",
|
100
112
|
type: Delete
|
@@ -11,6 +11,8 @@ module Vonage
|
|
11
11
|
|
12
12
|
# Find all list items
|
13
13
|
#
|
14
|
+
# @deprecated
|
15
|
+
#
|
14
16
|
# @example
|
15
17
|
# response = proactive_connect.items.list(list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865')
|
16
18
|
#
|
@@ -29,6 +31,7 @@ module Vonage
|
|
29
31
|
# @see https://developer.vonage.com/en/api/proactive-connect#itemsFindAll
|
30
32
|
#
|
31
33
|
def list(list_id:, **params)
|
34
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
32
35
|
path = "/v0.1/bulk/lists/#{list_id}/items"
|
33
36
|
path += "?#{Params.encode(params)}" unless params.empty?
|
34
37
|
|
@@ -37,6 +40,8 @@ module Vonage
|
|
37
40
|
|
38
41
|
# Download list items as a CSV file format
|
39
42
|
#
|
43
|
+
# @deprecated
|
44
|
+
#
|
40
45
|
# @example
|
41
46
|
# response = proactive_connect.items.download_csv(list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865')
|
42
47
|
#
|
@@ -64,6 +69,7 @@ module Vonage
|
|
64
69
|
# @see https://developer.vonage.com/en/api/proactive-connect#itemsDownload
|
65
70
|
#
|
66
71
|
def download_csv(list_id:, order: 'asc', **params)
|
72
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
67
73
|
response = request("/v0.1/bulk/lists/#{list_id}/items/download?order=#{order}", response_class: FileResponse)
|
68
74
|
|
69
75
|
response.filename = params[:filename] if params[:filename]
|
@@ -74,6 +80,8 @@ module Vonage
|
|
74
80
|
|
75
81
|
# Import list items from a CSV file
|
76
82
|
#
|
83
|
+
# @deprecated
|
84
|
+
#
|
77
85
|
# @example
|
78
86
|
# response = proactive_connect.items.upload_csv(list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865', filepath: '/files/import.csv')
|
79
87
|
#
|
@@ -96,6 +104,7 @@ module Vonage
|
|
96
104
|
# @see https://developer.vonage.com/en/api/proactive-connect#itemsImport
|
97
105
|
#
|
98
106
|
def upload_csv(list_id:, filepath:)
|
107
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
99
108
|
pn = Pathname.new(filepath)
|
100
109
|
raise ArgumentError, ':filepath not for a file' unless pn.file?
|
101
110
|
raise ArgumentError, 'file at :filepath not readable' unless pn.readable?
|
@@ -13,6 +13,8 @@ module Vonage
|
|
13
13
|
|
14
14
|
# Create list
|
15
15
|
#
|
16
|
+
# @deprecated
|
17
|
+
#
|
16
18
|
# @example
|
17
19
|
# response = proactive_connect.list.create(name: 'List Number 1')
|
18
20
|
#
|
@@ -47,6 +49,7 @@ module Vonage
|
|
47
49
|
# @see https://developer.vonage.com/en/api/proactive-connect#listsCreate
|
48
50
|
#
|
49
51
|
def create(name:, **params)
|
52
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
50
53
|
request(
|
51
54
|
"/v0.1/bulk/lists",
|
52
55
|
params: params.merge({ name: name }),
|
@@ -56,6 +59,8 @@ module Vonage
|
|
56
59
|
|
57
60
|
# Get list by id
|
58
61
|
#
|
62
|
+
# @deprecated
|
63
|
+
#
|
59
64
|
# @example
|
60
65
|
# response = proactive_connect.list.find(id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865')
|
61
66
|
#
|
@@ -65,11 +70,14 @@ module Vonage
|
|
65
70
|
# @see https://developer.vonage.com/en/api/proactive-connect#listsGet
|
66
71
|
#
|
67
72
|
def find(id:)
|
73
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
68
74
|
request("/v0.1/bulk/lists/#{id}")
|
69
75
|
end
|
70
76
|
|
71
77
|
# Update list
|
72
78
|
#
|
79
|
+
# @deprecated
|
80
|
+
#
|
73
81
|
# @example
|
74
82
|
# response = proactive_connect.list.update(name: 'List Number 1')
|
75
83
|
#
|
@@ -107,6 +115,7 @@ module Vonage
|
|
107
115
|
# @see https://developer.vonage.com/en/api/proactive-connect#listsUpdate
|
108
116
|
#
|
109
117
|
def update(id:, name:, **params)
|
118
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
110
119
|
request(
|
111
120
|
"/v0.1/bulk/lists/#{id}",
|
112
121
|
params: params.merge({ name: name }),
|
@@ -116,6 +125,8 @@ module Vonage
|
|
116
125
|
|
117
126
|
# Delete a list by id
|
118
127
|
#
|
128
|
+
# @deprecated
|
129
|
+
#
|
119
130
|
# @example
|
120
131
|
# response = proactive_connect.list.delete(id: '74ea1ecf-06c9-4072-a285-61677bd353e8')
|
121
132
|
#
|
@@ -125,6 +136,7 @@ module Vonage
|
|
125
136
|
# @see https://developer.vonage.com/en/api/proactive-connect#listsDelete
|
126
137
|
#
|
127
138
|
def delete(id:)
|
139
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
128
140
|
request(
|
129
141
|
"/v0.1/bulk/lists/#{id}",
|
130
142
|
type: Delete
|
@@ -133,6 +145,8 @@ module Vonage
|
|
133
145
|
|
134
146
|
# Clear list by deleting all items
|
135
147
|
#
|
148
|
+
# @deprecated
|
149
|
+
#
|
136
150
|
# @example
|
137
151
|
# response = proactive_connect.list.clear_items(id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865')
|
138
152
|
#
|
@@ -142,6 +156,7 @@ module Vonage
|
|
142
156
|
# @see https://developer.vonage.com/en/api/proactive-connect#listsClear
|
143
157
|
#
|
144
158
|
def clear_items(id:)
|
159
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
145
160
|
request(
|
146
161
|
"/v0.1/bulk/lists/#{id}/clear",
|
147
162
|
type: Post
|
@@ -150,6 +165,8 @@ module Vonage
|
|
150
165
|
|
151
166
|
# Fetch and replace all items from datasource
|
152
167
|
#
|
168
|
+
# @deprecated
|
169
|
+
#
|
153
170
|
# @example
|
154
171
|
# response = proactive_connect.list.fetch_and_replace_items(id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865')
|
155
172
|
#
|
@@ -159,6 +176,7 @@ module Vonage
|
|
159
176
|
# @see https://developer.vonage.com/en/api/proactive-connect#listsFetch
|
160
177
|
#
|
161
178
|
def fetch_and_replace_items(id:)
|
179
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
162
180
|
request(
|
163
181
|
"/v0.1/bulk/lists/#{id}/fetch",
|
164
182
|
type: Post
|
@@ -11,6 +11,8 @@ module Vonage
|
|
11
11
|
|
12
12
|
# Find all lists
|
13
13
|
#
|
14
|
+
# @deprecated
|
15
|
+
#
|
14
16
|
# @example
|
15
17
|
# response = proactive_connect.lists.list
|
16
18
|
#
|
@@ -26,6 +28,7 @@ module Vonage
|
|
26
28
|
# @see https://developer.vonage.com/en/api/proactive-connect#listsFindAll
|
27
29
|
#
|
28
30
|
def list(**params)
|
31
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
29
32
|
path = "/v0.1/bulk/lists"
|
30
33
|
path += "?#{Params.encode(params)}" unless params.empty?
|
31
34
|
|
@@ -5,28 +5,38 @@ module Vonage
|
|
5
5
|
class ProactiveConnect < Namespace
|
6
6
|
extend T::Sig
|
7
7
|
|
8
|
+
# @deprecated
|
8
9
|
sig { returns(T.nilable(Vonage::ProactiveConnect::Lists)) }
|
9
10
|
def lists
|
11
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
10
12
|
@lists ||= Lists.new(@config)
|
11
13
|
end
|
12
14
|
|
15
|
+
# @deprecated
|
13
16
|
sig { returns(T.nilable(Vonage::ProactiveConnect::List)) }
|
14
17
|
def list
|
18
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
15
19
|
@list ||= List.new(@config)
|
16
20
|
end
|
17
21
|
|
22
|
+
# @deprecated
|
18
23
|
sig { returns(T.nilable(Vonage::ProactiveConnect::Items)) }
|
19
24
|
def items
|
25
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
20
26
|
@items ||= Items.new(@config)
|
21
27
|
end
|
22
28
|
|
29
|
+
# @deprecated
|
23
30
|
sig { returns(T.nilable(Vonage::ProactiveConnect::Item)) }
|
24
31
|
def item
|
32
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
25
33
|
@item ||= Item.new(@config)
|
26
34
|
end
|
27
35
|
|
36
|
+
# @deprecated
|
28
37
|
sig { returns(T.nilable(Vonage::ProactiveConnect::Events)) }
|
29
38
|
def events
|
39
|
+
logger.info('This method is deprecated and will be removed in a future release.')
|
30
40
|
@events ||= Events.new(@config)
|
31
41
|
end
|
32
42
|
end
|
data/lib/vonage/version.rb
CHANGED
@@ -107,9 +107,13 @@ module Vonage
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def verify_event_url
|
110
|
-
|
110
|
+
unless self.eventUrl.is_a?(Array) && self.eventUrl.length == 1 && self.eventUrl[0].is_a?(String)
|
111
|
+
raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
|
112
|
+
end
|
113
|
+
|
114
|
+
uri = URI.parse(self.eventUrl[0])
|
111
115
|
|
112
|
-
raise ClientError.new("Invalid 'eventUrl' value, must
|
116
|
+
raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
113
117
|
|
114
118
|
self.eventUrl
|
115
119
|
end
|
@@ -49,9 +49,15 @@ module Vonage
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def verify_music_on_hold_url
|
52
|
-
|
52
|
+
music_on_hold_url = self.musicOnHoldUrl
|
53
53
|
|
54
|
-
|
54
|
+
unless music_on_hold_url.is_a?(Array) && music_on_hold_url.length == 1 && music_on_hold_url[0].is_a?(String)
|
55
|
+
raise ClientError.new("Expected 'musicOnHoldUrl' parameter to be an Array containing a single string item")
|
56
|
+
end
|
57
|
+
|
58
|
+
uri = URI.parse(music_on_hold_url[0])
|
59
|
+
|
60
|
+
raise ClientError.new("Invalid 'musicOnHoldUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
55
61
|
|
56
62
|
self.musicOnHoldUrl
|
57
63
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
module Vonage
|
5
5
|
class Voice::Actions::Input
|
6
|
-
attr_accessor :type, :dtmf, :speech, :eventUrl, :eventMethod
|
6
|
+
attr_accessor :type, :dtmf, :speech, :eventUrl, :eventMethod, :mode
|
7
7
|
|
8
8
|
def initialize(attributes = {})
|
9
9
|
@type = attributes.fetch(:type)
|
@@ -11,6 +11,7 @@ module Vonage
|
|
11
11
|
@speech = attributes.fetch(:speech, nil)
|
12
12
|
@eventUrl = attributes.fetch(:eventUrl, nil)
|
13
13
|
@eventMethod = attributes.fetch(:eventMethod, nil)
|
14
|
+
@mode = attributes.fetch(:mode, nil)
|
14
15
|
|
15
16
|
after_initialize!
|
16
17
|
end
|
@@ -33,6 +34,10 @@ module Vonage
|
|
33
34
|
if self.eventMethod
|
34
35
|
validate_event_method
|
35
36
|
end
|
37
|
+
|
38
|
+
if self.mode
|
39
|
+
validate_mode
|
40
|
+
end
|
36
41
|
end
|
37
42
|
|
38
43
|
def validate_type
|
@@ -83,9 +88,13 @@ module Vonage
|
|
83
88
|
end
|
84
89
|
|
85
90
|
def validate_event_url
|
86
|
-
|
91
|
+
unless self.eventUrl.is_a?(Array) && self.eventUrl.length == 1 && self.eventUrl[0].is_a?(String)
|
92
|
+
raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
|
93
|
+
end
|
94
|
+
|
95
|
+
uri = URI.parse(self.eventUrl[0])
|
87
96
|
|
88
|
-
raise ClientError.new("Invalid 'eventUrl' value, must
|
97
|
+
raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
89
98
|
|
90
99
|
self.eventUrl
|
91
100
|
end
|
@@ -96,6 +105,12 @@ module Vonage
|
|
96
105
|
raise ClientError.new("Invalid 'eventMethod' value. must be either: 'GET' or 'POST'") unless valid_methods.include?(self.eventMethod.upcase)
|
97
106
|
end
|
98
107
|
|
108
|
+
def validate_mode
|
109
|
+
valid_modes = ['asyncronous']
|
110
|
+
|
111
|
+
raise ClientError.new("Invalid 'mode' value, must be asyncronous'") unless valid_modes.include?(self.mode)
|
112
|
+
end
|
113
|
+
|
99
114
|
def action
|
100
115
|
create_input!(self)
|
101
116
|
end
|
@@ -112,6 +127,7 @@ module Vonage
|
|
112
127
|
ncco[0].merge!(speech: builder.speech) if builder.speech
|
113
128
|
ncco[0].merge!(eventUrl: builder.eventUrl) if builder.eventUrl
|
114
129
|
ncco[0].merge!(eventMethod: builder.eventMethod) if builder.eventMethod
|
130
|
+
ncco[0].merge!(mode: builder.mode) if builder.mode
|
115
131
|
|
116
132
|
ncco
|
117
133
|
end
|
@@ -22,10 +22,15 @@ module Vonage
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def validate_event_url
|
25
|
-
|
25
|
+
event_url = self.eventUrl
|
26
26
|
|
27
|
-
|
28
|
-
|
27
|
+
unless event_url.is_a?(Array) && event_url.length == 1 && event_url[0].is_a?(String)
|
28
|
+
raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
|
29
|
+
end
|
30
|
+
|
31
|
+
uri = URI.parse(event_url[0])
|
32
|
+
|
33
|
+
raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
29
34
|
|
30
35
|
self.eventUrl
|
31
36
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
module Vonage
|
5
5
|
class Voice::Actions::Record
|
6
|
-
attr_accessor :format, :split, :channels, :endOnSilence, :endOnKey, :timeOut, :beepStart, :eventUrl, :eventMethod
|
6
|
+
attr_accessor :format, :split, :channels, :endOnSilence, :endOnKey, :timeOut, :beepStart, :eventUrl, :eventMethod, :transcription
|
7
7
|
|
8
8
|
def initialize(attributes = {})
|
9
9
|
@format = attributes.fetch(:format, nil)
|
@@ -15,6 +15,7 @@ module Vonage
|
|
15
15
|
@beepStart = attributes.fetch(:beepStart, nil)
|
16
16
|
@eventUrl = attributes.fetch(:eventUrl, nil)
|
17
17
|
@eventMethod = attributes.fetch(:eventMethod, nil)
|
18
|
+
@transcription = attributes.fetch(:transcription, nil)
|
18
19
|
|
19
20
|
after_initialize!
|
20
21
|
end
|
@@ -55,6 +56,10 @@ module Vonage
|
|
55
56
|
if self.eventMethod
|
56
57
|
validate_event_method
|
57
58
|
end
|
59
|
+
|
60
|
+
if self.transcription
|
61
|
+
validate_transcription
|
62
|
+
end
|
58
63
|
end
|
59
64
|
|
60
65
|
def validate_format
|
@@ -90,9 +95,13 @@ module Vonage
|
|
90
95
|
end
|
91
96
|
|
92
97
|
def validate_event_url
|
93
|
-
|
98
|
+
unless self.eventUrl.is_a?(Array) && self.eventUrl.length == 1 && self.eventUrl[0].is_a?(String)
|
99
|
+
raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
|
100
|
+
end
|
94
101
|
|
95
|
-
|
102
|
+
uri = URI.parse(self.eventUrl[0])
|
103
|
+
|
104
|
+
raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
96
105
|
|
97
106
|
self.eventUrl
|
98
107
|
end
|
@@ -100,7 +109,45 @@ module Vonage
|
|
100
109
|
def validate_event_method
|
101
110
|
valid_methods = ['GET', 'POST']
|
102
111
|
|
103
|
-
raise ClientError.new("Invalid 'eventMethod' value.
|
112
|
+
raise ClientError.new("Invalid 'eventMethod' value. Must be either: 'GET' or 'POST'") unless valid_methods.include?(self.eventMethod.upcase)
|
113
|
+
end
|
114
|
+
|
115
|
+
def validate_transcription
|
116
|
+
raise ClientError.new("Expected 'transcription' parameter to be a Hash") unless self.transcription.is_a?(Hash)
|
117
|
+
|
118
|
+
if self.transcription[:language]
|
119
|
+
raise ClientError.new("Invalid 'language' value, must be a String") unless self.transcription[:language].is_a?(String)
|
120
|
+
end
|
121
|
+
|
122
|
+
if self.transcription[:eventUrl]
|
123
|
+
event_url = self.transcription[:eventUrl]
|
124
|
+
|
125
|
+
unless event_url.is_a?(Array) && event_url.length == 1 && event_url[0].is_a?(String)
|
126
|
+
raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
|
127
|
+
end
|
128
|
+
|
129
|
+
uri = URI.parse(event_url[0])
|
130
|
+
|
131
|
+
raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
132
|
+
end
|
133
|
+
|
134
|
+
if self.transcription[:eventMethod]
|
135
|
+
event_method = self.transcription[:eventMethod]
|
136
|
+
raise ClientError.new("Invalid 'eventMethod' value, must be either: 'GET' or 'POST'") unless ['GET', 'POST'].include?(event_method.upcase)
|
137
|
+
end
|
138
|
+
|
139
|
+
if self.transcription[:sentimentAnalysis]
|
140
|
+
sentiment_analysis = self.transcription[:sentimentAnalysis]
|
141
|
+
raise ClientError.new("Invalid 'sentimentAnalysis' value, must be a Boolean") unless sentiment_analysis == true || sentiment_analysis == false
|
142
|
+
end
|
143
|
+
|
144
|
+
# if self.dtmf[:maxDigits]
|
145
|
+
# raise ClientError.new("Expected 'maxDigits' to not be more than 22") if self.dtmf[:maxDigits] > 22
|
146
|
+
# end
|
147
|
+
|
148
|
+
# if self.dtmf[:submitOnHash]
|
149
|
+
# raise ClientError.new("Invalid 'submitOnHash' value, must be a Boolean") unless self.dtmf[:submitOnHash] == true || self.dtmf[:submitOnHash] == false
|
150
|
+
# end
|
104
151
|
end
|
105
152
|
|
106
153
|
def action
|
@@ -123,6 +170,7 @@ module Vonage
|
|
123
170
|
ncco[0].merge!(beepStart: builder.beepStart) if builder.beepStart
|
124
171
|
ncco[0].merge!(eventUrl: builder.eventUrl) if builder.eventUrl
|
125
172
|
ncco[0].merge!(eventMethod: builder.eventMethod) if builder.eventMethod
|
173
|
+
ncco[0].merge!(transcription: builder.transcription) if builder.transcription
|
126
174
|
|
127
175
|
ncco
|
128
176
|
end
|
@@ -3,13 +3,16 @@
|
|
3
3
|
|
4
4
|
module Vonage
|
5
5
|
class Voice::Actions::Stream
|
6
|
-
attr_accessor :streamUrl, :level, :bargeIn, :loop
|
6
|
+
attr_accessor :streamUrl, :level, :bargeIn, :loop, :eventOnCompletion, :eventUrl, :eventMethod
|
7
7
|
|
8
8
|
def initialize(attributes = {})
|
9
9
|
@streamUrl = attributes.fetch(:streamUrl)
|
10
10
|
@level = attributes.fetch(:level, nil)
|
11
11
|
@bargeIn = attributes.fetch(:bargeIn, nil)
|
12
12
|
@loop = attributes.fetch(:loop, nil)
|
13
|
+
@eventOnCompletion = attributes.fetch(:eventOnCompletion, nil)
|
14
|
+
@eventUrl = attributes.fetch(:eventUrl, nil)
|
15
|
+
@eventMethod = attributes.fetch(:eventMethod, nil)
|
13
16
|
|
14
17
|
after_initialize!
|
15
18
|
end
|
@@ -28,12 +31,28 @@ module Vonage
|
|
28
31
|
if self.loop
|
29
32
|
verify_loop
|
30
33
|
end
|
34
|
+
|
35
|
+
if self.eventOnCompletion || self.eventOnCompletion == false
|
36
|
+
verify_event_on_completion
|
37
|
+
end
|
38
|
+
|
39
|
+
if self.eventUrl
|
40
|
+
verify_event_url
|
41
|
+
end
|
42
|
+
|
43
|
+
if self.eventMethod
|
44
|
+
verify_event_method
|
45
|
+
end
|
31
46
|
end
|
32
47
|
|
33
48
|
def verify_stream_url
|
34
|
-
|
49
|
+
stream_url = self.streamUrl
|
50
|
+
|
51
|
+
unless stream_url.is_a?(Array) && stream_url.length == 1 && stream_url[0].is_a?(String)
|
52
|
+
raise ClientError.new("Expected 'streamUrl' parameter to be an Array containing a single string item")
|
53
|
+
end
|
35
54
|
|
36
|
-
uri = URI.parse(
|
55
|
+
uri = URI.parse(stream_url[0])
|
37
56
|
|
38
57
|
raise ClientError.new("Invalid 'streamUrl' value, must be a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
39
58
|
end
|
@@ -47,7 +66,29 @@ module Vonage
|
|
47
66
|
end
|
48
67
|
|
49
68
|
def verify_loop
|
50
|
-
raise ClientError.new("Expected 'loop' value to be either
|
69
|
+
raise ClientError.new("Expected 'loop' value to be either 0 or a positive integer") unless self.loop >= 0
|
70
|
+
end
|
71
|
+
|
72
|
+
def verify_event_on_completion
|
73
|
+
raise ClientError.new("Expected 'eventOnCompletion' value to be a Boolean") unless self.eventOnCompletion == true || self.eventOnCompletion == false
|
74
|
+
end
|
75
|
+
|
76
|
+
def verify_event_url
|
77
|
+
unless self.eventUrl.is_a?(Array) && self.eventUrl.length == 1 && self.eventUrl[0].is_a?(String)
|
78
|
+
raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
|
79
|
+
end
|
80
|
+
|
81
|
+
uri = URI.parse(self.eventUrl[0])
|
82
|
+
|
83
|
+
raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
84
|
+
|
85
|
+
self.eventUrl
|
86
|
+
end
|
87
|
+
|
88
|
+
def verify_event_method
|
89
|
+
valid_methods = ['GET', 'POST']
|
90
|
+
|
91
|
+
raise ClientError.new("Invalid 'eventMethod' value. must be either: 'GET' or 'POST'") unless valid_methods.include?(self.eventMethod.upcase)
|
51
92
|
end
|
52
93
|
|
53
94
|
def action
|
@@ -65,6 +106,9 @@ module Vonage
|
|
65
106
|
ncco[0].merge!(level: builder.level) if builder.level
|
66
107
|
ncco[0].merge!(bargeIn: builder.bargeIn) if (builder.bargeIn || builder.bargeIn == false)
|
67
108
|
ncco[0].merge!(loop: builder.loop) if builder.loop
|
109
|
+
ncco[0].merge!(eventOnCompletion: builder.eventOnCompletion) if (builder.eventOnCompletion || builder.eventOnCompletion == false)
|
110
|
+
ncco[0].merge!(eventUrl: builder.eventUrl) if builder.eventUrl
|
111
|
+
ncco[0].merge!(eventMethod: builder.eventMethod) if builder.eventMethod
|
68
112
|
|
69
113
|
ncco
|
70
114
|
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, :premium
|
5
|
+
attr_accessor :text, :bargeIn, :loop, :level, :language, :style, :premium, :eventOnCompletion, :eventUrl, :eventMethod
|
6
6
|
|
7
7
|
def initialize(attributes= {})
|
8
8
|
@text = attributes.fetch(:text)
|
@@ -12,12 +12,15 @@ module Vonage
|
|
12
12
|
@language = attributes.fetch(:language, nil)
|
13
13
|
@style = attributes.fetch(:style, nil)
|
14
14
|
@premium = attributes.fetch(:premium, nil)
|
15
|
+
@eventOnCompletion = attributes.fetch(:eventOnCompletion, nil)
|
16
|
+
@eventUrl = attributes.fetch(:eventUrl, nil)
|
17
|
+
@eventMethod = attributes.fetch(:eventMethod, nil)
|
15
18
|
|
16
19
|
after_initialize!
|
17
20
|
end
|
18
21
|
|
19
22
|
def after_initialize!
|
20
|
-
if self.bargeIn
|
23
|
+
if self.bargeIn || self.bargeIn == false
|
21
24
|
verify_barge_in
|
22
25
|
end
|
23
26
|
|
@@ -33,9 +36,21 @@ module Vonage
|
|
33
36
|
verify_style
|
34
37
|
end
|
35
38
|
|
36
|
-
if self.premium
|
39
|
+
if self.premium || self.premium == false
|
37
40
|
verify_premium
|
38
41
|
end
|
42
|
+
|
43
|
+
if self.eventOnCompletion || self.eventOnCompletion == false
|
44
|
+
verify_event_on_completion
|
45
|
+
end
|
46
|
+
|
47
|
+
if self.eventUrl
|
48
|
+
verify_event_url
|
49
|
+
end
|
50
|
+
|
51
|
+
if self.eventMethod
|
52
|
+
verify_event_method
|
53
|
+
end
|
39
54
|
end
|
40
55
|
|
41
56
|
def verify_barge_in
|
@@ -43,7 +58,7 @@ module Vonage
|
|
43
58
|
end
|
44
59
|
|
45
60
|
def verify_loop
|
46
|
-
raise ClientError.new("Expected 'loop' value to be either
|
61
|
+
raise ClientError.new("Expected 'loop' value to be either 0 or a positive integer") unless self.loop >= 0
|
47
62
|
end
|
48
63
|
|
49
64
|
def verify_level
|
@@ -58,6 +73,28 @@ module Vonage
|
|
58
73
|
raise ClientError.new("Expected 'premium' value to be a Boolean") unless self.premium == true || self.premium == false
|
59
74
|
end
|
60
75
|
|
76
|
+
def verify_event_on_completion
|
77
|
+
raise ClientError.new("Expected 'eventOnCompletion' value to be a Boolean") unless self.eventOnCompletion == true || self.eventOnCompletion == false
|
78
|
+
end
|
79
|
+
|
80
|
+
def verify_event_url
|
81
|
+
unless self.eventUrl.is_a?(Array) && self.eventUrl.length == 1 && self.eventUrl[0].is_a?(String)
|
82
|
+
raise ClientError.new("Expected 'eventUrl' parameter to be an Array containing a single string item")
|
83
|
+
end
|
84
|
+
|
85
|
+
uri = URI.parse(self.eventUrl[0])
|
86
|
+
|
87
|
+
raise ClientError.new("Invalid 'eventUrl' value, array must contain a valid URL") unless uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS)
|
88
|
+
|
89
|
+
self.eventUrl
|
90
|
+
end
|
91
|
+
|
92
|
+
def verify_event_method
|
93
|
+
valid_methods = ['GET', 'POST']
|
94
|
+
|
95
|
+
raise ClientError.new("Invalid 'eventMethod' value. must be either: 'GET' or 'POST'") unless valid_methods.include?(self.eventMethod.upcase)
|
96
|
+
end
|
97
|
+
|
61
98
|
def action
|
62
99
|
create_talk!(self)
|
63
100
|
end
|
@@ -75,6 +112,10 @@ module Vonage
|
|
75
112
|
ncco[0].merge!(level: builder.level) if builder.level
|
76
113
|
ncco[0].merge!(language: builder.language) if builder.language
|
77
114
|
ncco[0].merge!(style: builder.style) if builder.style
|
115
|
+
ncco[0].merge!(premium: builder.premium) if (builder.bargeIn || builder.bargeIn == false)
|
116
|
+
ncco[0].merge!(eventOnCompletion: builder.eventOnCompletion) if (builder.eventOnCompletion || builder.eventOnCompletion == false)
|
117
|
+
ncco[0].merge!(eventUrl: builder.eventUrl) if builder.eventUrl
|
118
|
+
ncco[0].merge!(eventMethod: builder.eventMethod) if builder.eventMethod
|
78
119
|
|
79
120
|
ncco
|
80
121
|
end
|
data/lib/vonage.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vonage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.27.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vonage
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: vonage-jwt
|
@@ -184,6 +184,7 @@ files:
|
|
184
184
|
- lib/vonage/messaging.rb
|
185
185
|
- lib/vonage/messaging/channels/messenger.rb
|
186
186
|
- lib/vonage/messaging/channels/mms.rb
|
187
|
+
- lib/vonage/messaging/channels/rcs.rb
|
187
188
|
- lib/vonage/messaging/channels/sms.rb
|
188
189
|
- lib/vonage/messaging/channels/viber.rb
|
189
190
|
- lib/vonage/messaging/channels/whats_app.rb
|