vonage 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +190 -0
- data/README.md +191 -0
- data/lib/vonage.rb +29 -0
- data/lib/vonage/abstract_authentication.rb +9 -0
- data/lib/vonage/account.rb +61 -0
- data/lib/vonage/alerts.rb +72 -0
- data/lib/vonage/applications.rb +148 -0
- data/lib/vonage/applications/list_response.rb +11 -0
- data/lib/vonage/authentication_error.rb +6 -0
- data/lib/vonage/basic.rb +13 -0
- data/lib/vonage/bearer_token.rb +14 -0
- data/lib/vonage/client.rb +134 -0
- data/lib/vonage/client_error.rb +6 -0
- data/lib/vonage/config.rb +208 -0
- data/lib/vonage/conversations.rb +210 -0
- data/lib/vonage/conversations/events.rb +73 -0
- data/lib/vonage/conversations/legs.rb +30 -0
- data/lib/vonage/conversations/members.rb +104 -0
- data/lib/vonage/conversations/users.rb +93 -0
- data/lib/vonage/conversions.rb +19 -0
- data/lib/vonage/entity.rb +51 -0
- data/lib/vonage/error.rb +6 -0
- data/lib/vonage/errors.rb +51 -0
- data/lib/vonage/files.rb +26 -0
- data/lib/vonage/form_data.rb +11 -0
- data/lib/vonage/gsm7.rb +13 -0
- data/lib/vonage/http.rb +43 -0
- data/lib/vonage/json.rb +17 -0
- data/lib/vonage/jwt.rb +43 -0
- data/lib/vonage/key_secret_params.rb +20 -0
- data/lib/vonage/keys.rb +51 -0
- data/lib/vonage/logger.rb +60 -0
- data/lib/vonage/messages.rb +25 -0
- data/lib/vonage/namespace.rb +118 -0
- data/lib/vonage/number_insight.rb +140 -0
- data/lib/vonage/numbers.rb +196 -0
- data/lib/vonage/numbers/list_response.rb +11 -0
- data/lib/vonage/numbers/response.rb +8 -0
- data/lib/vonage/params.rb +27 -0
- data/lib/vonage/pricing.rb +30 -0
- data/lib/vonage/pricing_types.rb +18 -0
- data/lib/vonage/redact.rb +37 -0
- data/lib/vonage/response.rb +25 -0
- data/lib/vonage/secrets.rb +85 -0
- data/lib/vonage/secrets/list_response.rb +11 -0
- data/lib/vonage/server_error.rb +6 -0
- data/lib/vonage/signature.rb +53 -0
- data/lib/vonage/sms.rb +121 -0
- data/lib/vonage/tfa.rb +14 -0
- data/lib/vonage/user_agent.rb +16 -0
- data/lib/vonage/verify.rb +253 -0
- data/lib/vonage/version.rb +5 -0
- data/lib/vonage/voice.rb +250 -0
- data/lib/vonage/voice/dtmf.rb +26 -0
- data/lib/vonage/voice/list_response.rb +11 -0
- data/lib/vonage/voice/stream.rb +44 -0
- data/lib/vonage/voice/talk.rb +48 -0
- data/vonage.gemspec +26 -0
- metadata +155 -0
data/lib/vonage/tfa.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# typed: ignore
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Vonage
|
5
|
+
module UserAgent
|
6
|
+
def self.string(app_name, app_version)
|
7
|
+
identifiers = []
|
8
|
+
identifiers << 'vonage-ruby/' + VERSION
|
9
|
+
identifiers << 'ruby/' + RUBY_VERSION
|
10
|
+
identifiers << app_name + '/' + app_version if app_name && app_version
|
11
|
+
identifiers.join(' ')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private_constant :UserAgent
|
16
|
+
end
|
@@ -0,0 +1,253 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Vonage
|
5
|
+
class Verify < Namespace
|
6
|
+
extend T::Sig
|
7
|
+
alias_method :http_request, :request
|
8
|
+
|
9
|
+
private :http_request
|
10
|
+
|
11
|
+
# Generate and send a PIN to your user.
|
12
|
+
#
|
13
|
+
# @note You can make a maximum of one Verify request per second.
|
14
|
+
#
|
15
|
+
# @example
|
16
|
+
# response = client.verify.request(number: '447700900000', brand: 'Acme Inc')
|
17
|
+
#
|
18
|
+
# puts "Started verification request_id=#{response.request_id}"
|
19
|
+
#
|
20
|
+
# @option params [required, String] :number
|
21
|
+
# The mobile or landline phone number to verify.
|
22
|
+
# Unless you are setting **:country** explicitly, this number must be in E.164 format.
|
23
|
+
#
|
24
|
+
# @option params [String] :country
|
25
|
+
# If you do not provide **:number** in international format or you are not sure if **:number** is correctly formatted, specify the two-character country code in **:country**.
|
26
|
+
# Verify will then format the number for you.
|
27
|
+
#
|
28
|
+
# @option params [required, String] :brand
|
29
|
+
# An 18-character alphanumeric string you can use to personalize the verification request SMS body, to help users identify your company or application name.
|
30
|
+
# For example: "Your `Acme Inc` PIN is ..."
|
31
|
+
#
|
32
|
+
# @option params [String] :sender_id
|
33
|
+
# An 11-character alphanumeric string that represents the [identity of the sender](https://developer.nexmo.com/messaging/sms/guides/custom-sender-id) of the verification request.
|
34
|
+
# Depending on the destination of the phone number you are sending the verification SMS to, restrictions might apply.
|
35
|
+
#
|
36
|
+
# @option params [Integer] :code_length
|
37
|
+
# The length of the verification code.
|
38
|
+
#
|
39
|
+
# @option params [String] :lg
|
40
|
+
# By default, the SMS or text-to-speech (TTS) message is generated in the locale that matches the **:number**.
|
41
|
+
# For example, the text message or TTS message for a `33*` number is sent in French.
|
42
|
+
# Use this parameter to explicitly control the language, accent and gender used for the Verify request.
|
43
|
+
#
|
44
|
+
# @option params [Integer] :pin_expiry
|
45
|
+
# How log the generated verification code is valid for, in seconds.
|
46
|
+
# When you specify both **:pin_expiry** and **:next_event_wait** then **:pin_expiry** must be an integer multiple of **:next_event_wait** otherwise **:pin_expiry** is defaulted to equal **:next_event_wait**.
|
47
|
+
# See [changing the event timings](https://developer.nexmo.com/verify/guides/changing-default-timings).
|
48
|
+
#
|
49
|
+
# @option params [Integer] :next_event_wait
|
50
|
+
# Specifies the wait time in seconds between attempts to deliver the verification code.
|
51
|
+
#
|
52
|
+
# @option params [Integer] :workflow_id
|
53
|
+
# Selects the predefined sequence of SMS and TTS (Text To Speech) actions to use in order to convey the PIN to your user.
|
54
|
+
# For example, an id of 1 identifies the workflow SMS - TTS - TTS.
|
55
|
+
# For a list of all workflows and their associated ids, please visit the [developer portal](https://developer.nexmo.com/verify/guides/workflows-and-events).
|
56
|
+
#
|
57
|
+
# @param [Hash] params
|
58
|
+
#
|
59
|
+
# @return [Response]
|
60
|
+
#
|
61
|
+
# @see https://developer.nexmo.com/api/verify#verifyRequest
|
62
|
+
#
|
63
|
+
sig { params(params: T.untyped, uri: T.untyped).returns(T.untyped) }
|
64
|
+
def request(params, uri = '/verify/json')
|
65
|
+
response = http_request(uri, params: params, type: Post)
|
66
|
+
|
67
|
+
raise Error, response[:error_text] if error?(response)
|
68
|
+
|
69
|
+
response
|
70
|
+
end
|
71
|
+
|
72
|
+
# Confirm that the PIN you received from your user matches the one sent by Vonage in your verification request.
|
73
|
+
#
|
74
|
+
# @example
|
75
|
+
# response = client.verify.check(request_id: request_id, code: '1234')
|
76
|
+
#
|
77
|
+
# puts "Verification complete, event_id=#{response.event_id}"
|
78
|
+
#
|
79
|
+
# @option params [required, String] :request_id
|
80
|
+
# The Verify request to check.
|
81
|
+
# This is the `request_id` you received in the response to the Verify request.
|
82
|
+
#
|
83
|
+
# @option params [required, String] :code
|
84
|
+
# The verification code entered by your user.
|
85
|
+
#
|
86
|
+
# @option params [String] :ip_address
|
87
|
+
# The IP address used by your user when they entered the verification code.
|
88
|
+
# Vonage uses this information to identify fraud and spam. This ultimately benefits all Vonage customers.
|
89
|
+
#
|
90
|
+
# @param [Hash] params
|
91
|
+
#
|
92
|
+
# @return [Response]
|
93
|
+
#
|
94
|
+
# @see https://developer.nexmo.com/api/verify#verifyCheck
|
95
|
+
#
|
96
|
+
sig { params(params: T::Hash[Symbol, T.untyped]).returns(Vonage::Response) }
|
97
|
+
def check(params)
|
98
|
+
response = http_request('/verify/check/json', params: params, type: Post)
|
99
|
+
|
100
|
+
raise Error, response[:error_text] if error?(response)
|
101
|
+
|
102
|
+
response
|
103
|
+
end
|
104
|
+
|
105
|
+
# Check the status of past or current verification requests.
|
106
|
+
#
|
107
|
+
# @example
|
108
|
+
# response = client.verify.search(request_id: request_id)
|
109
|
+
#
|
110
|
+
# @option params [String] :request_id
|
111
|
+
# The `request_id` you received in the Verify Request Response.
|
112
|
+
#
|
113
|
+
# @option params [Array<string>] :request_ids
|
114
|
+
# More than one `request_id`.
|
115
|
+
# Each `request_id` is a new parameter in the Verify Search request.
|
116
|
+
#
|
117
|
+
# @param [Hash] params
|
118
|
+
#
|
119
|
+
# @return [Response]
|
120
|
+
#
|
121
|
+
# @see https://developer.nexmo.com/api/verify#verifySearch
|
122
|
+
#
|
123
|
+
sig { params(params: T::Hash[Symbol, T.untyped]).returns(T.any(T::Hash[Symbol, T.untyped], Vonage::Response)) }
|
124
|
+
def search(params)
|
125
|
+
response = http_request('/verify/search/json', params: params)
|
126
|
+
|
127
|
+
raise Error, response[:error_text] if error?(response)
|
128
|
+
|
129
|
+
response
|
130
|
+
end
|
131
|
+
|
132
|
+
# Control the progress of your verification requests.
|
133
|
+
#
|
134
|
+
# @example
|
135
|
+
# response = client.verify.control(request_id: request_id, cmd: 'cancel')
|
136
|
+
#
|
137
|
+
# @option params [required, String] :request_id
|
138
|
+
# The `request_id` you received in the response to the Verify request.
|
139
|
+
#
|
140
|
+
# @option params [required, String] :cmd
|
141
|
+
# The command to execute, depending on whether you want to cancel the verification process, or advance to the next verification event.
|
142
|
+
# You must wait at least 30 seconds before cancelling a Verify request.
|
143
|
+
#
|
144
|
+
# @param [Hash] params
|
145
|
+
#
|
146
|
+
# @return [Response]
|
147
|
+
#
|
148
|
+
# @see https://developer.nexmo.com/api/verify#verifyControl
|
149
|
+
#
|
150
|
+
sig { params(params: T::Hash[Symbol, T.untyped]).returns(T.untyped) }
|
151
|
+
def control(params)
|
152
|
+
response = http_request('/verify/control/json', params: params, type: Post)
|
153
|
+
|
154
|
+
raise Error, response[:error_text] if error?(response)
|
155
|
+
|
156
|
+
response
|
157
|
+
end
|
158
|
+
|
159
|
+
# Cancel an existing verification request.
|
160
|
+
#
|
161
|
+
# @example
|
162
|
+
# response = client.verify.cancel(request_id)
|
163
|
+
#
|
164
|
+
# @param [String] id
|
165
|
+
#
|
166
|
+
# @return [Response]
|
167
|
+
#
|
168
|
+
# @see https://developer.nexmo.com/api/verify#verifyControl
|
169
|
+
#
|
170
|
+
sig { params(id: String).returns(Vonage::Response) }
|
171
|
+
def cancel(id)
|
172
|
+
control(request_id: id, cmd: 'cancel')
|
173
|
+
end
|
174
|
+
|
175
|
+
# Trigger the next verification event for an existing verification request.
|
176
|
+
#
|
177
|
+
# @example
|
178
|
+
# response = client.verify.trigger_next_event(request_id)
|
179
|
+
#
|
180
|
+
# @param [String] id
|
181
|
+
#
|
182
|
+
# @return [Response]
|
183
|
+
#
|
184
|
+
# @see https://developer.nexmo.com/api/verify#verifyControl
|
185
|
+
#
|
186
|
+
sig { params(id: String).returns(Vonage::Response) }
|
187
|
+
def trigger_next_event(id)
|
188
|
+
control(request_id: id, cmd: 'trigger_next_event')
|
189
|
+
end
|
190
|
+
|
191
|
+
# Send a PSD2-compliant payment token to a user for payment authorization
|
192
|
+
#
|
193
|
+
# @example
|
194
|
+
# response = client.verify.psd2(number: '447700900000', payee: 'Acme Inc', amount: 48.00)
|
195
|
+
#
|
196
|
+
# @option params [required, String] :number
|
197
|
+
# The mobile or landline phone number to verify.
|
198
|
+
# Unless you are setting **:country** explicitly, this number must be in E.164 format.
|
199
|
+
#
|
200
|
+
# @option params [String] :country
|
201
|
+
# If you do not provide **:number** in international format or you are not sure if **:number** is correctly formatted, specify the two-character country code in **:country**.
|
202
|
+
# Verify will then format the number for you.
|
203
|
+
#
|
204
|
+
# @option params [required, String] :payee
|
205
|
+
# An alphanumeric string to indicate to the user the name of the recipient that they are confirming a payment to.
|
206
|
+
#
|
207
|
+
# @option params [required, Float] :amount
|
208
|
+
# The decimal amount of the payment to be confirmed, in Euros
|
209
|
+
#
|
210
|
+
# @option params [Integer] :code_length
|
211
|
+
# The length of the verification code.
|
212
|
+
#
|
213
|
+
# @option params [String] :lg
|
214
|
+
# By default, the SMS or text-to-speech (TTS) message is generated in the locale that matches the **:number**.
|
215
|
+
# For example, the text message or TTS message for a `33*` number is sent in French.
|
216
|
+
# Use this parameter to explicitly control the language, accent and gender used for the Verify request.
|
217
|
+
#
|
218
|
+
# @option params [Integer] :pin_expiry
|
219
|
+
# How log the generated verification code is valid for, in seconds.
|
220
|
+
# When you specify both **:pin_expiry** and **:next_event_wait** then **:pin_expiry** must be an integer multiple of **:next_event_wait** otherwise **:pin_expiry** is defaulted to equal **:next_event_wait**.
|
221
|
+
# See [changing the event timings](https://developer.nexmo.com/verify/guides/changing-default-timings).
|
222
|
+
#
|
223
|
+
# @option params [Integer] :next_event_wait
|
224
|
+
# Specifies the wait time in seconds between attempts to deliver the verification code.
|
225
|
+
#
|
226
|
+
# @option params [Integer] :workflow_id
|
227
|
+
# Selects the predefined sequence of SMS and TTS (Text To Speech) actions to use in order to convey the PIN to your user.
|
228
|
+
# For example, an id of 1 identifies the workflow SMS - TTS - TTS.
|
229
|
+
# For a list of all workflows and their associated ids, please visit the [developer portal](https://developer.nexmo.com/verify/guides/workflows-and-events).
|
230
|
+
#
|
231
|
+
# @param [Hash] params
|
232
|
+
#
|
233
|
+
# @return [Response]
|
234
|
+
#
|
235
|
+
# @see https://developer.nexmo.com/api/verify#verifyRequestWithPSD2
|
236
|
+
#
|
237
|
+
sig { params(params: T.untyped, uri: T.untyped).returns(T.any(Vonage::Error, Vonage::Response)) }
|
238
|
+
def psd2(params, uri = '/verify/psd2/json')
|
239
|
+
response = http_request(uri, params: params, type: Post)
|
240
|
+
|
241
|
+
raise Error, response[:error_text] if error?(response)
|
242
|
+
|
243
|
+
response
|
244
|
+
end
|
245
|
+
|
246
|
+
private
|
247
|
+
|
248
|
+
sig { params(response: T.untyped).returns(T::Boolean) }
|
249
|
+
def error?(response)
|
250
|
+
response.respond_to?(:error_text)
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
data/lib/vonage/voice.rb
ADDED
@@ -0,0 +1,250 @@
|
|
1
|
+
# typed: true
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Vonage
|
5
|
+
class Voice < Namespace
|
6
|
+
self.authentication = BearerToken
|
7
|
+
|
8
|
+
self.request_body = JSON
|
9
|
+
|
10
|
+
# Create an outbound Call.
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# response = client.voice.create({
|
14
|
+
# to: [{type: 'phone', number: '14843331234'}],
|
15
|
+
# from: {type: 'phone', number: '14843335555'},
|
16
|
+
# answer_url: ['https://example.com/answer']
|
17
|
+
# })
|
18
|
+
#
|
19
|
+
# @option params [required, Array<Hash>] :to
|
20
|
+
# Connect to a Phone (PSTN) number, SIP Endpoint, Websocket, or VBC extension.
|
21
|
+
#
|
22
|
+
# @option params [required, Hash] :from
|
23
|
+
# Connect to a Phone (PSTN) number.
|
24
|
+
#
|
25
|
+
# @option params [Array<String>] :ncco
|
26
|
+
# The Vonage Call Control Object to use for this call.
|
27
|
+
# Required unless **:answer_url** is provided.
|
28
|
+
#
|
29
|
+
# @option params [Array<String>] :answer_url
|
30
|
+
# The webhook endpoint where you provide the Vonage Call Control Object that governs this call.
|
31
|
+
# Required unless **:ncco** is provided.
|
32
|
+
#
|
33
|
+
# @option params [String] :answer_method
|
34
|
+
# The HTTP method used to send event information to answer_url.
|
35
|
+
#
|
36
|
+
# @option params [required, Array<String>] :event_url
|
37
|
+
# The webhook endpoint where call progress events are sent to.
|
38
|
+
#
|
39
|
+
# @option params [String] :event_method
|
40
|
+
# The HTTP method used to send event information to event_url.
|
41
|
+
#
|
42
|
+
# @option params [String] :machine_detection
|
43
|
+
# Configure the behavior when Vonage detects that the call is answered by voicemail.
|
44
|
+
#
|
45
|
+
# @option params [Integer] :length_timer
|
46
|
+
# Set the number of seconds that elapse before Vonage hangs up after the call state changes to in_progress.
|
47
|
+
#
|
48
|
+
# @option params [Integer] :ringing_timer
|
49
|
+
# Set the number of seconds that elapse before Vonage hangs up after the call state changes to `ringing`.
|
50
|
+
#
|
51
|
+
# @param [Hash] params
|
52
|
+
#
|
53
|
+
# @return [Response]
|
54
|
+
#
|
55
|
+
# @see https://developer.nexmo.com/api/voice#createCall
|
56
|
+
#
|
57
|
+
def create(params)
|
58
|
+
request('/v1/calls', params: params, type: Post)
|
59
|
+
end
|
60
|
+
|
61
|
+
# Get details of your calls.
|
62
|
+
#
|
63
|
+
# @example
|
64
|
+
# response = client.voice.list
|
65
|
+
# response.each do |item|
|
66
|
+
# puts "#{item.uuid} #{item.direction} #{item.status}"
|
67
|
+
# end
|
68
|
+
#
|
69
|
+
# @option params [String] :status
|
70
|
+
# Filter by call status.
|
71
|
+
#
|
72
|
+
# @option params [String] :date_start
|
73
|
+
# Return the records that occurred after this point in time.
|
74
|
+
#
|
75
|
+
# @option params [String] :date_end
|
76
|
+
# Return the records that occurred before this point in time.
|
77
|
+
#
|
78
|
+
# @option params [Integer] :page_size
|
79
|
+
# Return this amount of records in the response.
|
80
|
+
#
|
81
|
+
# @option params [Integer] :record_index
|
82
|
+
# Return calls from this index in the response.
|
83
|
+
#
|
84
|
+
# @option params [String] :order
|
85
|
+
# Either `ascending` or `descending` order.
|
86
|
+
#
|
87
|
+
# @option params [String] :conversation_uuid
|
88
|
+
# Return all the records associated with a specific conversation.
|
89
|
+
#
|
90
|
+
# @param [Hash] params
|
91
|
+
#
|
92
|
+
# @return [ListResponse]
|
93
|
+
#
|
94
|
+
# @see https://developer.nexmo.com/api/voice#getCalls
|
95
|
+
#
|
96
|
+
def list(params = nil)
|
97
|
+
request('/v1/calls', params: params, response_class: ListResponse)
|
98
|
+
end
|
99
|
+
|
100
|
+
# Get detail of a specific call.
|
101
|
+
#
|
102
|
+
# @example
|
103
|
+
# response = client.voice.get(id)
|
104
|
+
#
|
105
|
+
# @param [String] id
|
106
|
+
#
|
107
|
+
# @return [Response]
|
108
|
+
#
|
109
|
+
# @see https://developer.nexmo.com/api/voice#getCall
|
110
|
+
#
|
111
|
+
def get(id)
|
112
|
+
request('/v1/calls/' + id)
|
113
|
+
end
|
114
|
+
|
115
|
+
# Modify an in progress call.
|
116
|
+
#
|
117
|
+
# @example
|
118
|
+
# response = client.voice.update(id, action: 'hangup')
|
119
|
+
#
|
120
|
+
# @option params [required, String] :action
|
121
|
+
#
|
122
|
+
# @option params [Hash] :destination
|
123
|
+
# Required when **:action** is `transfer`.
|
124
|
+
#
|
125
|
+
# @param [String] id
|
126
|
+
# @param [Hash] params
|
127
|
+
#
|
128
|
+
# @return [Response]
|
129
|
+
#
|
130
|
+
# @see https://developer.nexmo.com/api/voice#updateCall
|
131
|
+
#
|
132
|
+
def update(id, params)
|
133
|
+
request('/v1/calls/' + id, params: params, type: Put)
|
134
|
+
end
|
135
|
+
|
136
|
+
# Hangup an in progress call.
|
137
|
+
#
|
138
|
+
# @example
|
139
|
+
# response = client.voice.hangup(id)
|
140
|
+
#
|
141
|
+
# @param [String] id
|
142
|
+
#
|
143
|
+
# @return [Response]
|
144
|
+
#
|
145
|
+
# @see https://developer.nexmo.com/api/voice#updateCall
|
146
|
+
#
|
147
|
+
def hangup(id)
|
148
|
+
update(id, action: 'hangup')
|
149
|
+
end
|
150
|
+
|
151
|
+
# Mute an in progress call.
|
152
|
+
#
|
153
|
+
# @example
|
154
|
+
# response = client.voice.mute(id)
|
155
|
+
#
|
156
|
+
# @param [String] id
|
157
|
+
#
|
158
|
+
# @return [Response]
|
159
|
+
#
|
160
|
+
# @see https://developer.nexmo.com/api/voice#updateCall
|
161
|
+
#
|
162
|
+
def mute(id)
|
163
|
+
update(id, action: 'mute')
|
164
|
+
end
|
165
|
+
|
166
|
+
# Unmute an in progress call.
|
167
|
+
#
|
168
|
+
# @example
|
169
|
+
# response = client.voice.unmute(id)
|
170
|
+
#
|
171
|
+
# @param [String] id
|
172
|
+
#
|
173
|
+
# @return [Response]
|
174
|
+
#
|
175
|
+
# @see https://developer.nexmo.com/api/voice#updateCall
|
176
|
+
#
|
177
|
+
def unmute(id)
|
178
|
+
update(id, action: 'unmute')
|
179
|
+
end
|
180
|
+
|
181
|
+
# Earmuff an in progress call.
|
182
|
+
#
|
183
|
+
# @example
|
184
|
+
# response = client.voice.earmuff(id)
|
185
|
+
#
|
186
|
+
# @param [String] id
|
187
|
+
#
|
188
|
+
# @return [Response]
|
189
|
+
#
|
190
|
+
# @see https://developer.nexmo.com/api/voice#updateCall
|
191
|
+
#
|
192
|
+
def earmuff(id)
|
193
|
+
update(id, action: 'earmuff')
|
194
|
+
end
|
195
|
+
|
196
|
+
# Unearmuff an in progress call.
|
197
|
+
#
|
198
|
+
# @example
|
199
|
+
# response = client.voice.unearmuff(id)
|
200
|
+
#
|
201
|
+
# @param [String] id
|
202
|
+
#
|
203
|
+
# @return [Response]
|
204
|
+
#
|
205
|
+
# @see https://developer.nexmo.com/api/voice#updateCall
|
206
|
+
#
|
207
|
+
def unearmuff(id)
|
208
|
+
update(id, action: 'unearmuff')
|
209
|
+
end
|
210
|
+
|
211
|
+
# Transfer an in progress call.
|
212
|
+
#
|
213
|
+
# @example
|
214
|
+
# destination = {
|
215
|
+
# type: 'ncco',
|
216
|
+
# url: ['https://example.com/ncco.json']
|
217
|
+
# }
|
218
|
+
#
|
219
|
+
# response = client.voice.transfer(id, destination: destination)
|
220
|
+
#
|
221
|
+
# @param [String] id
|
222
|
+
# @param [Hash] destination
|
223
|
+
#
|
224
|
+
# @return [Response]
|
225
|
+
#
|
226
|
+
# @see https://developer.nexmo.com/api/voice#updateCall
|
227
|
+
#
|
228
|
+
def transfer(id, destination:)
|
229
|
+
update(id, action: 'transfer', destination: destination)
|
230
|
+
end
|
231
|
+
|
232
|
+
# @return [Stream]
|
233
|
+
#
|
234
|
+
def stream
|
235
|
+
@stream ||= Stream.new(@config)
|
236
|
+
end
|
237
|
+
|
238
|
+
# @return [Talk]
|
239
|
+
#
|
240
|
+
def talk
|
241
|
+
@talk ||= Talk.new(@config)
|
242
|
+
end
|
243
|
+
|
244
|
+
# @return [DTMF]
|
245
|
+
#
|
246
|
+
def dtmf
|
247
|
+
@dtmf ||= DTMF.new(@config)
|
248
|
+
end
|
249
|
+
end
|
250
|
+
end
|