twilio-ruby 5.56.0 → 5.58.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 +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +24 -7
- data/CHANGES.md +51 -0
- data/Gemfile +1 -0
- data/README.md +2 -2
- data/examples/examples.rb +1 -1
- data/lib/twilio-ruby/rest/api/v2010/account/call.rb +12 -3
- data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +4 -1
- data/lib/twilio-ruby/rest/api/v2010/account/conference/recording.rb +1 -1
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/credential_list_mapping.rb +11 -11
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/ip_access_control_list_mapping.rb +11 -11
- data/lib/twilio-ruby/rest/conversations.rb +6 -0
- data/lib/twilio-ruby/rest/conversations/v1.rb +7 -0
- data/lib/twilio-ruby/rest/conversations/v1/participant_conversation.rb +312 -0
- data/lib/twilio-ruby/rest/conversations/v1/service.rb +23 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/participant_conversation.rb +324 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/user.rb +44 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/user/user_conversation.rb +466 -0
- data/lib/twilio-ruby/rest/conversations/v1/user.rb +35 -0
- data/lib/twilio-ruby/rest/conversations/v1/user/user_conversation.rb +442 -0
- data/lib/twilio-ruby/rest/insights.rb +6 -0
- data/lib/twilio-ruby/rest/insights/v1.rb +7 -0
- data/lib/twilio-ruby/rest/insights/v1/call_summaries.rb +428 -0
- data/lib/twilio-ruby/rest/messaging/v1/brand_registration.rb +19 -1
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/activity.rb +7 -0
- data/lib/twilio-ruby/rest/verify/v2/service/verification.rb +3 -1
- data/lib/twilio-ruby/rest/verify/v2/service/webhook.rb +24 -5
- data/lib/twilio-ruby/version.rb +1 -1
- data/sonar-project.properties +13 -0
- metadata +8 -2
@@ -172,6 +172,7 @@ module Twilio
|
|
172
172
|
@users = nil
|
173
173
|
@roles = nil
|
174
174
|
@configuration = nil
|
175
|
+
@participant_conversations = nil
|
175
176
|
end
|
176
177
|
|
177
178
|
##
|
@@ -270,6 +271,21 @@ module Twilio
|
|
270
271
|
ConfigurationContext.new(@version, @solution[:sid], )
|
271
272
|
end
|
272
273
|
|
274
|
+
##
|
275
|
+
# Access the participant_conversations
|
276
|
+
# @return [ParticipantConversationList]
|
277
|
+
# @return [ParticipantConversationContext]
|
278
|
+
def participant_conversations
|
279
|
+
unless @participant_conversations
|
280
|
+
@participant_conversations = ParticipantConversationList.new(
|
281
|
+
@version,
|
282
|
+
chat_service_sid: @solution[:sid],
|
283
|
+
)
|
284
|
+
end
|
285
|
+
|
286
|
+
@participant_conversations
|
287
|
+
end
|
288
|
+
|
273
289
|
##
|
274
290
|
# Provide a user friendly representation
|
275
291
|
def to_s
|
@@ -414,6 +430,13 @@ module Twilio
|
|
414
430
|
context.configuration
|
415
431
|
end
|
416
432
|
|
433
|
+
##
|
434
|
+
# Access the participant_conversations
|
435
|
+
# @return [participant_conversations] participant_conversations
|
436
|
+
def participant_conversations
|
437
|
+
context.participant_conversations
|
438
|
+
end
|
439
|
+
|
417
440
|
##
|
418
441
|
# Provide a user friendly representation
|
419
442
|
def to_s
|
@@ -0,0 +1,324 @@
|
|
1
|
+
##
|
2
|
+
# This code was generated by
|
3
|
+
# \ / _ _ _| _ _
|
4
|
+
# | (_)\/(_)(_|\/| |(/_ v1.0.0
|
5
|
+
# / /
|
6
|
+
#
|
7
|
+
# frozen_string_literal: true
|
8
|
+
|
9
|
+
module Twilio
|
10
|
+
module REST
|
11
|
+
class Conversations < Domain
|
12
|
+
class V1 < Version
|
13
|
+
class ServiceContext < InstanceContext
|
14
|
+
class ParticipantConversationList < ListResource
|
15
|
+
##
|
16
|
+
# Initialize the ParticipantConversationList
|
17
|
+
# @param [Version] version Version that contains the resource
|
18
|
+
# @param [String] chat_service_sid The unique ID of the {Conversation
|
19
|
+
# Service}[https://www.twilio.com/docs/conversations/api/service-resource] this
|
20
|
+
# conversation belongs to.
|
21
|
+
# @return [ParticipantConversationList] ParticipantConversationList
|
22
|
+
def initialize(version, chat_service_sid: nil)
|
23
|
+
super(version)
|
24
|
+
|
25
|
+
# Path Solution
|
26
|
+
@solution = {chat_service_sid: chat_service_sid}
|
27
|
+
@uri = "/Services/#{@solution[:chat_service_sid]}/ParticipantConversations"
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Lists ParticipantConversationInstance records from the API as a list.
|
32
|
+
# Unlike stream(), this operation is eager and will load `limit` records into
|
33
|
+
# memory before returning.
|
34
|
+
# @param [String] identity A unique string identifier for the conversation
|
35
|
+
# participant as {Conversation
|
36
|
+
# User}[https://www.twilio.com/docs/conversations/api/user-resource]. This
|
37
|
+
# parameter is non-null if (and only if) the participant is using the
|
38
|
+
# Conversations SDK to communicate. Limited to 256 characters.
|
39
|
+
# @param [String] address A unique string identifier for the conversation
|
40
|
+
# participant who's not a Conversation User. This parameter could be found in
|
41
|
+
# messaging_binding.address field of Participant resource. It should be
|
42
|
+
# url-encoded.
|
43
|
+
# @param [Integer] limit Upper limit for the number of records to return. stream()
|
44
|
+
# guarantees to never return more than limit. Default is no limit
|
45
|
+
# @param [Integer] page_size Number of records to fetch per request, when
|
46
|
+
# not set will use the default value of 50 records. If no page_size is defined
|
47
|
+
# but a limit is defined, stream() will attempt to read the limit with the most
|
48
|
+
# efficient page size, i.e. min(limit, 1000)
|
49
|
+
# @return [Array] Array of up to limit results
|
50
|
+
def list(identity: :unset, address: :unset, limit: nil, page_size: nil)
|
51
|
+
self.stream(identity: identity, address: address, limit: limit, page_size: page_size).entries
|
52
|
+
end
|
53
|
+
|
54
|
+
##
|
55
|
+
# Streams ParticipantConversationInstance records from the API as an Enumerable.
|
56
|
+
# This operation lazily loads records as efficiently as possible until the limit
|
57
|
+
# is reached.
|
58
|
+
# @param [String] identity A unique string identifier for the conversation
|
59
|
+
# participant as {Conversation
|
60
|
+
# User}[https://www.twilio.com/docs/conversations/api/user-resource]. This
|
61
|
+
# parameter is non-null if (and only if) the participant is using the
|
62
|
+
# Conversations SDK to communicate. Limited to 256 characters.
|
63
|
+
# @param [String] address A unique string identifier for the conversation
|
64
|
+
# participant who's not a Conversation User. This parameter could be found in
|
65
|
+
# messaging_binding.address field of Participant resource. It should be
|
66
|
+
# url-encoded.
|
67
|
+
# @param [Integer] limit Upper limit for the number of records to return. stream()
|
68
|
+
# guarantees to never return more than limit. Default is no limit.
|
69
|
+
# @param [Integer] page_size Number of records to fetch per request, when
|
70
|
+
# not set will use the default value of 50 records. If no page_size is defined
|
71
|
+
# but a limit is defined, stream() will attempt to read the limit with the most
|
72
|
+
# efficient page size, i.e. min(limit, 1000)
|
73
|
+
# @return [Enumerable] Enumerable that will yield up to limit results
|
74
|
+
def stream(identity: :unset, address: :unset, limit: nil, page_size: nil)
|
75
|
+
limits = @version.read_limits(limit, page_size)
|
76
|
+
|
77
|
+
page = self.page(identity: identity, address: address, page_size: limits[:page_size], )
|
78
|
+
|
79
|
+
@version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
|
80
|
+
end
|
81
|
+
|
82
|
+
##
|
83
|
+
# When passed a block, yields ParticipantConversationInstance records from the API.
|
84
|
+
# This operation lazily loads records as efficiently as possible until the limit
|
85
|
+
# is reached.
|
86
|
+
def each
|
87
|
+
limits = @version.read_limits
|
88
|
+
|
89
|
+
page = self.page(page_size: limits[:page_size], )
|
90
|
+
|
91
|
+
@version.stream(page,
|
92
|
+
limit: limits[:limit],
|
93
|
+
page_limit: limits[:page_limit]).each {|x| yield x}
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
# Retrieve a single page of ParticipantConversationInstance records from the API.
|
98
|
+
# Request is executed immediately.
|
99
|
+
# @param [String] identity A unique string identifier for the conversation
|
100
|
+
# participant as {Conversation
|
101
|
+
# User}[https://www.twilio.com/docs/conversations/api/user-resource]. This
|
102
|
+
# parameter is non-null if (and only if) the participant is using the
|
103
|
+
# Conversations SDK to communicate. Limited to 256 characters.
|
104
|
+
# @param [String] address A unique string identifier for the conversation
|
105
|
+
# participant who's not a Conversation User. This parameter could be found in
|
106
|
+
# messaging_binding.address field of Participant resource. It should be
|
107
|
+
# url-encoded.
|
108
|
+
# @param [String] page_token PageToken provided by the API
|
109
|
+
# @param [Integer] page_number Page Number, this value is simply for client state
|
110
|
+
# @param [Integer] page_size Number of records to return, defaults to 50
|
111
|
+
# @return [Page] Page of ParticipantConversationInstance
|
112
|
+
def page(identity: :unset, address: :unset, page_token: :unset, page_number: :unset, page_size: :unset)
|
113
|
+
params = Twilio::Values.of({
|
114
|
+
'Identity' => identity,
|
115
|
+
'Address' => address,
|
116
|
+
'PageToken' => page_token,
|
117
|
+
'Page' => page_number,
|
118
|
+
'PageSize' => page_size,
|
119
|
+
})
|
120
|
+
|
121
|
+
response = @version.page('GET', @uri, params: params)
|
122
|
+
|
123
|
+
ParticipantConversationPage.new(@version, response, @solution)
|
124
|
+
end
|
125
|
+
|
126
|
+
##
|
127
|
+
# Retrieve a single page of ParticipantConversationInstance records from the API.
|
128
|
+
# Request is executed immediately.
|
129
|
+
# @param [String] target_url API-generated URL for the requested results page
|
130
|
+
# @return [Page] Page of ParticipantConversationInstance
|
131
|
+
def get_page(target_url)
|
132
|
+
response = @version.domain.request(
|
133
|
+
'GET',
|
134
|
+
target_url
|
135
|
+
)
|
136
|
+
ParticipantConversationPage.new(@version, response, @solution)
|
137
|
+
end
|
138
|
+
|
139
|
+
##
|
140
|
+
# Provide a user friendly representation
|
141
|
+
def to_s
|
142
|
+
'#<Twilio.Conversations.V1.ParticipantConversationList>'
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
class ParticipantConversationPage < Page
|
147
|
+
##
|
148
|
+
# Initialize the ParticipantConversationPage
|
149
|
+
# @param [Version] version Version that contains the resource
|
150
|
+
# @param [Response] response Response from the API
|
151
|
+
# @param [Hash] solution Path solution for the resource
|
152
|
+
# @return [ParticipantConversationPage] ParticipantConversationPage
|
153
|
+
def initialize(version, response, solution)
|
154
|
+
super(version, response)
|
155
|
+
|
156
|
+
# Path Solution
|
157
|
+
@solution = solution
|
158
|
+
end
|
159
|
+
|
160
|
+
##
|
161
|
+
# Build an instance of ParticipantConversationInstance
|
162
|
+
# @param [Hash] payload Payload response from the API
|
163
|
+
# @return [ParticipantConversationInstance] ParticipantConversationInstance
|
164
|
+
def get_instance(payload)
|
165
|
+
ParticipantConversationInstance.new(
|
166
|
+
@version,
|
167
|
+
payload,
|
168
|
+
chat_service_sid: @solution[:chat_service_sid],
|
169
|
+
)
|
170
|
+
end
|
171
|
+
|
172
|
+
##
|
173
|
+
# Provide a user friendly representation
|
174
|
+
def to_s
|
175
|
+
'<Twilio.Conversations.V1.ParticipantConversationPage>'
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
class ParticipantConversationInstance < InstanceResource
|
180
|
+
##
|
181
|
+
# Initialize the ParticipantConversationInstance
|
182
|
+
# @param [Version] version Version that contains the resource
|
183
|
+
# @param [Hash] payload payload that contains response from Twilio
|
184
|
+
# @param [String] chat_service_sid The unique ID of the {Conversation
|
185
|
+
# Service}[https://www.twilio.com/docs/conversations/api/service-resource] this
|
186
|
+
# conversation belongs to.
|
187
|
+
# @return [ParticipantConversationInstance] ParticipantConversationInstance
|
188
|
+
def initialize(version, payload, chat_service_sid: nil)
|
189
|
+
super(version)
|
190
|
+
|
191
|
+
# Marshaled Properties
|
192
|
+
@properties = {
|
193
|
+
'account_sid' => payload['account_sid'],
|
194
|
+
'chat_service_sid' => payload['chat_service_sid'],
|
195
|
+
'participant_sid' => payload['participant_sid'],
|
196
|
+
'participant_user_sid' => payload['participant_user_sid'],
|
197
|
+
'participant_identity' => payload['participant_identity'],
|
198
|
+
'participant_messaging_binding' => payload['participant_messaging_binding'],
|
199
|
+
'conversation_sid' => payload['conversation_sid'],
|
200
|
+
'conversation_unique_name' => payload['conversation_unique_name'],
|
201
|
+
'conversation_friendly_name' => payload['conversation_friendly_name'],
|
202
|
+
'conversation_attributes' => payload['conversation_attributes'],
|
203
|
+
'conversation_date_created' => Twilio.deserialize_iso8601_datetime(payload['conversation_date_created']),
|
204
|
+
'conversation_date_updated' => Twilio.deserialize_iso8601_datetime(payload['conversation_date_updated']),
|
205
|
+
'conversation_created_by' => payload['conversation_created_by'],
|
206
|
+
'conversation_state' => payload['conversation_state'],
|
207
|
+
'conversation_timers' => payload['conversation_timers'],
|
208
|
+
'links' => payload['links'],
|
209
|
+
}
|
210
|
+
end
|
211
|
+
|
212
|
+
##
|
213
|
+
# @return [String] The unique ID of the Account responsible for this conversation.
|
214
|
+
def account_sid
|
215
|
+
@properties['account_sid']
|
216
|
+
end
|
217
|
+
|
218
|
+
##
|
219
|
+
# @return [String] The unique ID of the Conversation Service this conversation belongs to.
|
220
|
+
def chat_service_sid
|
221
|
+
@properties['chat_service_sid']
|
222
|
+
end
|
223
|
+
|
224
|
+
##
|
225
|
+
# @return [String] The unique ID of the Participant.
|
226
|
+
def participant_sid
|
227
|
+
@properties['participant_sid']
|
228
|
+
end
|
229
|
+
|
230
|
+
##
|
231
|
+
# @return [String] The unique ID for the conversation participant as Conversation User.
|
232
|
+
def participant_user_sid
|
233
|
+
@properties['participant_user_sid']
|
234
|
+
end
|
235
|
+
|
236
|
+
##
|
237
|
+
# @return [String] A unique string identifier for the conversation participant as Conversation User.
|
238
|
+
def participant_identity
|
239
|
+
@properties['participant_identity']
|
240
|
+
end
|
241
|
+
|
242
|
+
##
|
243
|
+
# @return [Hash] Information about how this participant exchanges messages with the conversation.
|
244
|
+
def participant_messaging_binding
|
245
|
+
@properties['participant_messaging_binding']
|
246
|
+
end
|
247
|
+
|
248
|
+
##
|
249
|
+
# @return [String] The unique ID of the Conversation this Participant belongs to.
|
250
|
+
def conversation_sid
|
251
|
+
@properties['conversation_sid']
|
252
|
+
end
|
253
|
+
|
254
|
+
##
|
255
|
+
# @return [String] An application-defined string that uniquely identifies the Conversation resource.
|
256
|
+
def conversation_unique_name
|
257
|
+
@properties['conversation_unique_name']
|
258
|
+
end
|
259
|
+
|
260
|
+
##
|
261
|
+
# @return [String] The human-readable name of this conversation.
|
262
|
+
def conversation_friendly_name
|
263
|
+
@properties['conversation_friendly_name']
|
264
|
+
end
|
265
|
+
|
266
|
+
##
|
267
|
+
# @return [String] An optional string metadata field you can use to store any data you wish.
|
268
|
+
def conversation_attributes
|
269
|
+
@properties['conversation_attributes']
|
270
|
+
end
|
271
|
+
|
272
|
+
##
|
273
|
+
# @return [Time] The date that this conversation was created.
|
274
|
+
def conversation_date_created
|
275
|
+
@properties['conversation_date_created']
|
276
|
+
end
|
277
|
+
|
278
|
+
##
|
279
|
+
# @return [Time] The date that this conversation was last updated.
|
280
|
+
def conversation_date_updated
|
281
|
+
@properties['conversation_date_updated']
|
282
|
+
end
|
283
|
+
|
284
|
+
##
|
285
|
+
# @return [String] Creator of this conversation.
|
286
|
+
def conversation_created_by
|
287
|
+
@properties['conversation_created_by']
|
288
|
+
end
|
289
|
+
|
290
|
+
##
|
291
|
+
# @return [participant_conversation.State] The current state of this User Conversation
|
292
|
+
def conversation_state
|
293
|
+
@properties['conversation_state']
|
294
|
+
end
|
295
|
+
|
296
|
+
##
|
297
|
+
# @return [Hash] Timer date values for this conversation.
|
298
|
+
def conversation_timers
|
299
|
+
@properties['conversation_timers']
|
300
|
+
end
|
301
|
+
|
302
|
+
##
|
303
|
+
# @return [String] Absolute URLs to access the participant and conversation of this Participant Conversation.
|
304
|
+
def links
|
305
|
+
@properties['links']
|
306
|
+
end
|
307
|
+
|
308
|
+
##
|
309
|
+
# Provide a user friendly representation
|
310
|
+
def to_s
|
311
|
+
"<Twilio.Conversations.V1.ParticipantConversationInstance>"
|
312
|
+
end
|
313
|
+
|
314
|
+
##
|
315
|
+
# Provide a detailed, user friendly representation
|
316
|
+
def inspect
|
317
|
+
"<Twilio.Conversations.V1.ParticipantConversationInstance>"
|
318
|
+
end
|
319
|
+
end
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
324
|
+
end
|
@@ -189,6 +189,9 @@ module Twilio
|
|
189
189
|
# Path Solution
|
190
190
|
@solution = {chat_service_sid: chat_service_sid, sid: sid, }
|
191
191
|
@uri = "/Services/#{@solution[:chat_service_sid]}/Users/#{@solution[:sid]}"
|
192
|
+
|
193
|
+
# Dependents
|
194
|
+
@user_conversations = nil
|
192
195
|
end
|
193
196
|
|
194
197
|
##
|
@@ -246,6 +249,33 @@ module Twilio
|
|
246
249
|
)
|
247
250
|
end
|
248
251
|
|
252
|
+
##
|
253
|
+
# Access the user_conversations
|
254
|
+
# @return [UserConversationList]
|
255
|
+
# @return [UserConversationContext] if conversation_sid was passed.
|
256
|
+
def user_conversations(conversation_sid=:unset)
|
257
|
+
raise ArgumentError, 'conversation_sid cannot be nil' if conversation_sid.nil?
|
258
|
+
|
259
|
+
if conversation_sid != :unset
|
260
|
+
return UserConversationContext.new(
|
261
|
+
@version,
|
262
|
+
@solution[:chat_service_sid],
|
263
|
+
@solution[:sid],
|
264
|
+
conversation_sid,
|
265
|
+
)
|
266
|
+
end
|
267
|
+
|
268
|
+
unless @user_conversations
|
269
|
+
@user_conversations = UserConversationList.new(
|
270
|
+
@version,
|
271
|
+
chat_service_sid: @solution[:chat_service_sid],
|
272
|
+
user_sid: @solution[:sid],
|
273
|
+
)
|
274
|
+
end
|
275
|
+
|
276
|
+
@user_conversations
|
277
|
+
end
|
278
|
+
|
249
279
|
##
|
250
280
|
# Provide a user friendly representation
|
251
281
|
def to_s
|
@@ -289,6 +319,7 @@ module Twilio
|
|
289
319
|
'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
|
290
320
|
'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
|
291
321
|
'url' => payload['url'],
|
322
|
+
'links' => payload['links'],
|
292
323
|
}
|
293
324
|
|
294
325
|
# Context
|
@@ -379,6 +410,12 @@ module Twilio
|
|
379
410
|
@properties['url']
|
380
411
|
end
|
381
412
|
|
413
|
+
##
|
414
|
+
# @return [String] The links
|
415
|
+
def links
|
416
|
+
@properties['links']
|
417
|
+
end
|
418
|
+
|
382
419
|
##
|
383
420
|
# Update the UserInstance
|
384
421
|
# @param [String] friendly_name The string that you assigned to describe the
|
@@ -416,6 +453,13 @@ module Twilio
|
|
416
453
|
context.fetch
|
417
454
|
end
|
418
455
|
|
456
|
+
##
|
457
|
+
# Access the user_conversations
|
458
|
+
# @return [user_conversations] user_conversations
|
459
|
+
def user_conversations
|
460
|
+
context.user_conversations
|
461
|
+
end
|
462
|
+
|
419
463
|
##
|
420
464
|
# Provide a user friendly representation
|
421
465
|
def to_s
|
@@ -0,0 +1,466 @@
|
|
1
|
+
##
|
2
|
+
# This code was generated by
|
3
|
+
# \ / _ _ _| _ _
|
4
|
+
# | (_)\/(_)(_|\/| |(/_ v1.0.0
|
5
|
+
# / /
|
6
|
+
#
|
7
|
+
# frozen_string_literal: true
|
8
|
+
|
9
|
+
module Twilio
|
10
|
+
module REST
|
11
|
+
class Conversations < Domain
|
12
|
+
class V1 < Version
|
13
|
+
class ServiceContext < InstanceContext
|
14
|
+
class UserContext < InstanceContext
|
15
|
+
class UserConversationList < ListResource
|
16
|
+
##
|
17
|
+
# Initialize the UserConversationList
|
18
|
+
# @param [Version] version Version that contains the resource
|
19
|
+
# @param [String] chat_service_sid The unique ID of the {Conversation
|
20
|
+
# Service}[https://www.twilio.com/docs/conversations/api/service-resource] this
|
21
|
+
# conversation belongs to.
|
22
|
+
# @param [String] user_sid The unique string that identifies the {User
|
23
|
+
# resource}[https://www.twilio.com/docs/conversations/api/user-resource].
|
24
|
+
# @return [UserConversationList] UserConversationList
|
25
|
+
def initialize(version, chat_service_sid: nil, user_sid: nil)
|
26
|
+
super(version)
|
27
|
+
|
28
|
+
# Path Solution
|
29
|
+
@solution = {chat_service_sid: chat_service_sid, user_sid: user_sid}
|
30
|
+
@uri = "/Services/#{@solution[:chat_service_sid]}/Users/#{@solution[:user_sid]}/Conversations"
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# Lists UserConversationInstance records from the API as a list.
|
35
|
+
# Unlike stream(), this operation is eager and will load `limit` records into
|
36
|
+
# memory before returning.
|
37
|
+
# @param [Integer] limit Upper limit for the number of records to return. stream()
|
38
|
+
# guarantees to never return more than limit. Default is no limit
|
39
|
+
# @param [Integer] page_size Number of records to fetch per request, when
|
40
|
+
# not set will use the default value of 50 records. If no page_size is defined
|
41
|
+
# but a limit is defined, stream() will attempt to read the limit with the most
|
42
|
+
# efficient page size, i.e. min(limit, 1000)
|
43
|
+
# @return [Array] Array of up to limit results
|
44
|
+
def list(limit: nil, page_size: nil)
|
45
|
+
self.stream(limit: limit, page_size: page_size).entries
|
46
|
+
end
|
47
|
+
|
48
|
+
##
|
49
|
+
# Streams UserConversationInstance records from the API as an Enumerable.
|
50
|
+
# This operation lazily loads records as efficiently as possible until the limit
|
51
|
+
# is reached.
|
52
|
+
# @param [Integer] limit Upper limit for the number of records to return. stream()
|
53
|
+
# guarantees to never return more than limit. Default is no limit.
|
54
|
+
# @param [Integer] page_size Number of records to fetch per request, when
|
55
|
+
# not set will use the default value of 50 records. If no page_size is defined
|
56
|
+
# but a limit is defined, stream() will attempt to read the limit with the most
|
57
|
+
# efficient page size, i.e. min(limit, 1000)
|
58
|
+
# @return [Enumerable] Enumerable that will yield up to limit results
|
59
|
+
def stream(limit: nil, page_size: nil)
|
60
|
+
limits = @version.read_limits(limit, page_size)
|
61
|
+
|
62
|
+
page = self.page(page_size: limits[:page_size], )
|
63
|
+
|
64
|
+
@version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
|
65
|
+
end
|
66
|
+
|
67
|
+
##
|
68
|
+
# When passed a block, yields UserConversationInstance records from the API.
|
69
|
+
# This operation lazily loads records as efficiently as possible until the limit
|
70
|
+
# is reached.
|
71
|
+
def each
|
72
|
+
limits = @version.read_limits
|
73
|
+
|
74
|
+
page = self.page(page_size: limits[:page_size], )
|
75
|
+
|
76
|
+
@version.stream(page,
|
77
|
+
limit: limits[:limit],
|
78
|
+
page_limit: limits[:page_limit]).each {|x| yield x}
|
79
|
+
end
|
80
|
+
|
81
|
+
##
|
82
|
+
# Retrieve a single page of UserConversationInstance records from the API.
|
83
|
+
# Request is executed immediately.
|
84
|
+
# @param [String] page_token PageToken provided by the API
|
85
|
+
# @param [Integer] page_number Page Number, this value is simply for client state
|
86
|
+
# @param [Integer] page_size Number of records to return, defaults to 50
|
87
|
+
# @return [Page] Page of UserConversationInstance
|
88
|
+
def page(page_token: :unset, page_number: :unset, page_size: :unset)
|
89
|
+
params = Twilio::Values.of({
|
90
|
+
'PageToken' => page_token,
|
91
|
+
'Page' => page_number,
|
92
|
+
'PageSize' => page_size,
|
93
|
+
})
|
94
|
+
|
95
|
+
response = @version.page('GET', @uri, params: params)
|
96
|
+
|
97
|
+
UserConversationPage.new(@version, response, @solution)
|
98
|
+
end
|
99
|
+
|
100
|
+
##
|
101
|
+
# Retrieve a single page of UserConversationInstance records from the API.
|
102
|
+
# Request is executed immediately.
|
103
|
+
# @param [String] target_url API-generated URL for the requested results page
|
104
|
+
# @return [Page] Page of UserConversationInstance
|
105
|
+
def get_page(target_url)
|
106
|
+
response = @version.domain.request(
|
107
|
+
'GET',
|
108
|
+
target_url
|
109
|
+
)
|
110
|
+
UserConversationPage.new(@version, response, @solution)
|
111
|
+
end
|
112
|
+
|
113
|
+
##
|
114
|
+
# Provide a user friendly representation
|
115
|
+
def to_s
|
116
|
+
'#<Twilio.Conversations.V1.UserConversationList>'
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
class UserConversationPage < Page
|
121
|
+
##
|
122
|
+
# Initialize the UserConversationPage
|
123
|
+
# @param [Version] version Version that contains the resource
|
124
|
+
# @param [Response] response Response from the API
|
125
|
+
# @param [Hash] solution Path solution for the resource
|
126
|
+
# @return [UserConversationPage] UserConversationPage
|
127
|
+
def initialize(version, response, solution)
|
128
|
+
super(version, response)
|
129
|
+
|
130
|
+
# Path Solution
|
131
|
+
@solution = solution
|
132
|
+
end
|
133
|
+
|
134
|
+
##
|
135
|
+
# Build an instance of UserConversationInstance
|
136
|
+
# @param [Hash] payload Payload response from the API
|
137
|
+
# @return [UserConversationInstance] UserConversationInstance
|
138
|
+
def get_instance(payload)
|
139
|
+
UserConversationInstance.new(
|
140
|
+
@version,
|
141
|
+
payload,
|
142
|
+
chat_service_sid: @solution[:chat_service_sid],
|
143
|
+
user_sid: @solution[:user_sid],
|
144
|
+
)
|
145
|
+
end
|
146
|
+
|
147
|
+
##
|
148
|
+
# Provide a user friendly representation
|
149
|
+
def to_s
|
150
|
+
'<Twilio.Conversations.V1.UserConversationPage>'
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
class UserConversationContext < InstanceContext
|
155
|
+
##
|
156
|
+
# Initialize the UserConversationContext
|
157
|
+
# @param [Version] version Version that contains the resource
|
158
|
+
# @param [String] chat_service_sid The SID of the {Conversation
|
159
|
+
# Service}[https://www.twilio.com/docs/conversations/api/service-resource] the
|
160
|
+
# Conversation resource is associated with.
|
161
|
+
# @param [String] user_sid The unique SID identifier of the {User
|
162
|
+
# resource}[https://www.twilio.com/docs/conversations/api/user-resource]. This
|
163
|
+
# value can be either the `sid` or the `identity` of the User resource.
|
164
|
+
# @param [String] conversation_sid The unique SID identifier of the Conversation.
|
165
|
+
# This value can be either the `sid` or the `unique_name` of the {Conversation
|
166
|
+
# resource}[https://www.twilio.com/docs/conversations/api/conversation-resource].
|
167
|
+
# @return [UserConversationContext] UserConversationContext
|
168
|
+
def initialize(version, chat_service_sid, user_sid, conversation_sid)
|
169
|
+
super(version)
|
170
|
+
|
171
|
+
# Path Solution
|
172
|
+
@solution = {
|
173
|
+
chat_service_sid: chat_service_sid,
|
174
|
+
user_sid: user_sid,
|
175
|
+
conversation_sid: conversation_sid,
|
176
|
+
}
|
177
|
+
@uri = "/Services/#{@solution[:chat_service_sid]}/Users/#{@solution[:user_sid]}/Conversations/#{@solution[:conversation_sid]}"
|
178
|
+
end
|
179
|
+
|
180
|
+
##
|
181
|
+
# Update the UserConversationInstance
|
182
|
+
# @param [user_conversation.NotificationLevel] notification_level The Notification
|
183
|
+
# Level of this User Conversation. One of `default` or `muted`.
|
184
|
+
# @param [Time] last_read_timestamp The date of the last message read in
|
185
|
+
# conversation by the user, given in ISO 8601 format.
|
186
|
+
# @param [String] last_read_message_index The index of the last Message in the
|
187
|
+
# Conversation that the Participant has read.
|
188
|
+
# @return [UserConversationInstance] Updated UserConversationInstance
|
189
|
+
def update(notification_level: :unset, last_read_timestamp: :unset, last_read_message_index: :unset)
|
190
|
+
data = Twilio::Values.of({
|
191
|
+
'NotificationLevel' => notification_level,
|
192
|
+
'LastReadTimestamp' => Twilio.serialize_iso8601_datetime(last_read_timestamp),
|
193
|
+
'LastReadMessageIndex' => last_read_message_index,
|
194
|
+
})
|
195
|
+
|
196
|
+
payload = @version.update('POST', @uri, data: data)
|
197
|
+
|
198
|
+
UserConversationInstance.new(
|
199
|
+
@version,
|
200
|
+
payload,
|
201
|
+
chat_service_sid: @solution[:chat_service_sid],
|
202
|
+
user_sid: @solution[:user_sid],
|
203
|
+
conversation_sid: @solution[:conversation_sid],
|
204
|
+
)
|
205
|
+
end
|
206
|
+
|
207
|
+
##
|
208
|
+
# Delete the UserConversationInstance
|
209
|
+
# @return [Boolean] true if delete succeeds, false otherwise
|
210
|
+
def delete
|
211
|
+
@version.delete('DELETE', @uri)
|
212
|
+
end
|
213
|
+
|
214
|
+
##
|
215
|
+
# Fetch the UserConversationInstance
|
216
|
+
# @return [UserConversationInstance] Fetched UserConversationInstance
|
217
|
+
def fetch
|
218
|
+
payload = @version.fetch('GET', @uri)
|
219
|
+
|
220
|
+
UserConversationInstance.new(
|
221
|
+
@version,
|
222
|
+
payload,
|
223
|
+
chat_service_sid: @solution[:chat_service_sid],
|
224
|
+
user_sid: @solution[:user_sid],
|
225
|
+
conversation_sid: @solution[:conversation_sid],
|
226
|
+
)
|
227
|
+
end
|
228
|
+
|
229
|
+
##
|
230
|
+
# Provide a user friendly representation
|
231
|
+
def to_s
|
232
|
+
context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
|
233
|
+
"#<Twilio.Conversations.V1.UserConversationContext #{context}>"
|
234
|
+
end
|
235
|
+
|
236
|
+
##
|
237
|
+
# Provide a detailed, user friendly representation
|
238
|
+
def inspect
|
239
|
+
context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
|
240
|
+
"#<Twilio.Conversations.V1.UserConversationContext #{context}>"
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
class UserConversationInstance < InstanceResource
|
245
|
+
##
|
246
|
+
# Initialize the UserConversationInstance
|
247
|
+
# @param [Version] version Version that contains the resource
|
248
|
+
# @param [Hash] payload payload that contains response from Twilio
|
249
|
+
# @param [String] chat_service_sid The unique ID of the {Conversation
|
250
|
+
# Service}[https://www.twilio.com/docs/conversations/api/service-resource] this
|
251
|
+
# conversation belongs to.
|
252
|
+
# @param [String] user_sid The unique string that identifies the {User
|
253
|
+
# resource}[https://www.twilio.com/docs/conversations/api/user-resource].
|
254
|
+
# @param [String] conversation_sid The unique SID identifier of the Conversation.
|
255
|
+
# This value can be either the `sid` or the `unique_name` of the {Conversation
|
256
|
+
# resource}[https://www.twilio.com/docs/conversations/api/conversation-resource].
|
257
|
+
# @return [UserConversationInstance] UserConversationInstance
|
258
|
+
def initialize(version, payload, chat_service_sid: nil, user_sid: nil, conversation_sid: nil)
|
259
|
+
super(version)
|
260
|
+
|
261
|
+
# Marshaled Properties
|
262
|
+
@properties = {
|
263
|
+
'account_sid' => payload['account_sid'],
|
264
|
+
'chat_service_sid' => payload['chat_service_sid'],
|
265
|
+
'conversation_sid' => payload['conversation_sid'],
|
266
|
+
'unread_messages_count' => payload['unread_messages_count'] == nil ? payload['unread_messages_count'] : payload['unread_messages_count'].to_i,
|
267
|
+
'last_read_message_index' => payload['last_read_message_index'] == nil ? payload['last_read_message_index'] : payload['last_read_message_index'].to_i,
|
268
|
+
'participant_sid' => payload['participant_sid'],
|
269
|
+
'user_sid' => payload['user_sid'],
|
270
|
+
'friendly_name' => payload['friendly_name'],
|
271
|
+
'conversation_state' => payload['conversation_state'],
|
272
|
+
'timers' => payload['timers'],
|
273
|
+
'attributes' => payload['attributes'],
|
274
|
+
'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
|
275
|
+
'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
|
276
|
+
'created_by' => payload['created_by'],
|
277
|
+
'notification_level' => payload['notification_level'],
|
278
|
+
'unique_name' => payload['unique_name'],
|
279
|
+
'url' => payload['url'],
|
280
|
+
'links' => payload['links'],
|
281
|
+
}
|
282
|
+
|
283
|
+
# Context
|
284
|
+
@instance_context = nil
|
285
|
+
@params = {
|
286
|
+
'chat_service_sid' => chat_service_sid,
|
287
|
+
'user_sid' => user_sid,
|
288
|
+
'conversation_sid' => conversation_sid || @properties['conversation_sid'],
|
289
|
+
}
|
290
|
+
end
|
291
|
+
|
292
|
+
##
|
293
|
+
# Generate an instance context for the instance, the context is capable of
|
294
|
+
# performing various actions. All instance actions are proxied to the context
|
295
|
+
# @return [UserConversationContext] UserConversationContext for this UserConversationInstance
|
296
|
+
def context
|
297
|
+
unless @instance_context
|
298
|
+
@instance_context = UserConversationContext.new(
|
299
|
+
@version,
|
300
|
+
@params['chat_service_sid'],
|
301
|
+
@params['user_sid'],
|
302
|
+
@params['conversation_sid'],
|
303
|
+
)
|
304
|
+
end
|
305
|
+
@instance_context
|
306
|
+
end
|
307
|
+
|
308
|
+
##
|
309
|
+
# @return [String] The unique ID of the Account responsible for this conversation.
|
310
|
+
def account_sid
|
311
|
+
@properties['account_sid']
|
312
|
+
end
|
313
|
+
|
314
|
+
##
|
315
|
+
# @return [String] The unique ID of the Conversation Service this conversation belongs to.
|
316
|
+
def chat_service_sid
|
317
|
+
@properties['chat_service_sid']
|
318
|
+
end
|
319
|
+
|
320
|
+
##
|
321
|
+
# @return [String] The unique ID of the Conversation for this User Conversation.
|
322
|
+
def conversation_sid
|
323
|
+
@properties['conversation_sid']
|
324
|
+
end
|
325
|
+
|
326
|
+
##
|
327
|
+
# @return [String] The number of unread Messages in the Conversation.
|
328
|
+
def unread_messages_count
|
329
|
+
@properties['unread_messages_count']
|
330
|
+
end
|
331
|
+
|
332
|
+
##
|
333
|
+
# @return [String] The index of the last read Message .
|
334
|
+
def last_read_message_index
|
335
|
+
@properties['last_read_message_index']
|
336
|
+
end
|
337
|
+
|
338
|
+
##
|
339
|
+
# @return [String] Participant Sid.
|
340
|
+
def participant_sid
|
341
|
+
@properties['participant_sid']
|
342
|
+
end
|
343
|
+
|
344
|
+
##
|
345
|
+
# @return [String] The unique ID for the User.
|
346
|
+
def user_sid
|
347
|
+
@properties['user_sid']
|
348
|
+
end
|
349
|
+
|
350
|
+
##
|
351
|
+
# @return [String] The human-readable name of this conversation.
|
352
|
+
def friendly_name
|
353
|
+
@properties['friendly_name']
|
354
|
+
end
|
355
|
+
|
356
|
+
##
|
357
|
+
# @return [user_conversation.State] The current state of this User Conversation
|
358
|
+
def conversation_state
|
359
|
+
@properties['conversation_state']
|
360
|
+
end
|
361
|
+
|
362
|
+
##
|
363
|
+
# @return [Hash] Timer date values for this conversation.
|
364
|
+
def timers
|
365
|
+
@properties['timers']
|
366
|
+
end
|
367
|
+
|
368
|
+
##
|
369
|
+
# @return [String] An optional string metadata field you can use to store any data you wish.
|
370
|
+
def attributes
|
371
|
+
@properties['attributes']
|
372
|
+
end
|
373
|
+
|
374
|
+
##
|
375
|
+
# @return [Time] The date that this conversation was created.
|
376
|
+
def date_created
|
377
|
+
@properties['date_created']
|
378
|
+
end
|
379
|
+
|
380
|
+
##
|
381
|
+
# @return [Time] The date that this conversation was last updated.
|
382
|
+
def date_updated
|
383
|
+
@properties['date_updated']
|
384
|
+
end
|
385
|
+
|
386
|
+
##
|
387
|
+
# @return [String] Creator of this conversation.
|
388
|
+
def created_by
|
389
|
+
@properties['created_by']
|
390
|
+
end
|
391
|
+
|
392
|
+
##
|
393
|
+
# @return [user_conversation.NotificationLevel] The Notification Level of this User Conversation.
|
394
|
+
def notification_level
|
395
|
+
@properties['notification_level']
|
396
|
+
end
|
397
|
+
|
398
|
+
##
|
399
|
+
# @return [String] An application-defined string that uniquely identifies the Conversation resource.
|
400
|
+
def unique_name
|
401
|
+
@properties['unique_name']
|
402
|
+
end
|
403
|
+
|
404
|
+
##
|
405
|
+
# @return [String] The url
|
406
|
+
def url
|
407
|
+
@properties['url']
|
408
|
+
end
|
409
|
+
|
410
|
+
##
|
411
|
+
# @return [String] Absolute URLs to access the participant and conversation of this user conversation.
|
412
|
+
def links
|
413
|
+
@properties['links']
|
414
|
+
end
|
415
|
+
|
416
|
+
##
|
417
|
+
# Update the UserConversationInstance
|
418
|
+
# @param [user_conversation.NotificationLevel] notification_level The Notification
|
419
|
+
# Level of this User Conversation. One of `default` or `muted`.
|
420
|
+
# @param [Time] last_read_timestamp The date of the last message read in
|
421
|
+
# conversation by the user, given in ISO 8601 format.
|
422
|
+
# @param [String] last_read_message_index The index of the last Message in the
|
423
|
+
# Conversation that the Participant has read.
|
424
|
+
# @return [UserConversationInstance] Updated UserConversationInstance
|
425
|
+
def update(notification_level: :unset, last_read_timestamp: :unset, last_read_message_index: :unset)
|
426
|
+
context.update(
|
427
|
+
notification_level: notification_level,
|
428
|
+
last_read_timestamp: last_read_timestamp,
|
429
|
+
last_read_message_index: last_read_message_index,
|
430
|
+
)
|
431
|
+
end
|
432
|
+
|
433
|
+
##
|
434
|
+
# Delete the UserConversationInstance
|
435
|
+
# @return [Boolean] true if delete succeeds, false otherwise
|
436
|
+
def delete
|
437
|
+
context.delete
|
438
|
+
end
|
439
|
+
|
440
|
+
##
|
441
|
+
# Fetch the UserConversationInstance
|
442
|
+
# @return [UserConversationInstance] Fetched UserConversationInstance
|
443
|
+
def fetch
|
444
|
+
context.fetch
|
445
|
+
end
|
446
|
+
|
447
|
+
##
|
448
|
+
# Provide a user friendly representation
|
449
|
+
def to_s
|
450
|
+
values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
|
451
|
+
"<Twilio.Conversations.V1.UserConversationInstance #{values}>"
|
452
|
+
end
|
453
|
+
|
454
|
+
##
|
455
|
+
# Provide a detailed, user friendly representation
|
456
|
+
def inspect
|
457
|
+
values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
|
458
|
+
"<Twilio.Conversations.V1.UserConversationInstance #{values}>"
|
459
|
+
end
|
460
|
+
end
|
461
|
+
end
|
462
|
+
end
|
463
|
+
end
|
464
|
+
end
|
465
|
+
end
|
466
|
+
end
|