twilio-ruby 5.25.2 → 5.25.3

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +11 -0
  3. data/README.md +2 -2
  4. data/lib/twilio-ruby/rest/authy.rb +8 -8
  5. data/lib/twilio-ruby/rest/authy/v1.rb +15 -15
  6. data/lib/twilio-ruby/rest/client.rb +7 -0
  7. data/lib/twilio-ruby/rest/conversations.rb +53 -0
  8. data/lib/twilio-ruby/rest/conversations/v1.rb +51 -0
  9. data/lib/twilio-ruby/rest/conversations/v1/conversation.rb +471 -0
  10. data/lib/twilio-ruby/rest/conversations/v1/conversation/message.rb +416 -0
  11. data/lib/twilio-ruby/rest/conversations/v1/conversation/participant.rb +407 -0
  12. data/lib/twilio-ruby/rest/conversations/v1/conversation/webhook.rb +432 -0
  13. data/lib/twilio-ruby/rest/conversations/v1/webhook.rb +272 -0
  14. data/lib/twilio-ruby/rest/flex_api.rb +6 -6
  15. data/lib/twilio-ruby/rest/flex_api/v1.rb +7 -7
  16. data/lib/twilio-ruby/rest/messaging.rb +8 -8
  17. data/lib/twilio-ruby/rest/messaging/v1.rb +14 -14
  18. data/lib/twilio-ruby/rest/preview.rb +20 -20
  19. data/lib/twilio-ruby/rest/preview/marketplace.rb +13 -13
  20. data/lib/twilio-ruby/rest/preview/trusted_comms.rb +14 -14
  21. data/lib/twilio-ruby/rest/serverless/v1/service/build.rb +14 -0
  22. data/lib/twilio-ruby/rest/serverless/v1/service/environment.rb +30 -0
  23. data/lib/twilio-ruby/rest/serverless/v1/service/environment/log.rb +370 -0
  24. data/lib/twilio-ruby/rest/video.rb +9 -9
  25. data/lib/twilio-ruby/rest/video/v1.rb +16 -16
  26. data/lib/twilio-ruby/rest/wireless.rb +6 -6
  27. data/lib/twilio-ruby/rest/wireless/v1.rb +9 -8
  28. data/lib/twilio-ruby/rest/wireless/v1/rate_plan.rb +27 -18
  29. data/lib/twilio-ruby/twiml/voice_response.rb +161 -11
  30. data/lib/twilio-ruby/version.rb +1 -1
  31. data/spec/integration/conversations/v1/conversation/message_spec.rb +223 -0
  32. data/spec/integration/conversations/v1/conversation/participant_spec.rb +265 -0
  33. data/spec/integration/conversations/v1/conversation/webhook_spec.rb +286 -0
  34. data/spec/integration/conversations/v1/conversation_spec.rb +218 -0
  35. data/spec/integration/conversations/v1/webhook_spec.rb +88 -0
  36. data/spec/integration/serverless/v1/service/build_spec.rb +28 -0
  37. data/spec/integration/serverless/v1/service/environment/log_spec.rb +98 -0
  38. data/spec/integration/serverless/v1/service/environment_spec.rb +4 -2
  39. data/spec/integration/verify/v2/service/verification_spec.rb +36 -0
  40. data/spec/integration/wireless/v1/rate_plan_spec.rb +12 -12
  41. metadata +22 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7446c84d3fdaed8c3eb92e246ecabcb0c86e5976724a89dfd3aceb351fa6fb3
4
- data.tar.gz: f2375e0fe848ef5cec994d4deaf5c574b26d713bf2d14b3cbe39f0e21e94d336
3
+ metadata.gz: bd77745a32efbf1a49af3c876422268d4f97ef2ffe20232d1017601a9794a0c0
4
+ data.tar.gz: 7d2dc0964c166398c12b1ab1022cc83ca5bd94418ae52a8a60a970c43b9f2dd1
5
5
  SHA512:
