revox 0.4.0 → 0.5.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.
data/lib/revox/models.rb CHANGED
@@ -79,6 +79,8 @@ module Revox
79
79
 
80
80
  CampaignGetRowsParams = Revox::Models::CampaignGetRowsParams
81
81
 
82
+ CampaignLaunchParams = Revox::Models::CampaignLaunchParams
83
+
82
84
  CampaignListParams = Revox::Models::CampaignListParams
83
85
 
84
86
  CampaignPauseParams = Revox::Models::CampaignPauseParams
@@ -196,6 +196,42 @@ module Revox
196
196
  )
197
197
  end
198
198
 
199
+ # Some parameter documentations has been truncated, see
200
+ # {Revox::Models::CampaignLaunchParams} for more details.
201
+ #
202
+ # Send the campaign's calls matching a selection. In ai_first mode each call is
203
+ # handed to the admission scheduler at the requested time and follows the retry
204
+ # configuration from there. In speed_dial mode a live operator session dials them,
205
+ # and any call waiting on an AI retry is un-scheduled first so the same contact is
206
+ # never dialed twice. Calls the AI is already dialing are skipped, as are calls
207
+ # whose attempt budget is spent.
208
+ #
209
+ # @overload launch(id, mode:, selection:, scheduled_at: nil, request_options: {})
210
+ #
211
+ # @param id [String]
212
+ #
213
+ # @param mode [Symbol, Revox::Models::CampaignLaunchParams::Mode]
214
+ #
215
+ # @param selection [Revox::Models::CampaignLaunchParams::Selection]
216
+ #
217
+ # @param scheduled_at [Time] When to place the calls (ISO 8601). Omit to launch now. ai_first only — a speed
218
+ #
219
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
220
+ #
221
+ # @return [Revox::Models::CampaignLaunchResponse]
222
+ #
223
+ # @see Revox::Models::CampaignLaunchParams
224
+ def launch(id, params)
225
+ parsed, options = Revox::CampaignLaunchParams.dump_request(params)
226
+ @client.request(
227
+ method: :post,
228
+ path: ["campaigns/%1$s/launch-calls", id],
229
+ body: parsed,
230
+ model: Revox::Models::CampaignLaunchResponse,
231
+ options: options
232
+ )
233
+ end
234
+
199
235
  # Pause a running campaign so no further calls are placed. In-progress calls are
200
236
  # allowed to finish; pending and scheduled calls are held until the campaign is
201
237
  # resumed. Scheduled retry timers keep counting down, so a call resumed before its
data/lib/revox/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Revox
4
- VERSION = "0.4.0"
4
+ VERSION = "0.5.0"
5
5
  end
data/lib/revox.rb CHANGED
@@ -92,6 +92,8 @@ require_relative "revox/models/campaign_export_rows_params"
92
92
  require_relative "revox/models/campaign_export_rows_response"
93
93
  require_relative "revox/models/campaign_get_rows_params"
94
94
  require_relative "revox/models/campaign_get_rows_response"
95
+ require_relative "revox/models/campaign_launch_params"
96
+ require_relative "revox/models/campaign_launch_response"
95
97
  require_relative "revox/models/campaign_list_params"
96
98
  require_relative "revox/models/campaign_list_response"
97
99
  require_relative "revox/models/campaign_pause_params"
