twilio-ruby 5.61.2 → 5.62.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0744c60bf47ebe5674a6c2ea371fdda3ae937ef4
4
- data.tar.gz: a8d42def7f349fb8a99c035f59c3436d8f969fe9
3
+ metadata.gz: 4de9f3e13c7d62d46dd01dc76c29a0053d5aebc2
4
+ data.tar.gz: 840453ea3047e82252cff8e7a2938ff6a1ee3de7
5
5
  SHA512:
6
- metadata.gz: 0b62a9817b86b3f5e03c491072907cf359eff878d21b315f92848e9546a6f1f3664d29c1be464e17444bc15754af6079703f3e46d17f7845d9ed460ae9d8ff44
7
- data.tar.gz: 5612432558411b78da25b0b6e1dfcb4edd51ed710c3562cb9174fe6e93bcdc0cd88e55aa02dc19a361534dcbe3e88a52d3ca64ed6032ac42af2045547e30d70e
6
+ metadata.gz: 4e130c8595f487439b3a2791ba660dbe198661cada16c0c5bb088b12b8b6ba714fb3245841ce55a1c1c0837ec2830a6988ec4d3fea11cf3d945e655f935658a6
7
+ data.tar.gz: 0e49320acd4390848bc5946626f8e999f9fdc2bfaef36efb6f027292cf3895ae295c473b4376ee4b44fc0a71a556fb47343adfba3370e17b36f078a308240be5
@@ -1,13 +1,43 @@
1
- name: Deploy
1
+ name: Test and Deploy
2
2
  on:
3
3
  push:
4
- tags:
5
- - '*'
4
+ branches: [ '*' ]
5
+ tags: [ '*' ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ schedule:
9
+ # Run automatically at 8AM PST Monday-Friday
10
+ - cron: '0 15 * * 1-5'
6
11
  workflow_dispatch:
7
12
 
8
13
  jobs:
14
+ test:
15
+ name: Test
16
+ runs-on: ubuntu-latest
17
+ timeout-minutes: 20
18
+ strategy:
19
+ matrix:
20
+ ruby: [ 2.4, 2.5, 2.6, 2.7, '3.0', ruby-head, jruby-9.2 ]
21
+ continue-on-error: ${{ matrix.ruby == 'ruby-head' }}
22
+ steps:
23
+ - name: Checkout twilio-ruby
24
+ uses: actions/checkout@v2
25
+
26
+ - name: Set up Ruby
27
+ uses: ruby/setup-ruby@v1
28
+ with:
29
+ ruby-version: ${{ matrix.ruby }}
30
+ bundler-cache: true
31
+
32
+ - run: bundle install --with development
33
+ - run: bundle exec rake install
34
+ - name: Run Unit Tests
35
+ run: make test
36
+
9
37
  deploy:
10
- name: Deploy to Rubygems
38
+ name: Deploy
39
+ if: success() && github.ref_type == 'tag'
40
+ needs: [ test ]
11
41
  runs-on: ubuntu-latest
12
42
  steps:
13
43
  - name: Checkout twilio-ruby
@@ -38,7 +68,7 @@ jobs:
38
68
  - name: Publish to Rubygems
39
69
  env:
40
70
  GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_AUTH_TOKEN }}
41
- run: |
71
+ run: |
42
72
  mkdir -p $HOME/.gem
43
73
  touch $HOME/.gem/credentials
44
74
  chmod 0600 $HOME/.gem/credentials
@@ -48,16 +78,16 @@ jobs:
48
78
 
49
79
  notify-on-failure:
50
80
  name: Slack notify on failure
51
- if: ${{ failure() }}
52
- needs: [deploy]
81
+ if: failure() && github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || github.ref_type == 'tag')
82
+ needs: [ test, deploy ]
53
83
  runs-on: ubuntu-latest
54
84
  steps:
55
85
  - uses: rtCamp/action-slack-notify@v2
56
86
  env:
57
- SLACK_COLOR: ${{ needs.deploy.status }}
87
+ SLACK_COLOR: failure
58
88
  SLACK_ICON_EMOJI: ':github:'