6
- metadata.gz: 30136b3f112902c4fd00f4bee84fddab76b2fbd73d24b82cfb4b0d12e9fb2dd3236be819d9227f0e3b6073ff0625111df62c161305fcb2a8c2f823d605f5125a
7
- data.tar.gz: aec7f152ab3c8a5ee3f4068e7d426b0662b7ad7db0da10c4f1205309aa2f4485d4c7940190ad62d2e46f9dedfaac98179513fcddac07a32214de6b1ee2015b51
6
+ metadata.gz: 9f6db888d496163430367b37eb030b8eba4c5e58e2186f2abd895a034c688f9872753a1ed62bdb063e64d1f1370b9bf0f8c8fbca49a9623b44f3cb229e4b1e75
7
+ data.tar.gz: df9c5bc3cb0f1caab8cb278625dc275cc3643f4f846ea7489eac804e656dadf085af2b6bc126bbefe61970fe7a5c2d5311f819def58857dbf0b1accc716814cc
data/CHANGES.md CHANGED
@@ -1,6 +1,17 @@
1
1
  twilio-ruby changelog
2
2
  =====================
3
3
 
4
+ [2019-08-05] Version 5.25.3
5
+ ----------------------------
6
+ **Preview**
7
+ - Added support for the header `Twilio-Sandbox-Mode` to mock all Voice dependencies
8
+
9
+ **Twiml**
10
+ - Add support for `<Siprec>` noun
11
+ - Add support for `<Stream>` noun
12
+ - Create verbs `<Start>` and `<Stop>`
13
+
14
+
4
15
  [2019-07-24] Version 5.25.2
5
16
  ----------------------------
6
17
  **Insights**
data/README.md CHANGED
@@ -26,13 +26,13 @@ in-line code documentation here in the library.
26
26
  To install using [Bundler][bundler] grab the latest stable version:
27
27
 
28
28
  ```ruby
29
- gem 'twilio-ruby', '~> 5.25.2'
29
+ gem 'twilio-ruby', '~> 5.25.3'
30
30
  ```
31
31
 
32
32
  To manually install `twilio-ruby` via [Rubygems][rubygems] simply gem install:
33
33
 
34
34
  ```bash
35
- gem install twilio-ruby -v 5.25.2
35
+ gem install twilio-ruby -v 5.25.3
36
36
  ```
37
37
 
38
38
  To build and install the development branch yourself from the latest source:
@@ -28,6 +28,14 @@ module Twilio
28
28
  @v1 ||= V1.new self
29
29
  end
30
30
 
31
+ ##
32
+ # @param [String] sid A 34 character string that uniquely identifies this Service.
33
+ # @return [Twilio::REST::Authy::V1::ServiceInstance] if sid was passed.
34
+ # @return [Twilio::REST::Authy::V1::ServiceList]
35
+ def services(sid=:unset)
36
+ self.v1.services(sid)
37
+ end
38
+
31
39
  ##
32
40
  # @param [form.FormTypes] form_type The Type of this Form. One of `form-app-push`,
33
41
  # `form-sms` or `form-totp`.
@@ -37,14 +45,6 @@ module Twilio
37
45
  self.v1.forms(form_type)
38
46
  end
39
47
 
40
- ##
41
- # @param [String] sid A 34 character string that uniquely identifies this Service.
42
- # @return [Twilio::REST::Authy::V1::ServiceInstance] if sid was passed.
43
- # @return [Twilio::REST::Authy::V1::ServiceList]
44
- def services(sid=:unset)
45
- self.v1.services(sid)
46
- end
47
-
48
48
  ##
49
49
  # Provide a user friendly representation
50
50
  def to_s
@@ -15,8 +15,22 @@ module Twilio
15
15
  def initialize(domain)
16
16
  super
17
17
  @version = 'v1'
18
- @forms = nil
19
18
  @services = nil
19
+ @forms = nil
20
+ end
21
+
22
+ ##
23
+ # @param [String] sid A 34 character string that uniquely identifies this Service.
24
+ # @return [Twilio::REST::Authy::V1::ServiceContext] if sid was passed.
25
+ # @return [Twilio::REST::Authy::V1::ServiceList]
26
+ def services(sid=:unset)
27
+ if sid.nil?
28
+ raise ArgumentError, 'sid cannot be nil'
29
+ elsif sid == :unset
30
+ @services ||= ServiceList.new self
31
+ else
32
+ ServiceContext.new(self, sid)
33
+ end
20
34
  end