@@ -0,0 +1,542 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class CampaignLaunchParams < Revox::Internal::Type::BaseModel
6
+ extend Revox::Internal::Type::RequestParameters::Converter
7
+ include Revox::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Revox::CampaignLaunchParams, Revox::Internal::AnyHash)
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
17
+ sig { returns(Revox::CampaignLaunchParams::Mode::OrSymbol) }
18
+ attr_accessor :mode
19
+
20
+ sig { returns(Revox::CampaignLaunchParams::Selection) }
21
+ attr_reader :selection
22
+
23
+ sig do
24
+ params(selection: Revox::CampaignLaunchParams::Selection::OrHash).void
25
+ end
26
+ attr_writer :selection
27
+
28
+ # When to place the calls (ISO 8601). Omit to launch now. ai_first only — a speed
29
+ # dial session cannot be scheduled.
30
+ sig { returns(T.nilable(Time)) }
31
+ attr_reader :scheduled_at
32
+
33
+ sig { params(scheduled_at: Time).void }
34
+ attr_writer :scheduled_at
35
+
36
+ sig do
37
+ params(
38
+ id: String,
39
+ mode: Revox::CampaignLaunchParams::Mode::OrSymbol,
40
+ selection: Revox::CampaignLaunchParams::Selection::OrHash,
41
+ scheduled_at: Time,
42
+ request_options: Revox::RequestOptions::OrHash
43
+ ).returns(T.attached_class)
44
+ end
45
+ def self.new(
46
+ id:,
47
+ mode:,
48
+ selection:,
49
+ # When to place the calls (ISO 8601). Omit to launch now. ai_first only — a speed
50
+ # dial session cannot be scheduled.
51
+ scheduled_at: nil,
52
+ request_options: {}
53
+ )
54
+ end
55
+
56
+ sig do
57
+ override.returns(
58
+ {
59
+ id: String,
60
+ mode: Revox::CampaignLaunchParams::Mode::OrSymbol,
61
+ selection: Revox::CampaignLaunchParams::Selection,
62
+ scheduled_at: Time,
63
+ request_options: Revox::RequestOptions
64
+ }
65
+ )
66
+ end
67
+ def to_hash
68
+ end
69
+
70
+ module Mode
71
+ extend Revox::Internal::Type::Enum
72
+
73
+ TaggedSymbol =
74
+ T.type_alias { T.all(Symbol, Revox::CampaignLaunchParams::Mode) }
75
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
76
+
77
+ AI_FIRST =
78
+ T.let(:ai_first, Revox::CampaignLaunchParams::Mode::TaggedSymbol)
79
+ SPEED_DIAL =
80
+ T.let(:speed_dial, Revox::CampaignLaunchParams::Mode::TaggedSymbol)
81
+
82
+ sig do
83
+ override.returns(
84
+ T::Array[Revox::CampaignLaunchParams::Mode::TaggedSymbol]
85
+ )
86
+ end
87
+ def self.values
88
+ end
89
+ end
90
+
91
+ class Selection < Revox::Internal::Type::BaseModel
92
+ OrHash =
93
+ T.type_alias do
94
+ T.any(
95
+ Revox::CampaignLaunchParams::Selection,
96
+ Revox::Internal::AnyHash
97
+ )
98
+ end
99
+
100
+ sig { returns(Revox::CampaignLaunchParams::Selection::Filters) }
101
+ attr_reader :filters
102
+
103
+ sig do
104
+ params(
105
+ filters: Revox::CampaignLaunchParams::Selection::Filters::OrHash
106
+ ).void
107
+ end
108
+ attr_writer :filters
109
+
110
+ sig { returns(Revox::CampaignLaunchParams::Selection::Rows) }
111
+ attr_reader :rows
112
+
113
+ sig do
114
+ params(
115
+ rows: Revox::CampaignLaunchParams::Selection::Rows::OrHash
116
+ ).void
117
+ end
118
+ attr_writer :rows
119
+
120
+ sig do
121
+ params(
122
+ filters: Revox::CampaignLaunchParams::Selection::Filters::OrHash,
123
+ rows: Revox::CampaignLaunchParams::Selection::Rows::OrHash
124
+ ).returns(T.attached_class)
125
+ end
126
+ def self.new(filters:, rows:)
127
+ end
128
+
129
+ sig do
130
+ override.returns(
131
+ {
132
+ filters: Revox::CampaignLaunchParams::Selection::Filters,
133
+ rows: Revox::CampaignLaunchParams::Selection::Rows
134
+ }
135
+ )
136
+ end
137
+ def to_hash
138
+ end
139
+
140
+ class Filters < Revox::Internal::Type::BaseModel
141
+ OrHash =
142
+ T.type_alias do
143
+ T.any(
144
+ Revox::CampaignLaunchParams::Selection::Filters,
145
+ Revox::Internal::AnyHash
146
+ )
147
+ end
148
+
149
+ sig { returns(T::Array[String]) }
150
+ attr_accessor :assignee_ids
151
+
152
+ sig do
153
+ returns(
154
+ T::Array[
155
+ Revox::CampaignLaunchParams::Selection::Filters::Direction::OrSymbol
156
+ ]
157
+ )
158
+ end
159
+ attr_accessor :directions
160
+
161
+ sig do
162
+ returns(
163
+ T::Array[
164
+ Revox::CampaignLaunchParams::Selection::Filters::Outcome::OrSymbol
165
+ ]
166
+ )
167
+ end
168
+ attr_accessor :outcomes
169
+
170
+ sig do
171
+ returns(
172
+ T::Array[
173
+ Revox::CampaignLaunchParams::Selection::Filters::Result::OrSymbol
174
+ ]
175
+ )
176
+ end
177
+ attr_accessor :results
178
+
179
+ sig do
180
+ returns(
181
+ T::Array[
182
+ Revox::CampaignLaunchParams::Selection::Filters::Status::OrSymbol
183
+ ]
184
+ )
185
+ end
186
+ attr_accessor :statuses
187
+
188
+ sig { returns(T.nilable(String)) }
189
+ attr_reader :query
190
+
191
+ sig { params(query: String).void }
192
+ attr_writer :query
193
+
194
+ sig do
195
+ params(
196
+ assignee_ids: T::Array[String],
197
+ directions:
198
+ T::Array[
199
+ Revox::CampaignLaunchParams::Selection::Filters::Direction::OrSymbol
200
+ ],
201
+ outcomes:
202
+ T::Array[
203
+ Revox::CampaignLaunchParams::Selection::Filters::Outcome::OrSymbol
204
+ ],
205
+ results:
206
+ T::Array[
207
+ Revox::CampaignLaunchParams::Selection::Filters::Result::OrSymbol
208
+ ],
209
+ statuses:
210
+ T::Array[
211
+ Revox::CampaignLaunchParams::Selection::Filters::Status::OrSymbol
212
+ ],
213
+ query: String
214
+ ).returns(T.attached_class)
215
+ end
216
+ def self.new(
217
+ assignee_ids:,
218
+ directions:,
219
+ outcomes:,
220
+ results:,
221
+ statuses:,
222
+ query: nil
223
+ )
224
+ end
225
+
226
+ sig do
227
+ override.returns(
228
+ {
229
+ assignee_ids: T::Array[String],
230
+ directions:
231
+ T::Array[
232
+ Revox::CampaignLaunchParams::Selection::Filters::Direction::OrSymbol
233
+ ],
234
+ outcomes:
235
+ T::Array[
236
+ Revox::CampaignLaunchParams::Selection::Filters::Outcome::OrSymbol
237
+ ],
238
+ results:
239
+ T::Array[
240
+ Revox::CampaignLaunchParams::Selection::Filters::Result::OrSymbol
241
+ ],
242
+ statuses:
243
+ T::Array[
244
+ Revox::CampaignLaunchParams::Selection::Filters::Status::OrSymbol
245
+ ],
246
+ query: String
247
+ }
248
+ )
249
+ end
250
+ def to_hash
251
+ end
252
+
253
+ module Direction
254
+ extend Revox::Internal::Type::Enum
255
+
256
+ TaggedSymbol =
257
+ T.type_alias do
258
+ T.all(
259
+ Symbol,
260
+ Revox::CampaignLaunchParams::Selection::Filters::Direction
261
+ )
262
+ end
263
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
264
+
265
+ INBOUND =
266
+ T.let(
267
+ :inbound,
268
+ Revox::CampaignLaunchParams::Selection::Filters::Direction::TaggedSymbol
269
+ )
270
+ OUTBOUND =
271
+ T.let(
272
+ :outbound,
273
+ Revox::CampaignLaunchParams::Selection::Filters::Direction::TaggedSymbol
274
+ )
275
+
276
+ sig do
277
+ override.returns(
278
+ T::Array[
279
+ Revox::CampaignLaunchParams::Selection::Filters::Direction::TaggedSymbol
280
+ ]
281
+ )
282
+ end
283
+ def self.values
284
+ end
285
+ end
286
+
287
+ module Outcome
288
+ extend Revox::Internal::Type::Enum
289
+
290
+ TaggedSymbol =
291
+ T.type_alias do
292
+ T.all(
293
+ Symbol,
294
+ Revox::CampaignLaunchParams::Selection::Filters::Outcome
295
+ )
296
+ end
297
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
298
+
299
+ NOT_INTERESTED =
300
+ T.let(
301
+ :not_interested,
302
+ Revox::CampaignLaunchParams::Selection::Filters::Outcome::TaggedSymbol
303
+ )
304
+ INTERESTED =
305
+ T.let(
306
+ :interested,
307
+ Revox::CampaignLaunchParams::Selection::Filters::Outcome::TaggedSymbol
308
+ )
309
+ COMPLETED =
310
+ T.let(
311
+ :completed,
312
+ Revox::CampaignLaunchParams::Selection::Filters::Outcome::TaggedSymbol
313
+ )
314
+ REQUESTED_CALLBACK_LATER =
315
+ T.let(
316
+ :requested_callback_later,
317
+ Revox::CampaignLaunchParams::Selection::Filters::Outcome::TaggedSymbol
318
+ )
319
+ NONE =
320
+ T.let(
321
+ :none,
322
+ Revox::CampaignLaunchParams::Selection::Filters::Outcome::TaggedSymbol
323
+ )
324
+
325
+ sig do
326
+ override.returns(
327
+ T::Array[
328
+ Revox::CampaignLaunchParams::Selection::Filters::Outcome::TaggedSymbol
329
+ ]
330
+ )
331
+ end
332
+ def self.values
333
+ end
334
+ end
335
+
336
+ module Result
337
+ extend Revox::Internal::Type::Enum
338
+
339
+ TaggedSymbol =
340
+ T.type_alias do
341
+ T.all(
342
+ Symbol,
343
+ Revox::CampaignLaunchParams::Selection::Filters::Result
344
+ )
345
+ end
346
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
347
+
348
+ IVR =
349
+ T.let(
350
+ :IVR,
351
+ Revox::CampaignLaunchParams::Selection::Filters::Result::TaggedSymbol
352
+ )
353
+ VOICEMAIL =
354
+ T.let(
355
+ :voicemail,
356
+ Revox::CampaignLaunchParams::Selection::Filters::Result::TaggedSymbol
357
+ )
358
+ HUMAN =
359
+ T.let(
360
+ :human,
361
+ Revox::CampaignLaunchParams::Selection::Filters::Result::TaggedSymbol
362
+ )
363
+ UNKNOWN =
364
+ T.let(
365
+ :unknown,
366
+ Revox::CampaignLaunchParams::Selection::Filters::Result::TaggedSymbol
367
+ )
368
+ IOS_SCREENING_FILTER =
369
+ T.let(
370
+ :"ios-screening-filter",
371
+ Revox::CampaignLaunchParams::Selection::Filters::Result::TaggedSymbol
372
+ )
373
+ NONE =
374
+ T.let(
375
+ :none,
376
+ Revox::CampaignLaunchParams::Selection::Filters::Result::TaggedSymbol
377
+ )
378
+
379
+ sig do
380
+ override.returns(
381
+ T::Array[
382
+ Revox::CampaignLaunchParams::Selection::Filters::Result::TaggedSymbol
383
+ ]
384
+ )
385
+ end
386
+ def self.values
387
+ end
388
+ end
389
+
390
+ module Status
391
+ extend Revox::Internal::Type::Enum
392
+
393
+ TaggedSymbol =
394
+ T.type_alias do
395
+ T.all(
396
+ Symbol,
397
+ Revox::CampaignLaunchParams::Selection::Filters::Status
398
+ )
399
+ end
400
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
401
+
402
+ INITIALIZING =
403
+ T.let(
404
+ :initializing,
405
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
406
+ )
407
+ QUEUED_FOR_CALLING =
408
+ T.let(
409
+ :queued_for_calling,
410
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
411
+ )
412
+ CALLING =
413
+ T.let(
414
+ :calling,
415
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
416
+ )
417
+ POST_PROCESSING =
418
+ T.let(
419
+ :post_processing,
420
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
421
+ )
422
+ NOT_LAUNCHED =
423
+ T.let(
424
+ :not_launched,
425
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
426
+ )
427
+ SCHEDULED =
428
+ T.let(
429
+ :scheduled,
430
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
431
+ )
432
+ PAUSED =
433
+ T.let(
434
+ :paused,
435
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
436
+ )
437
+ COMPLETED =
438
+ T.let(
439
+ :completed,
440
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
441
+ )
442
+ CANCELLED =
443
+ T.let(
444
+ :cancelled,
445
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
446
+ )
447
+ ERRORED =
448
+ T.let(
449
+ :errored,
450
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
451
+ )
452
+
453
+ sig do
454
+ override.returns(
455
+ T::Array[
456
+ Revox::CampaignLaunchParams::Selection::Filters::Status::TaggedSymbol
457
+ ]
458
+ )
459
+ end
460
+ def self.values
461
+ end
462
+ end
463
+ end
464
+
465
+ class Rows < Revox::Internal::Type::BaseModel
466
+ OrHash =
467
+ T.type_alias do
468
+ T.any(
469
+ Revox::CampaignLaunchParams::Selection::Rows,
470
+ Revox::Internal::AnyHash
471
+ )
472
+ end
473
+
474
+ sig { returns(T::Array[String]) }
475
+ attr_accessor :call_ids
476
+
477
+ sig do
478
+ returns(
479
+ Revox::CampaignLaunchParams::Selection::Rows::Mode::OrSymbol
480
+ )
481
+ end
482
+ attr_accessor :mode
483
+
484
+ sig do
485
+ params(
486
+ call_ids: T::Array[String],
487
+ mode: Revox::CampaignLaunchParams::Selection::Rows::Mode::OrSymbol
488
+ ).returns(T.attached_class)
489
+ end
490
+ def self.new(call_ids:, mode:)
491
+ end
492
+
493
+ sig do
494
+ override.returns(
495
+ {
496
+ call_ids: T::Array[String],
497
+ mode:
498
+ Revox::CampaignLaunchParams::Selection::Rows::Mode::OrSymbol
499
+ }
500
+ )
501
+ end
502
+ def to_hash
503
+ end
504
+
505
+ module Mode
506
+ extend Revox::Internal::Type::Enum
507
+
508
+ TaggedSymbol =
509
+ T.type_alias do
510
+ T.all(
511
+ Symbol,
512
+ Revox::CampaignLaunchParams::Selection::Rows::Mode
513
+ )
514
+ end
515
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
516
+
517
+ ALL_EXCEPT =
518
+ T.let(
519
+ :all_except,
520
+ Revox::CampaignLaunchParams::Selection::Rows::Mode::TaggedSymbol
521
+ )
522
+ ONLY =
523
+ T.let(
524
+ :only,
525
+ Revox::CampaignLaunchParams::Selection::Rows::Mode::TaggedSymbol
526
+ )
527
+
528
+ sig do
529
+ override.returns(
530
+ T::Array[
531
+ Revox::CampaignLaunchParams::Selection::Rows::Mode::TaggedSymbol
532
+ ]
533
+ )
534
+ end
535
+ def self.values
536
+ end
537
+ end
538
+ end
539
+ end
540
+ end
541
+ end
542
+ end