twilio-ruby 5.56.0 → 5.58.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.travis.yml +24 -7
  4. data/CHANGES.md +51 -0
  5. data/Gemfile +1 -0
  6. data/README.md +2 -2
  7. data/examples/examples.rb +1 -1
  8. data/lib/twilio-ruby/rest/api/v2010/account/call.rb +12 -3
  9. data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +4 -1
  10. data/lib/twilio-ruby/rest/api/v2010/account/conference/recording.rb +1 -1
  11. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/credential_list_mapping.rb +11 -11
  12. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/ip_access_control_list_mapping.rb +11 -11
  13. data/lib/twilio-ruby/rest/conversations.rb +6 -0
  14. data/lib/twilio-ruby/rest/conversations/v1.rb +7 -0
  15. data/lib/twilio-ruby/rest/conversations/v1/participant_conversation.rb +312 -0
  16. data/lib/twilio-ruby/rest/conversations/v1/service.rb +23 -0
  17. data/lib/twilio-ruby/rest/conversations/v1/service/participant_conversation.rb +324 -0
  18. data/lib/twilio-ruby/rest/conversations/v1/service/user.rb +44 -0
  19. data/lib/twilio-ruby/rest/conversations/v1/service/user/user_conversation.rb +466 -0
  20. data/lib/twilio-ruby/rest/conversations/v1/user.rb +35 -0
  21. data/lib/twilio-ruby/rest/conversations/v1/user/user_conversation.rb +442 -0
  22. data/lib/twilio-ruby/rest/insights.rb +6 -0
  23. data/lib/twilio-ruby/rest/insights/v1.rb +7 -0
  24. data/lib/twilio-ruby/rest/insights/v1/call_summaries.rb +428 -0
  25. data/lib/twilio-ruby/rest/messaging/v1/brand_registration.rb +19 -1
  26. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/activity.rb +7 -0
  27. data/lib/twilio-ruby/rest/verify/v2/service/verification.rb +3 -1
  28. data/lib/twilio-ruby/rest/verify/v2/service/webhook.rb +24 -5
  29. data/lib/twilio-ruby/version.rb +1 -1
  30. data/sonar-project.properties +13 -0
  31. 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