21
35
 
22
36
  ##
@@ -34,20 +48,6 @@ module Twilio
34
48
  end
35
49
  end
36
50
 
37
- ##
38
- # @param [String] sid A 34 character string that uniquely identifies this Service.
39
- # @return [Twilio::REST::Authy::V1::ServiceContext] if sid was passed.
40
- # @return [Twilio::REST::Authy::V1::ServiceList]
41
- def services(sid=:unset)
42
- if sid.nil?
43
- raise ArgumentError, 'sid cannot be nil'
44
- elsif sid == :unset
45
- @services ||= ServiceList.new self
46
- else
47
- ServiceContext.new(self, sid)
48
- end
49
- end
50
-
51
51
  ##
52
52
  # Provide a user friendly representation
53
53
  def to_s
@@ -30,6 +30,7 @@ module Twilio
30
30
  @authy = nil
31
31
  @autopilot = nil
32
32
  @chat = nil
33
+ @conversations = nil
33
34
  @fax = nil
34
35
  @flex_api = nil
35
36
  @insights = nil
@@ -130,6 +131,12 @@ module Twilio
130
131
  @chat ||= Chat.new self
131
132
  end
132
133
 
134
+ ##
135
+ # Access the Conversations Twilio Domain
136
+ def conversations
137
+ @conversations ||= Conversations.new self
138
+ end
139
+
133
140
  ##
134
141
  # Access the Fax Twilio Domain
135
142
  def fax