59
- SLACK_MESSAGE: ${{ format('Failed to publish {1} to RubyGems{3} {0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id, ':') }}
60
- SLACK_TITLE: Deployment Failure
89
+ SLACK_MESSAGE: ${{ format('Tests *{0}*, Deploy *{1}*, {2}/{3}/actions/runs/{4}', needs.test.result, needs.deploy.result, github.server_url, github.repository, github.run_id) }}
90
+ SLACK_TITLE: Action Failure - ${{ github.repository }}
61
91
  SLACK_USERNAME: GitHub Actions
62
92
  SLACK_MSG_AUTHOR: twilio-dx
63
93
  SLACK_FOOTER: Posted automatically using GitHub Actions
data/CHANGES.md CHANGED
@@ -1,6 +1,31 @@
1
1
  twilio-ruby changelog
2
2
  =====================
3
3
 
4
+ [2021-12-15] Version 5.62.0
5
+ ---------------------------
6
+ **Library - Feature**
7
+ - [PR #581](https://github.com/twilio/twilio-ruby/pull/581): run tests before deploying. Thanks to [@childish-sambino](https://github.com/childish-sambino)!
8
+
9
+ **Api**
10
+ - Add optional boolean send_as_mms parameter to the create action of Message resource **(breaking change)**
11
+ - Change team ownership for `call` delete
12
+
13
+ **Conversations**
14
+ - Change wording for `Service Webhook Configuration` resource fields
15
+
16
+ **Insights**
17
+ - Added new APIs for updating and getting voice insights flags by accountSid.
18
+
19
+ **Media**
20
+ - Add max_duration param to MediaProcessor
21
+
22
+ **Video**
23
+ - Add `EmptyRoomTimeout` and `UnusedRoomTimeout` properties to a room; add corresponding parameters to room creation
24
+
25
+ **Voice**
26
+ - Add endpoint to delete archived Calls
27
+
28
+
4
29
  [2021-12-01] Version 5.61.2
5
30
  ---------------------------
6
31
  **Library - Chore**
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # twilio-ruby
2
2
 
3
- [![Tests](https://github.com/twilio/twilio-ruby/actions/workflows/test.yml/badge.svg)][github-actions]
3
+ [![Tests](https://github.com/twilio/twilio-ruby/actions/workflows/test-and-deploy.yml/badge.svg)][github-actions]
4
4
  [![Gem Version](https://img.shields.io/gem/v/twilio-ruby.svg)](https://rubygems.org/gems/twilio-ruby)
5
5
  [![Learn with TwilioQuest](https://img.shields.io/static/v1?label=TwilioQuest&message=Learn%20to%20contribute%21&color=F22F46&labelColor=1f243c&style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAASFBMVEUAAAAZGRkcHBwjIyMoKCgAAABgYGBoaGiAgICMjIyzs7PJycnMzMzNzc3UoBfd3d3m5ubqrhfrMEDu7u739/f4vSb/3AD///9tbdyEAAAABXRSTlMAAAAAAMJrBrEAAAKoSURBVHgB7ZrRcuI6EESdyxXGYoNFvMD//+l2bSszRgyUYpFAsXOeiJGmj4NkuWx1Qeh+Ekl9DgEXOBwOx+Px5xyQhDykfgq4wG63MxxaR4ddIkg6Ul3g84vCIcjPBA5gmUMeXESrlukuoK33+33uID8TWeLAdOWsKpJYzwVMB7bOzYSGOciyUlXSn0/ABXTosJ1M1SbypZ4O4MbZuIDMU02PMbauhhHMHXbmebmALIiEbbbbbUrpF1gwE9kFfRNAJaP+FQEXCCTGyJ4ngDrjOFo3jEL5JdqjF/pueR4cCeCGgAtwmuRS6gDwaRiGvu+DMFwSBLTE3+jF8JyuV1okPZ+AC4hDFhCHyHQjdjPHUKFDlHSJkHQXMB3KpSwXNGJPcwwTdZiXlRN0gSp0zpWxNtM0beYE0nRH6QIbO7rawwXaBYz0j78gxjokDuv12gVeUuBD0MDi0OQCLvDaAho4juP1Q/jkAncXqIcCfd+7gAu4QLMACCLxpRsSuQh0igu0C9Svhi7weAGZg50L3IE3cai4IfkNZAC8dfdhsUD3CgKBVC9JE5ABAFzg4QL/taYPAAWrHdYcgfLaIgAXWJ7OV38n1LEF8tt2TH29E+QAoDoO5Ve/LtCQDmKM9kPbvCEBApK+IXzbcSJ0cIGF6e8gpcRhUDogWZ8JnaWjPXc/fNnBBUKRngiHgTUSivSzDRDgHZQOLvBQgf8rRt+VdBUUhwkU6VpJ+xcOwQUqZr+mR0kvBUgv6cB4+37hQAkXqE8PwGisGhJtN4xAHMzrsgvI7rccXqSvKh6jltGlrOHA3Xk1At3LC4QiPdX9/0ndHpGVvTjR4bZA1ypAKgVcwE5vx74ulwIugDt8e/X7JgfkucBMIAr26ndnB4UCLnDOqvteQsHlgX9N4A+c4cW3DXSPbwAAAABJRU5ErkJggg==)](https://twil.io/learn-open-source)
6
6
 
@@ -35,13 +35,13 @@ This library supports the following Ruby implementations:
35
35
  To install using [Bundler][bundler] grab the latest stable version:
36
36
 
37
37
  ```ruby
38
- gem 'twilio-ruby', '~> 5.61.2'
38
+ gem 'twilio-ruby', '~> 5.62.0'
39
39
  ```
40
40
 
41
41
  To manually install `twilio-ruby` via [Rubygems][rubygems] simply gem install:
42
42
 
43
43
  ```bash
44
- gem install twilio-ruby -v 5.61.2
44
+ gem install twilio-ruby -v 5.62.0
45
45
  ```
46
46
 
47
47
  To build and install the development branch yourself from the latest source:
@@ -257,7 +257,7 @@ If you've instead found a bug in the library or would like new features added, g
257
257
  [bundler]: https://bundler.io
258
258
  [rubygems]: https://rubygems.org
259
259
  [gem]: https://rubygems.org/gems/twilio
260
- [github-actions]: https://github.com/twilio/twilio-ruby/actions/workflows/test.yml
260
+ [github-actions]: https://github.com/twilio/twilio-ruby/actions/workflows/test-and-deploy.yml
261
261
  [upgrade]: https://github.com/twilio/twilio-ruby/wiki/Ruby-Version-5.x-Upgrade-Guide
262
262
  [issues]: https://github.com/twilio/twilio-ruby/issues
263
263
  [faraday]: https://github.com/lostisland/faraday
@@ -78,6 +78,9 @@ module Twilio
78
78
  # @param [Boolean] smart_encoded Whether to detect Unicode characters that have a
79
79
  # similar GSM-7 character and replace them. Can be: `true` or `false`.
80
80
  # @param [Array[String]] persistent_action Rich actions for Channels Messages.
81
+ # @param [Boolean] send_as_mms If set to True, Twilio will deliver the message as
82
+ # a single MMS message, regardless of the presence of media. This is a Beta
83
+ # Feature.
81
84
  # @param [String] from A Twilio phone number in
82
85
  # {E.164}[https://www.twilio.com/docs/glossary/what-e164] format, an {alphanumeric
83
86
  # sender
@@ -108,7 +111,7 @@ module Twilio
108
111
  # parameters in the POST request. You can include up to 10 `media_url` parameters
109
112
  # per message. You can send images in an SMS message in only the US and Canada.
110
113
  # @return [MessageInstance] Created MessageInstance
111
- def create(to: nil, status_callback: :unset, application_sid: :unset, max_price: :unset, provide_feedback: :unset, attempt: :unset, validity_period: :unset, force_delivery: :unset, content_retention: :unset, address_retention: :unset, smart_encoded: :unset, persistent_action: :unset, from: :unset, messaging_service_sid: :unset, body: :unset, media_url: :unset)
114
+ def create(to: nil, status_callback: :unset, application_sid: :unset, max_price: :unset, provide_feedback: :unset, attempt: :unset, validity_period: :unset, force_delivery: :unset, content_retention: :unset, address_retention: :unset, smart_encoded: :unset, persistent_action: :unset, send_as_mms: :unset, from: :unset, messaging_service_sid: :unset, body: :unset, media_url: :unset)
112
115
  data = Twilio::Values.of({
113
116
  'To' => to,
114
117
  'From' => from,
@@ -126,6 +129,7 @@ module Twilio
126
129
  'AddressRetention' => address_retention,
127
130
  'SmartEncoded' => smart_encoded,
128
131
  'PersistentAction' => Twilio.serialize_list(persistent_action) { |e| e },
132
+ 'SendAsMms' => send_as_mms,
129
133
  })
130
134
 
131
135
  payload = @version.create('POST', @uri, data: data)
@@ -84,15 +84,15 @@ module Twilio
84
84
  # should be sent to.
85
85
  # @param [String] post_webhook_url The absolute url the post-event webhook request
86
86
  # should be sent to.
87
- # @param [Array[String]] filters The list of webhook event triggers that are
88
- # enabled for this Service. Possible values are `onParticipantAdd`,
89
- # `onParticipantAdded`, `onDeliveryUpdated`, `onConversationUpdated`,
90
- # `onConversationRemove`, `onParticipantRemove`, `onConversationUpdate`,
91
- # `onMessageAdd`, `onMessageRemoved`, `onParticipantUpdated`,
92
- # `onConversationAdded`, `onMessageAdded`, `onConversationAdd`,
93
- # `onConversationRemoved`, `onParticipantUpdate`, `onMessageRemove`,
94
- # `onMessageUpdated`, `onParticipantRemoved`, `onMessageUpdate` or
95
- # `onConversationStateUpdated`.
87
+ # @param [Array[String]] filters The list of events that your configured webhook
88
+ # targets will receive. Events not configured here will not fire. Possible values
89
+ # are `onParticipantAdd`, `onParticipantAdded`, `onDeliveryUpdated`,
90
+ # `onConversationUpdated`, `onConversationRemove`, `onParticipantRemove`,
91
+ # `onConversationUpdate`, `onMessageAdd`, `onMessageRemoved`,
92
+ # `onParticipantUpdated`, `onConversationAdded`, `onMessageAdded`,
93
+ # `onConversationAdd`, `onConversationRemoved`, `onParticipantUpdate`,
94
+ # `onMessageRemove`, `onMessageUpdated`, `onParticipantRemoved`, `onMessageUpdate`
95
+ # or `onConversationStateUpdated`.
96
96
  # @param [String] method The HTTP method to be used when sending a webhook
97
97
  # request. One of `GET` or `POST`.
98
98
  # @return [WebhookInstance] Updated WebhookInstance
@@ -178,7 +178,7 @@ module Twilio
178
178
  end
179
179
 
180
180
  ##
181
- # @return [String] The chat_service_sid
181
+ # @return [String] The unique ID of the {Conversation Service}[https://www.twilio.com/docs/conversations/api/service-resource] this conversation belongs to.
182
182
  def chat_service_sid
183
183
  @properties['chat_service_sid']
184
184
  end
@@ -196,7 +196,7 @@ module Twilio
196
196
  end
197
197
 
198
198
  ##
199
- # @return [Array[String]] The list of webhook event triggers that are enabled for this Service.
199
+ # @return [Array[String]] The list of events that your configured webhook targets will receive. Events not configured here will not fire.
200
200
  def filters
201
201
  @properties['filters']
202
202
  end
@@ -219,15 +219,15 @@ module Twilio
219
219
  # should be sent to.
220
220
  # @param [String] post_webhook_url The absolute url the post-event webhook request
221
221
  # should be sent to.
222
- # @param [Array[String]] filters The list of webhook event triggers that are
223
- # enabled for this Service. Possible values are `onParticipantAdd`,
224
- # `onParticipantAdded`, `onDeliveryUpdated`, `onConversationUpdated`,
225
- # `onConversationRemove`, `onParticipantRemove`, `onConversationUpdate`,
226
- # `onMessageAdd`, `onMessageRemoved`, `onParticipantUpdated`,
227
- # `onConversationAdded`, `onMessageAdded`, `onConversationAdd`,
228
- # `onConversationRemoved`, `onParticipantUpdate`, `onMessageRemove`,
229
- # `onMessageUpdated`, `onParticipantRemoved`, `onMessageUpdate` or
230
- # `onConversationStateUpdated`.
222
+ # @param [Array[String]] filters The list of events that your configured webhook
223
+ # targets will receive. Events not configured here will not fire. Possible values
224
+ # are `onParticipantAdd`, `onParticipantAdded`, `onDeliveryUpdated`,
225
+ # `onConversationUpdated`, `onConversationRemove`, `onParticipantRemove`,
226
+ # `onConversationUpdate`, `onMessageAdd`, `onMessageRemoved`,
227
+ # `onParticipantUpdated`, `onConversationAdded`, `onMessageAdded`,
228
+ # `onConversationAdd`, `onConversationRemoved`, `onParticipantUpdate`,
229
+ # `onMessageRemove`, `onMessageUpdated`, `onParticipantRemoved`, `onMessageUpdate`
230
+ # or `onConversationStateUpdated`.
231
231
  # @param [String] method The HTTP method to be used when sending a webhook
232
232
  # request. One of `GET` or `POST`.
233
233
  # @return [WebhookInstance] Updated WebhookInstance
@@ -0,0 +1,215 @@
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 Insights < Domain
12
+ class V1 < Version
13
+ class SettingList < ListResource
14
+ ##
15
+ # Initialize the SettingList
16
+ # @param [Version] version Version that contains the resource
17
+ # @return [SettingList] SettingList
18
+ def initialize(version)
19
+ super(version)
20
+
21
+ # Path Solution
22
+ @solution = {}
23
+ end
24
+
25
+ ##
26
+ # Provide a user friendly representation
27
+ def to_s
28
+ '#<Twilio.Insights.V1.SettingList>'
29
+ end
30
+ end
31
+
32
+ class SettingPage < Page
33
+ ##
34
+ # Initialize the SettingPage
35
+ # @param [Version] version Version that contains the resource
36
+ # @param [Response] response Response from the API
37
+ # @param [Hash] solution Path solution for the resource
38
+ # @return [SettingPage] SettingPage
39
+ def initialize(version, response, solution)
40
+ super(version, response)
41
+
42
+ # Path Solution
43
+ @solution = solution
44
+ end
45
+
46
+ ##
47
+ # Build an instance of SettingInstance
48
+ # @param [Hash] payload Payload response from the API
49
+ # @return [SettingInstance] SettingInstance
50
+ def get_instance(payload)
51
+ SettingInstance.new(@version, payload, )
52
+ end
53
+
54
+ ##
55
+ # Provide a user friendly representation
56
+ def to_s
57
+ '<Twilio.Insights.V1.SettingPage>'
58
+ end
59
+ end
60
+
61
+ class SettingContext < InstanceContext
62
+ ##
63
+ # Initialize the SettingContext
64
+ # @param [Version] version Version that contains the resource
65
+ # @return [SettingContext] SettingContext
66
+ def initialize(version)
67
+ super(version)
68
+
69
+ # Path Solution
70
+ @solution = {}
71
+ @uri = "/Voice/Settings"
72
+ end
73
+
74
+ ##
75
+ # Fetch the SettingInstance
76
+ # @param [String] subaccount_sid The subaccount_sid
77
+ # @return [SettingInstance] Fetched SettingInstance
78
+ def fetch(subaccount_sid: :unset)
79
+ params = Twilio::Values.of({'SubaccountSid' => subaccount_sid, })
80
+
81
+ payload = @version.fetch('GET', @uri, params: params)
82
+
83
+ SettingInstance.new(@version, payload, )
84
+ end
85
+
86
+ ##
87
+ # Update the SettingInstance
88
+ # @param [Boolean] advanced_features The advanced_features
89
+ # @param [Boolean] voice_trace The voice_trace
90
+ # @param [String] subaccount_sid The subaccount_sid
91
+ # @return [SettingInstance] Updated SettingInstance
92
+ def update(advanced_features: :unset, voice_trace: :unset, subaccount_sid: :unset)
93
+ data = Twilio::Values.of({
94
+ 'AdvancedFeatures' => advanced_features,
95
+ 'VoiceTrace' => voice_trace,
96
+ 'SubaccountSid' => subaccount_sid,
97
+ })
98
+
99
+ payload = @version.update('POST', @uri, data: data)
100
+
101
+ SettingInstance.new(@version, payload, )
102
+ end
103
+
104
+ ##
105
+ # Provide a user friendly representation
106
+ def to_s
107
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
108
+ "#<Twilio.Insights.V1.SettingContext #{context}>"
109
+ end
110
+
111
+ ##
112
+ # Provide a detailed, user friendly representation
113
+ def inspect
114
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
115
+ "#<Twilio.Insights.V1.SettingContext #{context}>"
116
+ end
117
+ end
118
+
119
+ class SettingInstance < InstanceResource
120
+ ##
121
+ # Initialize the SettingInstance
122
+ # @param [Version] version Version that contains the resource
123
+ # @param [Hash] payload payload that contains response from Twilio
124
+ # @return [SettingInstance] SettingInstance
125
+ def initialize(version, payload)
126
+ super(version)
127
+
128
+ # Marshaled Properties
129
+ @properties = {
130
+ 'account_sid' => payload['account_sid'],
131
+ 'advanced_features' => payload['advanced_features'],
132
+ 'voice_trace' => payload['voice_trace'],
133
+ 'url' => payload['url'],
134
+ }
135
+
136
+ # Context
137
+ @instance_context = nil
138
+ @params = {}
139
+ end
140
+
141
+ ##
142
+ # Generate an instance context for the instance, the context is capable of
143
+ # performing various actions. All instance actions are proxied to the context
144
+ # @return [SettingContext] SettingContext for this SettingInstance
145
+ def context
146
+ unless @instance_context
147
+ @instance_context = SettingContext.new(@version, )
148
+ end
149
+ @instance_context
150
+ end
151
+
152
+ ##
153
+ # @return [String] The account_sid
154
+ def account_sid
155
+ @properties['account_sid']
156
+ end
157
+
158
+ ##
159
+ # @return [Boolean] The advanced_features
160
+ def advanced_features
161
+ @properties['advanced_features']
162
+ end
163
+
164
+ ##
165
+ # @return [Boolean] The voice_trace
166
+ def voice_trace
167
+ @properties['voice_trace']
168
+ end
169
+
170
+ ##
171
+ # @return [String] The url
172
+ def url
173
+ @properties['url']
174
+ end
175
+
176
+ ##
177
+ # Fetch the SettingInstance
178
+ # @param [String] subaccount_sid The subaccount_sid
179
+ # @return [SettingInstance] Fetched SettingInstance
180
+ def fetch(subaccount_sid: :unset)
181
+ context.fetch(subaccount_sid: subaccount_sid, )
182
+ end
183
+
184
+ ##
185
+ # Update the SettingInstance
186
+ # @param [Boolean] advanced_features The advanced_features
187
+ # @param [Boolean] voice_trace The voice_trace
188
+ # @param [String] subaccount_sid The subaccount_sid
189
+ # @return [SettingInstance] Updated SettingInstance
190
+ def update(advanced_features: :unset, voice_trace: :unset, subaccount_sid: :unset)
191
+ context.update(
192
+ advanced_features: advanced_features,
193
+ voice_trace: voice_trace,
194
+ subaccount_sid: subaccount_sid,
195
+ )
196
+ end
197
+
198
+ ##
199
+ # Provide a user friendly representation
200
+ def to_s
201
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
202
+ "<Twilio.Insights.V1.SettingInstance #{values}>"
203
+ end
204
+
205
+ ##
206
+ # Provide a detailed, user friendly representation
207
+ def inspect
208
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
209
+ "<Twilio.Insights.V1.SettingInstance #{values}>"
210
+ end
211
+ end
212
+ end
213
+ end
214
+ end
215
+ end
@@ -15,11 +15,18 @@ module Twilio
15
15
  def initialize(domain)
16
16
  super
17
17
  @version = 'v1'
18
+ @settings = nil
18
19
  @calls = nil
19
20
  @call_summaries = nil
20
21
  @rooms = nil
21
22
  end
22
23
 
24
+ ##
25
+ # @return [Twilio::REST::Insights::V1::SettingContext]
26
+ def settings
27
+ @settings ||= SettingContext.new self
28
+ end
29
+
23
30
  ##
24
31
  # @param [String] sid The sid
25
32
  # @return [Twilio::REST::Insights::V1::CallContext] if sid was passed.
@@ -28,6 +28,12 @@ module Twilio
28
28
  @v1 ||= V1.new self
29
29
  end
30
30
 
31
+ ##
32
+ # @return [Twilio::REST::Insights::V1::SettingInstance]
33
+ def settings
34
+ self.v1.settings()
35
+ end
36
+
31
37
  ##
32
38
  # @param [String] sid The sid
33
39
  # @return [Twilio::REST::Insights::V1::CallInstance] if sid was passed.
@@ -42,14 +42,20 @@ module Twilio
42
42
  # Callbacks}[/docs/live/status-callbacks] for details.
43
43
  # @param [String] status_callback_method The HTTP method Twilio should use to call
44
44
  # the `status_callback` URL. Can be `POST` or `GET` and the default is `POST`.
45
+ # @param [String] max_duration The maximum time, in seconds, that the
46
+ # MediaProcessor can run before automatically ends. The default value is 300
47
+ # seconds, and the maximum value is 90000 seconds. Once this maximum duration is
48
+ # reached, Twilio will end the MediaProcessor, regardless of whether media is
49
+ # still streaming.
45
50
  # @return [MediaProcessorInstance] Created MediaProcessorInstance
46
- def create(extension: nil, extension_context: nil, extension_environment: :unset, status_callback: :unset, status_callback_method: :unset)
51
+ def create(extension: nil, extension_context: nil, extension_environment: :unset, status_callback: :unset, status_callback_method: :unset, max_duration: :unset)
47
52
  data = Twilio::Values.of({
48
53
  'Extension' => extension,
49
54
  'ExtensionContext' => extension_context,
50
55
  'ExtensionEnvironment' => Twilio.serialize_object(extension_environment),
51
56
  'StatusCallback' => status_callback,
52
57
  'StatusCallbackMethod' => status_callback_method,
58
+ 'MaxDuration' => max_duration,
53
59
  })
54
60
 
55
61
  payload = @version.create('POST', @uri, data: data)
@@ -264,6 +270,7 @@ module Twilio
264
270
  'ended_reason' => payload['ended_reason'],
265
271
  'status_callback' => payload['status_callback'],
266
272
  'status_callback_method' => payload['status_callback_method'],
273
+ 'max_duration' => payload['max_duration'].to_i,
267
274
  }
268
275
 
269
276
  # Context
@@ -348,6 +355,12 @@ module Twilio
348
355
  @properties['status_callback_method']
349
356
  end
350
357
 
358
+ ##
359
+ # @return [String] Maximum MediaProcessor duration in minutes
360
+ def max_duration
361
+ @properties['max_duration']
362
+ end
363
+
351
364
  ##
352
365
  # Fetch the MediaProcessorInstance
353
366
  # @return [MediaProcessorInstance] Fetched MediaProcessorInstance
@@ -63,8 +63,14 @@ module Twilio
63
63
  # @param [String] max_participant_duration The maximum number of seconds a
64
64
  # Participant can be connected to the room. The maximum possible value is 86400
65
65
  # seconds (24 hours). The default is 14400 seconds (4 hours).
66
+ # @param [String] empty_room_timeout Configures how long (in minutes) a room will
67
+ # remain active after last participant leaves. Valid values range from 1 to 60
68
+ # minutes (no fractions).
69
+ # @param [String] unused_room_timeout Configures how long (in minutes) a room will
70
+ # remain active if no one joins. Valid values range from 1 to 60 minutes (no
71
+ # fractions).
66
72
  # @return [RoomInstance] Created RoomInstance
67
- def create(enable_turn: :unset, type: :unset, unique_name: :unset, status_callback: :unset, status_callback_method: :unset, max_participants: :unset, record_participants_on_connect: :unset, video_codecs: :unset, media_region: :unset, recording_rules: :unset, audio_only: :unset, max_participant_duration: :unset)
73
+ def create(enable_turn: :unset, type: :unset, unique_name: :unset, status_callback: :unset, status_callback_method: :unset, max_participants: :unset, record_participants_on_connect: :unset, video_codecs: :unset, media_region: :unset, recording_rules: :unset, audio_only: :unset, max_participant_duration: :unset, empty_room_timeout: :unset, unused_room_timeout: :unset)
68
74
  data = Twilio::Values.of({
69
75
  'EnableTurn' => enable_turn,
70
76
  'Type' => type,
@@ -78,6 +84,8 @@ module Twilio
78
84
  'RecordingRules' => Twilio.serialize_object(recording_rules),
79
85
  'AudioOnly' => audio_only,
80
86
  'MaxParticipantDuration' => max_participant_duration,
87
+ 'EmptyRoomTimeout' => empty_room_timeout,
88
+ 'UnusedRoomTimeout' => unused_room_timeout,
81
89
  })
82
90
 
83
91
  payload = @version.create('POST', @uri, data: data)
@@ -374,6 +382,8 @@ module Twilio
374
382
  'video_codecs' => payload['video_codecs'],
375
383
  'media_region' => payload['media_region'],
376
384
  'audio_only' => payload['audio_only'],
385
+ 'empty_room_timeout' => payload['empty_room_timeout'].to_i,
386
+ 'unused_room_timeout' => payload['unused_room_timeout'].to_i,
377
387
  'url' => payload['url'],
378
388
  'links' => payload['links'],
379
389
  }
@@ -508,6 +518,18 @@ module Twilio
508
518
  @properties['audio_only']
509
519
  end
510
520
 
521
+ ##
522
+ # @return [String] The time a room will remain active after last participant leaves.
523
+ def empty_room_timeout
524
+ @properties['empty_room_timeout']
525
+ end
526
+
527
+ ##
528
+ # @return [String] The time a room will remain active when no one joins.
529
+ def unused_room_timeout
530
+ @properties['unused_room_timeout']
531
+ end
532
+
511
533
  ##
512
534
  # @return [String] The absolute URL of the resource
513
535
  def url
@@ -0,0 +1,184 @@
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 Voice < Domain
12
+ class V1 < Version
13
+ ##
14
+ # PLEASE NOTE that this class contains beta products that are subject to change. Use them with caution.
15
+ class ArchivedCallList < ListResource
16
+ ##
17
+ # Initialize the ArchivedCallList
18
+ # @param [Version] version Version that contains the resource
19
+ # @return [ArchivedCallList] ArchivedCallList
20
+ def initialize(version)
21
+ super(version)
22
+
23
+ # Path Solution
24
+ @solution = {}
25
+ end
26
+
27
+ ##
28
+ # Provide a user friendly representation
29
+ def to_s
30
+ '#<Twilio.Voice.V1.ArchivedCallList>'
31
+ end
32
+ end
33
+
34
+ ##
35
+ # PLEASE NOTE that this class contains beta products that are subject to change. Use them with caution.
36
+ class ArchivedCallPage < Page
37
+ ##
38
+ # Initialize the ArchivedCallPage
39
+ # @param [Version] version Version that contains the resource
40
+ # @param [Response] response Response from the API
41
+ # @param [Hash] solution Path solution for the resource
42
+ # @return [ArchivedCallPage] ArchivedCallPage
43
+ def initialize(version, response, solution)
44
+ super(version, response)
45
+
46
+ # Path Solution
47
+ @solution = solution
48
+ end
49
+
50
+ ##
51
+ # Build an instance of ArchivedCallInstance
52
+ # @param [Hash] payload Payload response from the API
53
+ # @return [ArchivedCallInstance] ArchivedCallInstance
54
+ def get_instance(payload)
55
+ ArchivedCallInstance.new(@version, payload, )
56
+ end
57
+
58
+ ##
59
+ # Provide a user friendly representation
60
+ def to_s
61
+ '<Twilio.Voice.V1.ArchivedCallPage>'
62
+ end
63
+ end
64
+
65
+ ##
66
+ # PLEASE NOTE that this class contains beta products that are subject to change. Use them with caution.
67
+ class ArchivedCallContext < InstanceContext
68
+ ##
69
+ # Initialize the ArchivedCallContext
70
+ # @param [Version] version Version that contains the resource
71
+ # @param [Date] date The date of the Call in UTC.
72
+ # @param [String] sid The Twilio-provided Call SID that uniquely identifies the
73
+ # Call resource to delete
74
+ # @return [ArchivedCallContext] ArchivedCallContext
75
+ def initialize(version, date, sid)
76
+ super(version)
77
+
78
+ # Path Solution
79
+ @solution = {date: date, sid: sid, }
80
+ @uri = "/Archives/#{@solution[:date]}/Calls/#{@solution[:sid]}"
81
+ end
82
+
83
+ ##
84
+ # Delete the ArchivedCallInstance
85
+ # @return [Boolean] true if delete succeeds, false otherwise
86
+ def delete
87
+ @version.delete('DELETE', @uri)
88
+ end
89
+
90
+ ##
91
+ # Provide a user friendly representation
92
+ def to_s
93
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
94
+ "#<Twilio.Voice.V1.ArchivedCallContext #{context}>"
95
+ end
96
+
97
+ ##
98
+ # Provide a detailed, user friendly representation
99
+ def inspect
100
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
101
+ "#<Twilio.Voice.V1.ArchivedCallContext #{context}>"
102
+ end
103
+ end
104
+
105
+ ##
106
+ # PLEASE NOTE that this class contains beta products that are subject to change. Use them with caution.
107
+ class ArchivedCallInstance < InstanceResource
108
+ ##
109
+ # Initialize the ArchivedCallInstance
110
+ # @param [Version] version Version that contains the resource
111
+ # @param [Hash] payload payload that contains response from Twilio
112
+ # @param [Date] date The date of the Call in UTC.
113
+ # @param [String] sid The Twilio-provided Call SID that uniquely identifies the
114
+ # Call resource to delete
115
+ # @return [ArchivedCallInstance] ArchivedCallInstance
116
+ def initialize(version, payload, date: nil, sid: nil)
117
+ super(version)
118
+
119
+ # Marshaled Properties
120
+ @properties = {
121
+ 'date' => Twilio.deserialize_iso8601_date(payload['date']),
122
+ 'sid' => payload['sid'],
123
+ 'url' => payload['url'],
124
+ }
125
+
126
+ # Context
127
+ @instance_context = nil
128
+ @params = {'date' => date || @properties['date'], 'sid' => sid || @properties['sid'], }
129
+ end
130
+
131
+ ##
132
+ # Generate an instance context for the instance, the context is capable of
133
+ # performing various actions. All instance actions are proxied to the context
134
+ # @return [ArchivedCallContext] ArchivedCallContext for this ArchivedCallInstance
135
+ def context
136
+ unless @instance_context
137
+ @instance_context = ArchivedCallContext.new(@version, @params['date'], @params['sid'], )
138
+ end
139
+ @instance_context
140
+ end
141
+
142
+ ##
143
+ # @return [Date] date
144
+ def date
145
+ @properties['date']
146
+ end
147
+
148
+ ##
149
+ # @return [String] sid
150
+ def sid
151
+ @properties['sid']
152
+ end
153
+
154
+ ##
155
+ # @return [String] The absolute URL of the resource
156
+ def url
157
+ @properties['url']
158
+ end
159
+
160
+ ##
161
+ # Delete the ArchivedCallInstance
162
+ # @return [Boolean] true if delete succeeds, false otherwise
163
+ def delete
164
+ context.delete
165
+ end
166
+
167
+ ##
168
+ # Provide a user friendly representation
169
+ def to_s
170
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
171
+ "<Twilio.Voice.V1.ArchivedCallInstance #{values}>"
172
+ end
173
+
174
+ ##
175
+ # Provide a detailed, user friendly representation
176
+ def inspect
177
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
178
+ "<Twilio.Voice.V1.ArchivedCallInstance #{values}>"
179
+ end
180
+ end
181
+ end
182
+ end
183
+ end
184
+ end
@@ -15,6 +15,7 @@ module Twilio
15
15
  def initialize(domain)
16
16
  super
17
17
  @version = 'v1'
18
+ @archived_calls = nil
18
19
  @byoc_trunks = nil
19
20
  @connection_policies = nil
20
21
  @dialing_permissions = nil
@@ -22,6 +23,26 @@ module Twilio
22
23
  @source_ip_mappings = nil
23
24
  end
24
25
 
26
+ ##
27
+ # @param [Date] date The date of the Call in UTC.
28
+ # @param [String] sid The Twilio-provided Call SID that uniquely identifies the
29
+ # Call resource to delete
30
+ # @return [Twilio::REST::Voice::V1::ArchivedCallContext] if sid was passed.
31
+ # @return [Twilio::REST::Voice::V1::ArchivedCallList]
32
+ def archived_calls(date=:unset, sid=:unset)
33
+ if date.nil?
34
+ raise ArgumentError, 'date cannot be nil'
35
+ end
36
+ if sid.nil?
37
+ raise ArgumentError, 'sid cannot be nil'
38
+ end
39
+ if date == :unset && sid == :unset
40
+ @archived_calls ||= ArchivedCallList.new self
41
+ else
42
+ ArchivedCallContext.new(self, date, sid)
43
+ end
44
+ end
45
+
25
46
  ##
26
47
  # @param [String] sid The Twilio-provided string that uniquely identifies the BYOC
27
48
  # Trunk resource to fetch.
@@ -28,6 +28,14 @@ module Twilio
28
28
  @v1 ||= V1.new self
29
29
  end
30
30
 
31
+ ##
32
+ # @param [String] sid The call sid
33
+ # @return [Twilio::REST::Voice::V1::ArchivedCallInstance] if sid was passed.
34
+ # @return [Twilio::REST::Voice::V1::ArchivedCallList]
35
+ def archived_calls(date=:unset, sid=:unset)
36
+ self.v1.archived_calls(date, sid)
37
+ end
38
+
31
39
  ##
32
40
  # @param [String] sid The unique string that that we created to identify the BYOC
33
41
  # Trunk resource.
@@ -458,25 +458,25 @@ module Twilio
458
458
  end
459
459
 
460
460
  ##
461
- # @return [String] Deprecated. The HTTP method we use to call sms_fallback_url
461
+ # @return [String] Deprecated
462
462
  def sms_fallback_method
463
463
  @properties['sms_fallback_method']
464
464
  end
465
465
 
466
466
  ##
467
- # @return [String] Deprecated. The URL we call when an error occurs while retrieving or executing the TwiML requested from the sms_url
467
+ # @return [String] Deprecated
468
468
  def sms_fallback_url
469
469
  @properties['sms_fallback_url']
470
470
  end
471
471
 
472
472
  ##
473
- # @return [String] Deprecated. The HTTP method we use to call sms_url
473
+ # @return [String] Deprecated
474
474
  def sms_method
475
475
  @properties['sms_method']
476
476
  end
477
477
 
478
478
  ##
479
- # @return [String] Deprecated. The URL we call when the SIM-connected device sends an SMS message that is not a Command
479
+ # @return [String] Deprecated
480
480
  def sms_url
481
481
  @properties['sms_url']
482
482
  end
@@ -1,3 +1,3 @@
1
1
  module Twilio
2
- VERSION = '5.61.2'
2
+ VERSION = '5.62.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twilio-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.61.2
4
+ version: 5.62.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Twilio API Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-01 00:00:00.000000000 Z
11
+ date: 2021-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwt
@@ -212,8 +212,7 @@ extra_rdoc_files:
212
212
  - LICENSE
213
213
  files:
214
214
  - ".dockerignore"
215
- - ".github/workflows/deploy.yml"
216
- - ".github/workflows/test.yml"
215
+ - ".github/workflows/test-and-deploy.yml"
217
216
  - ".gitignore"
218
217
  - ".rubocop.yml"
219
218
  - ".rubocop_todo.yml"
@@ -450,6 +449,7 @@ files:
450
449
  - lib/twilio-ruby/rest/insights/v1/call_summaries.rb
451
450
  - lib/twilio-ruby/rest/insights/v1/room.rb
452
451
  - lib/twilio-ruby/rest/insights/v1/room/participant.rb
452
+ - lib/twilio-ruby/rest/insights/v1/setting.rb
453
453
  - lib/twilio-ruby/rest/ip_messaging.rb
454
454
  - lib/twilio-ruby/rest/ip_messaging/v1.rb
455
455
  - lib/twilio-ruby/rest/ip_messaging/v1/credential.rb
@@ -743,6 +743,7 @@ files:
743
743
  - lib/twilio-ruby/rest/video/v1/room/room_recording_rule.rb
744
744
  - lib/twilio-ruby/rest/voice.rb
745
745
  - lib/twilio-ruby/rest/voice/v1.rb
746
+ - lib/twilio-ruby/rest/voice/v1/archived_call.rb
746
747
  - lib/twilio-ruby/rest/voice/v1/byoc_trunk.rb
747
748
  - lib/twilio-ruby/rest/voice/v1/connection_policy.rb
748
749
  - lib/twilio-ruby/rest/voice/v1/connection_policy/connection_policy_target.rb
@@ -1,52 +0,0 @@
1
- name: Tests
2
- on:
3
- push:
4
- branches: [ '*' ]
5
- pull_request:
6
- branches: [ main ]
7
- schedule:
8
- # Run automatically at 8AM PST Monday-Friday
9
- - cron: '0 15 * * 1-5'
10
- workflow_dispatch:
11
-
12
- jobs:
13
- test:
14
- name: Test
15
- runs-on: ubuntu-latest
16
- timeout-minutes: 20
17
- strategy:
18
- matrix:
19
- ruby: [2.4, 2.5, 2.6, 2.7, '3.0', ruby-head, jruby-9.2]
20
- continue-on-error: ${{ matrix.ruby == 'ruby-head' }}
21
- steps:
22
- - name: Checkout twilio-ruby
23
- uses: actions/checkout@v2
24
-
25
- - name: Set up Ruby
26
- uses: ruby/setup-ruby@v1
27
- with:
28
- ruby-version: ${{ matrix.ruby }}
29
- bundler-cache: true
30
-
31
- - run: bundle install --with development
32
- - run: bundle exec rake install
33
- - name: Run Unit Tests
34
- run: make test
35
-
36
- notify-on-failure:
37
- name: Slack notify on failure
38
- if: ${{ failure() && github.ref == 'refs/heads/main' && github.event_name != 'pull_request' }}
39
- needs: [test]
40
- runs-on: ubuntu-latest
41
- steps:
42
- - uses: rtCamp/action-slack-notify@v2
43
- env:
44
- SLACK_COLOR: ${{ needs.test.status }}
45
- SLACK_ICON_EMOJI: ':github:'
46
- SLACK_MESSAGE: ${{ format('Build {2} in {1} failed{3} {0}/{1}/actions/runs/{2}', github.server_url, github.repository, github.run_id, ':') }}
47
- SLACK_TITLE: Build Failure
48
- SLACK_USERNAME: GitHub Actions
49
- SLACK_MSG_AUTHOR: twilio-dx
50
- SLACK_FOOTER: Posted automatically using GitHub Actions
51
- SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
52
- MSG_MINIMAL: true