@@ -0,0 +1,53 @@
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
+ ##
13
+ # Initialize the Conversations Domain
14
+ def initialize(twilio)
15
+ super
16
+
17
+ @base_url = 'https://conversations.twilio.com'
18
+ @host = 'conversations.twilio.com'
19
+ @port = 443
20
+
21
+ # Versions
22
+ @v1 = nil
23
+ end
24
+
25
+ ##
26
+ # Version v1 of conversations
27
+ def v1
28
+ @v1 ||= V1.new self
29
+ end
30
+
31
+ ##
32
+ # @param [String] sid A 34 character string that uniquely identifies this
33
+ # resource.
34
+ # @return [Twilio::REST::Conversations::V1::ConversationInstance] if sid was passed.
35
+ # @return [Twilio::REST::Conversations::V1::ConversationList]
36
+ def conversations(sid=:unset)
37
+ self.v1.conversations(sid)
38
+ end
39
+
40
+ ##
41
+ # @return [Twilio::REST::Conversations::V1::WebhookInstance]
42
+ def webhooks
43
+ self.v1.webhooks()
44
+ end
45
+
46
+ ##
47
+ # Provide a user friendly representation
48
+ def to_s
49
+ '#<Twilio::REST::Conversations>'
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,51 @@
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
12
+ class V1 < Version
13
+ ##
14
+ # Initialize the V1 version of Conversations
15
+ def initialize(domain)
16
+ super
17
+ @version = 'v1'
18
+ @conversations = nil
19
+ @webhooks = nil
20
+ end
21
+
22
+ ##
23
+ # @param [String] sid A 34 character string that uniquely identifies this
24
+ # resource.
25
+ # @return [Twilio::REST::Conversations::V1::ConversationContext] if sid was passed.
26
+ # @return [Twilio::REST::Conversations::V1::ConversationList]
27
+ def conversations(sid=:unset)
28
+ if sid.nil?
29
+ raise ArgumentError, 'sid cannot be nil'
30
+ elsif sid == :unset
31
+ @conversations ||= ConversationList.new self
32
+ else
33
+ ConversationContext.new(self, sid)
34
+ end
35
+ end
36
+
37
+ ##
38
+ # @return [Twilio::REST::Conversations::V1::WebhookContext]
39
+ def webhooks
40
+ @webhooks ||= WebhookContext.new self
41
+ end
42
+
43
+ ##
44
+ # Provide a user friendly representation
45
+ def to_s
46
+ '<Twilio::REST::Conversations::V1>'
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,471 @@
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
+ ##
14
+ # PLEASE NOTE that this class contains preview products that are subject to change. Use them with caution. If you currently do not have developer preview access, please contact help@twilio.com.
15
+ class ConversationList < ListResource
16
+ ##
17
+ # Initialize the ConversationList
18
+ # @param [Version] version Version that contains the resource
19
+ # @return [ConversationList] ConversationList
20
+ def initialize(version)
21
+ super(version)
22
+
23
+ # Path Solution
24
+ @solution = {}
25
+ @uri = "/Conversations"
26
+ end
27
+
28
+ ##
29
+ # Retrieve a single page of ConversationInstance records from the API.
30
+ # Request is executed immediately.
31
+ # @param [String] friendly_name The human-readable name of this conversation,
32
+ # limited to 256 characters. Optional.
33
+ # @param [Time] date_created The date that this resource was created.
34
+ # @param [Time] date_updated The date that this resource was last updated.
35
+ # @param [String] messaging_service_sid The unique id of the [SMS
36
+ # Service](https://www.twilio.com/docs/sms/services/api) this conversation belongs
37
+ # to.
38
+ # @return [ConversationInstance] Newly created ConversationInstance
39
+ def create(friendly_name: :unset, date_created: :unset, date_updated: :unset, messaging_service_sid: :unset)
40
+ data = Twilio::Values.of({
41
+ 'FriendlyName' => friendly_name,
42
+ 'DateCreated' => Twilio.serialize_iso8601_datetime(date_created),
43
+ 'DateUpdated' => Twilio.serialize_iso8601_datetime(date_updated),
44
+ 'MessagingServiceSid' => messaging_service_sid,
45
+ })
46
+
47
+ payload = @version.create(
48
+ 'POST',
49
+ @uri,
50
+ data: data
51
+ )
52
+
53
+ ConversationInstance.new(@version, payload, )
54
+ end
55
+
56
+ ##
57
+ # Lists ConversationInstance records from the API as a list.
58
+ # Unlike stream(), this operation is eager and will load `limit` records into
59
+ # memory before returning.
60
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
61
+ # guarantees to never return more than limit. Default is no limit
62
+ # @param [Integer] page_size Number of records to fetch per request, when
63
+ # not set will use the default value of 50 records. If no page_size is defined
64
+ # but a limit is defined, stream() will attempt to read the limit with the most
65
+ # efficient page size, i.e. min(limit, 1000)
66
+ # @return [Array] Array of up to limit results
67
+ def list(limit: nil, page_size: nil)
68
+ self.stream(limit: limit, page_size: page_size).entries
69
+ end
70
+
71
+ ##
72
+ # Streams ConversationInstance records from the API as an Enumerable.
73
+ # This operation lazily loads records as efficiently as possible until the limit
74
+ # is reached.
75
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
76
+ # guarantees to never return more than limit. Default is no limit.
77
+ # @param [Integer] page_size Number of records to fetch per request, when
78
+ # not set will use the default value of 50 records. If no page_size is defined
79
+ # but a limit is defined, stream() will attempt to read the limit with the most
80
+ # efficient page size, i.e. min(limit, 1000)
81
+ # @return [Enumerable] Enumerable that will yield up to limit results
82
+ def stream(limit: nil, page_size: nil)
83
+ limits = @version.read_limits(limit, page_size)
84
+
85
+ page = self.page(page_size: limits[:page_size], )
86
+
87
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
88
+ end
89
+
90
+ ##
91
+ # When passed a block, yields ConversationInstance records from the API.
92
+ # This operation lazily loads records as efficiently as possible until the limit
93
+ # is reached.
94
+ def each
95
+ limits = @version.read_limits
96
+
97
+ page = self.page(page_size: limits[:page_size], )
98
+
99
+ @version.stream(page,
100
+ limit: limits[:limit],
101
+ page_limit: limits[:page_limit]).each {|x| yield x}
102
+ end
103
+
104
+ ##
105
+ # Retrieve a single page of ConversationInstance records from the API.
106
+ # Request is executed immediately.
107
+ # @param [String] page_token PageToken provided by the API
108
+ # @param [Integer] page_number Page Number, this value is simply for client state
109
+ # @param [Integer] page_size Number of records to return, defaults to 50
110
+ # @return [Page] Page of ConversationInstance
111
+ def page(page_token: :unset, page_number: :unset, page_size: :unset)
112
+ params = Twilio::Values.of({
113
+ 'PageToken' => page_token,
114
+ 'Page' => page_number,
115
+ 'PageSize' => page_size,
116
+ })
117
+ response = @version.page(
118
+ 'GET',
119
+ @uri,
120
+ params
121
+ )
122
+ ConversationPage.new(@version, response, @solution)
123
+ end
124
+
125
+ ##
126
+ # Retrieve a single page of ConversationInstance records from the API.
127
+ # Request is executed immediately.
128
+ # @param [String] target_url API-generated URL for the requested results page
129
+ # @return [Page] Page of ConversationInstance
130
+ def get_page(target_url)
131
+ response = @version.domain.request(
132
+ 'GET',
133
+ target_url
134
+ )
135
+ ConversationPage.new(@version, response, @solution)
136
+ end
137
+
138
+ ##
139
+ # Provide a user friendly representation
140
+ def to_s
141
+ '#<Twilio.Conversations.V1.ConversationList>'
142
+ end
143
+ end
144
+
145
+ ##
146
+ # PLEASE NOTE that this class contains preview products that are subject to change. Use them with caution. If you currently do not have developer preview access, please contact help@twilio.com.
147
+ class ConversationPage < Page
148
+ ##
149
+ # Initialize the ConversationPage
150
+ # @param [Version] version Version that contains the resource
151
+ # @param [Response] response Response from the API
152
+ # @param [Hash] solution Path solution for the resource
153
+ # @return [ConversationPage] ConversationPage
154
+ def initialize(version, response, solution)
155
+ super(version, response)
156
+
157
+ # Path Solution
158
+ @solution = solution
159
+ end
160
+
161
+ ##
162
+ # Build an instance of ConversationInstance
163
+ # @param [Hash] payload Payload response from the API
164
+ # @return [ConversationInstance] ConversationInstance
165
+ def get_instance(payload)
166
+ ConversationInstance.new(@version, payload, )
167
+ end
168
+
169
+ ##
170
+ # Provide a user friendly representation
171
+ def to_s
172
+ '<Twilio.Conversations.V1.ConversationPage>'
173
+ end
174
+ end
175
+
176
+ ##
177
+ # PLEASE NOTE that this class contains preview products that are subject to change. Use them with caution. If you currently do not have developer preview access, please contact help@twilio.com.
178
+ class ConversationContext < InstanceContext
179
+ ##
180
+ # Initialize the ConversationContext
181
+ # @param [Version] version Version that contains the resource
182
+ # @param [String] sid A 34 character string that uniquely identifies this
183
+ # resource.
184
+ # @return [ConversationContext] ConversationContext
185
+ def initialize(version, sid)
186
+ super(version)
187
+
188
+ # Path Solution
189
+ @solution = {sid: sid, }
190
+ @uri = "/Conversations/#{@solution[:sid]}"
191
+
192
+ # Dependents
193
+ @participants = nil
194
+ @messages = nil
195
+ @webhooks = nil
196
+ end
197
+
198
+ ##
199
+ # Update the ConversationInstance
200
+ # @param [String] friendly_name The human-readable name of this conversation,
201
+ # limited to 256 characters. Optional.
202
+ # @param [Time] date_created The date that this resource was created.
203
+ # @param [Time] date_updated The date that this resource was last updated.
204
+ # @return [ConversationInstance] Updated ConversationInstance
205
+ def update(friendly_name: :unset, date_created: :unset, date_updated: :unset)
206
+ data = Twilio::Values.of({
207
+ 'FriendlyName' => friendly_name,
208
+ 'DateCreated' => Twilio.serialize_iso8601_datetime(date_created),
209
+ 'DateUpdated' => Twilio.serialize_iso8601_datetime(date_updated),
210
+ })
211
+
212
+ payload = @version.update(
213
+ 'POST',
214
+ @uri,
215
+ data: data,
216
+ )
217
+
218
+ ConversationInstance.new(@version, payload, sid: @solution[:sid], )
219
+ end
220
+
221
+ ##
222
+ # Deletes the ConversationInstance
223
+ # @return [Boolean] true if delete succeeds, true otherwise
224
+ def delete
225
+ @version.delete('delete', @uri)
226
+ end
227
+
228
+ ##
229
+ # Fetch a ConversationInstance
230
+ # @return [ConversationInstance] Fetched ConversationInstance
231
+ def fetch
232
+ params = Twilio::Values.of({})
233
+
234
+ payload = @version.fetch(
235
+ 'GET',
236
+ @uri,
237
+ params,
238
+ )
239
+
240
+ ConversationInstance.new(@version, payload, sid: @solution[:sid], )
241
+ end
242
+
243
+ ##
244
+ # Access the participants
245
+ # @return [ParticipantList]
246
+ # @return [ParticipantContext] if sid was passed.
247
+ def participants(sid=:unset)
248
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
249
+
250
+ if sid != :unset
251
+ return ParticipantContext.new(@version, @solution[:sid], sid, )
252
+ end
253
+
254
+ unless @participants
255
+ @participants = ParticipantList.new(@version, conversation_sid: @solution[:sid], )
256
+ end
257
+
258
+ @participants
259
+ end
260
+
261
+ ##
262
+ # Access the messages
263
+ # @return [MessageList]
264
+ # @return [MessageContext] if sid was passed.
265
+ def messages(sid=:unset)
266
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
267
+
268
+ if sid != :unset
269
+ return MessageContext.new(@version, @solution[:sid], sid, )
270
+ end
271
+
272
+ unless @messages
273
+ @messages = MessageList.new(@version, conversation_sid: @solution[:sid], )
274
+ end
275
+
276
+ @messages
277
+ end
278
+
279
+ ##
280
+ # Access the webhooks
281
+ # @return [WebhookList]
282
+ # @return [WebhookContext] if sid was passed.
283
+ def webhooks(sid=:unset)
284
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
285
+
286
+ if sid != :unset
287
+ return WebhookContext.new(@version, @solution[:sid], sid, )
288
+ end
289
+
290
+ unless @webhooks
291
+ @webhooks = WebhookList.new(@version, conversation_sid: @solution[:sid], )
292
+ end
293
+
294
+ @webhooks
295
+ end
296
+
297
+ ##
298
+ # Provide a user friendly representation
299
+ def to_s
300
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
301
+ "#<Twilio.Conversations.V1.ConversationContext #{context}>"
302
+ end
303
+
304
+ ##
305
+ # Provide a detailed, user friendly representation
306
+ def inspect
307
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
308
+ "#<Twilio.Conversations.V1.ConversationContext #{context}>"
309
+ end
310
+ end
311
+
312
+ ##
313
+ # PLEASE NOTE that this class contains preview products that are subject to change. Use them with caution. If you currently do not have developer preview access, please contact help@twilio.com.
314
+ class ConversationInstance < InstanceResource
315
+ ##
316
+ # Initialize the ConversationInstance
317
+ # @param [Version] version Version that contains the resource
318
+ # @param [Hash] payload payload that contains response from Twilio
319
+ # @param [String] sid A 34 character string that uniquely identifies this
320
+ # resource.
321
+ # @return [ConversationInstance] ConversationInstance
322
+ def initialize(version, payload, sid: nil)
323
+ super(version)
324
+
325
+ # Marshaled Properties
326
+ @properties = {
327
+ 'account_sid' => payload['account_sid'],
328
+ 'chat_service_sid' => payload['chat_service_sid'],
329
+ 'messaging_service_sid' => payload['messaging_service_sid'],
330
+ 'sid' => payload['sid'],
331
+ 'friendly_name' => payload['friendly_name'],
332
+ 'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
333
+ 'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
334
+ 'url' => payload['url'],
335
+ 'links' => payload['links'],
336
+ }
337
+
338
+ # Context
339
+ @instance_context = nil
340
+ @params = {'sid' => sid || @properties['sid'], }
341
+ end
342
+
343
+ ##
344
+ # Generate an instance context for the instance, the context is capable of
345
+ # performing various actions. All instance actions are proxied to the context
346
+ # @return [ConversationContext] ConversationContext for this ConversationInstance
347
+ def context
348
+ unless @instance_context
349
+ @instance_context = ConversationContext.new(@version, @params['sid'], )
350
+ end
351
+ @instance_context
352
+ end
353
+
354
+ ##
355
+ # @return [String] The unique id of the Account responsible for this conversation.
356
+ def account_sid
357
+ @properties['account_sid']
358
+ end
359
+
360
+ ##
361
+ # @return [String] The unique id of the Chat Service this conversation belongs to.
362
+ def chat_service_sid
363
+ @properties['chat_service_sid']
364
+ end
365
+
366
+ ##
367
+ # @return [String] The unique id of the SMS Service this conversation belongs to.
368
+ def messaging_service_sid
369
+ @properties['messaging_service_sid']
370
+ end
371
+
372
+ ##
373
+ # @return [String] A 34 character string that uniquely identifies this resource.
374
+ def sid
375
+ @properties['sid']
376
+ end
377
+
378
+ ##
379
+ # @return [String] The human-readable name of this conversation.
380
+ def friendly_name
381
+ @properties['friendly_name']
382
+ end
383
+
384
+ ##
385
+ # @return [Time] The date that this resource was created.
386
+ def date_created
387
+ @properties['date_created']
388
+ end
389
+
390
+ ##
391
+ # @return [Time] The date that this resource was last updated.
392
+ def date_updated
393
+ @properties['date_updated']
394
+ end
395
+
396
+ ##
397
+ # @return [String] An absolute URL for this conversation.
398
+ def url
399
+ @properties['url']
400
+ end
401
+
402
+ ##
403
+ # @return [String] Absolute URLs to access the Participants of this Conversation.
404
+ def links
405
+ @properties['links']
406
+ end
407
+
408
+ ##
409
+ # Update the ConversationInstance
410
+ # @param [String] friendly_name The human-readable name of this conversation,
411
+ # limited to 256 characters. Optional.
412
+ # @param [Time] date_created The date that this resource was created.
413
+ # @param [Time] date_updated The date that this resource was last updated.
414
+ # @return [ConversationInstance] Updated ConversationInstance
415
+ def update(friendly_name: :unset, date_created: :unset, date_updated: :unset)
416
+ context.update(friendly_name: friendly_name, date_created: date_created, date_updated: date_updated, )
417
+ end
418
+
419
+ ##
420
+ # Deletes the ConversationInstance
421
+ # @return [Boolean] true if delete succeeds, true otherwise
422
+ def delete
423
+ context.delete
424
+ end
425
+
426
+ ##
427
+ # Fetch a ConversationInstance
428
+ # @return [ConversationInstance] Fetched ConversationInstance
429
+ def fetch
430
+ context.fetch
431
+ end
432
+
433
+ ##
434
+ # Access the participants
435
+ # @return [participants] participants
436
+ def participants
437
+ context.participants
438
+ end
439
+
440
+ ##
441
+ # Access the messages
442
+ # @return [messages] messages
443
+ def messages
444
+ context.messages
445
+ end
446
+
447
+ ##
448
+ # Access the webhooks
449
+ # @return [webhooks] webhooks
450
+ def webhooks
451
+ context.webhooks
452
+ end
453
+
454
+ ##
455
+ # Provide a user friendly representation
456
+ def to_s
457
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
458
+ "<Twilio.Conversations.V1.ConversationInstance #{values}>"
459
+ end
460
+
461
+ ##
462
+ # Provide a detailed, user friendly representation
463
+ def inspect
464
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
465
+ "<Twilio.Conversations.V1.ConversationInstance #{values}>"
466
+ end
467
+ end
468
+ end
469
+ end
470
+ end
471
+ end