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.
@@ -0,0 +1,3196 @@
1
+ module Revox
2
+ module Models
3
+ type campaign_launch_response =
4
+ {
5
+ launched: Float,
6
+ skipped: Revox::Models::CampaignLaunchResponse::Skipped,
7
+ session: Revox::Models::CampaignLaunchResponse::Session
8
+ }
9
+
10
+ class CampaignLaunchResponse < Revox::Internal::Type::BaseModel
11
+ attr_accessor launched: Float
12
+
13
+ attr_accessor skipped: Revox::Models::CampaignLaunchResponse::Skipped
14
+
15
+ attr_reader session: Revox::Models::CampaignLaunchResponse::Session?
16
+
17
+ def session=: (
18
+ Revox::Models::CampaignLaunchResponse::Session
19
+ ) -> Revox::Models::CampaignLaunchResponse::Session
20
+
21
+ def initialize: (
22
+ launched: Float,
23
+ skipped: Revox::Models::CampaignLaunchResponse::Skipped,
24
+ ?session: Revox::Models::CampaignLaunchResponse::Session
25
+ ) -> void
26
+
27
+ def to_hash: -> {
28
+ launched: Float,
29
+ skipped: Revox::Models::CampaignLaunchResponse::Skipped,
30
+ session: Revox::Models::CampaignLaunchResponse::Session
31
+ }
32
+
33
+ type skipped =
34
+ { active: Float, attempts_exhausted: Float, cancelled: Float }
35
+
36
+ class Skipped < Revox::Internal::Type::BaseModel
37
+ attr_accessor active: Float
38
+
39
+ attr_accessor attempts_exhausted: Float
40
+
41
+ attr_accessor cancelled: Float
42
+
43
+ def initialize: (
44
+ active: Float,
45
+ attempts_exhausted: Float,
46
+ cancelled: Float
47
+ ) -> void
48
+
49
+ def to_hash: -> {
50
+ active: Float,
51
+ attempts_exhausted: Float,
52
+ cancelled: Float
53
+ }
54
+ end
55
+
56
+ type session =
57
+ {
58
+ id: String,
59
+ campaign_id: String,
60
+ connected_count: Float,
61
+ created_at: Revox::Models::CampaignLaunchResponse::Session::created_at,
62
+ current_call_id: String?,
63
+ dialed_count: Float,
64
+ ended_at: Revox::Models::CampaignLaunchResponse::Session::ended_at?,
65
+ in_flight_calls: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall],
66
+ outcome_filter: ::Array[Revox::Models::CampaignLaunchResponse::Session::outcome_filter],
67
+ status: Revox::Models::CampaignLaunchResponse::Session::status,
68
+ total_targets: Float
69
+ }
70
+
71
+ class Session < Revox::Internal::Type::BaseModel
72
+ attr_accessor id: String
73
+
74
+ attr_accessor campaign_id: String
75
+
76
+ attr_accessor connected_count: Float
77
+
78
+ attr_accessor created_at: Revox::Models::CampaignLaunchResponse::Session::created_at
79
+
80
+ attr_accessor current_call_id: String?
81
+
82
+ attr_accessor dialed_count: Float
83
+
84
+ attr_accessor ended_at: Revox::Models::CampaignLaunchResponse::Session::ended_at?
85
+
86
+ attr_accessor in_flight_calls: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall]
87
+
88
+ attr_accessor outcome_filter: ::Array[Revox::Models::CampaignLaunchResponse::Session::outcome_filter]
89
+
90
+ attr_accessor status: Revox::Models::CampaignLaunchResponse::Session::status
91
+
92
+ attr_accessor total_targets: Float
93
+
94
+ def initialize: (
95
+ id: String,
96
+ campaign_id: String,
97
+ connected_count: Float,
98
+ created_at: Revox::Models::CampaignLaunchResponse::Session::created_at,
99
+ current_call_id: String?,
100
+ dialed_count: Float,
101
+ ended_at: Revox::Models::CampaignLaunchResponse::Session::ended_at?,
102
+ in_flight_calls: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall],
103
+ outcome_filter: ::Array[Revox::Models::CampaignLaunchResponse::Session::outcome_filter],
104
+ status: Revox::Models::CampaignLaunchResponse::Session::status,
105
+ total_targets: Float
106
+ ) -> void
107
+
108
+ def to_hash: -> {
109
+ id: String,
110
+ campaign_id: String,
111
+ connected_count: Float,
112
+ created_at: Revox::Models::CampaignLaunchResponse::Session::created_at,
113
+ current_call_id: String?,
114
+ dialed_count: Float,
115
+ ended_at: Revox::Models::CampaignLaunchResponse::Session::ended_at?,
116
+ in_flight_calls: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall],
117
+ outcome_filter: ::Array[Revox::Models::CampaignLaunchResponse::Session::outcome_filter],
118
+ status: Revox::Models::CampaignLaunchResponse::Session::status,
119
+ total_targets: Float
120
+ }
121
+
122
+ type created_at = Time | top
123
+
124
+ module CreatedAt
125
+ extend Revox::Internal::Type::Union
126
+
127
+ def self?.variants: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::created_at]
128
+ end
129
+
130
+ type ended_at = Time | top
131
+
132
+ module EndedAt
133
+ extend Revox::Internal::Type::Union
134
+
135
+ def self?.variants: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::ended_at]
136
+ end
137
+
138
+ type in_flight_call =
139
+ {
140
+ id: String,
141
+ assignee: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assignee?,
142
+ assistant: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant?,
143
+ call_attempts: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt],
144
+ call_retry_config: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig?,
145
+ calls_count: Float,
146
+ campaign: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Campaign?,
147
+ contact: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Contact,
148
+ created_at: top,
149
+ direction: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::direction,
150
+ first_sentence_delay_ms: Integer,
151
+ from_phone_number: String,
152
+ is_cancelled: bool,
153
+ is_completed: bool,
154
+ last_call_attempt: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt?,
155
+ llm_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::llm_model,
156
+ metadata: ::Hash[Symbol, String]?,
157
+ organization_id: String,
158
+ prompt_variables: ::Hash[Symbol, String]?,
159
+ scheduled_at: top,
160
+ status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::status,
161
+ to_phone_number: String,
162
+ updated_at: top,
163
+ follow_up_emails: ::Array[String]?,
164
+ outcome: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::outcome?,
165
+ outcome_summary: String?,
166
+ slack_channel_ids: ::Array[String]?
167
+ }
168
+
169
+ class InFlightCall < Revox::Internal::Type::BaseModel
170
+ attr_accessor id: String
171
+
172
+ attr_accessor assignee: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assignee?
173
+
174
+ attr_accessor assistant: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant?
175
+
176
+ attr_accessor call_attempts: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt]
177
+
178
+ attr_accessor call_retry_config: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig?
179
+
180
+ attr_accessor calls_count: Float
181
+
182
+ attr_accessor campaign: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Campaign?
183
+
184
+ attr_accessor contact: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Contact
185
+
186
+ attr_accessor created_at: top
187
+
188
+ attr_accessor direction: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::direction
189
+
190
+ attr_accessor first_sentence_delay_ms: Integer
191
+
192
+ attr_accessor from_phone_number: String
193
+
194
+ attr_accessor is_cancelled: bool
195
+
196
+ attr_accessor is_completed: bool
197
+
198
+ attr_accessor last_call_attempt: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt?
199
+
200
+ attr_accessor llm_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::llm_model
201
+
202
+ attr_accessor metadata: ::Hash[Symbol, String]?
203
+
204
+ attr_accessor organization_id: String
205
+
206
+ attr_accessor prompt_variables: ::Hash[Symbol, String]?
207
+
208
+ attr_accessor scheduled_at: top
209
+
210
+ attr_accessor status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::status
211
+
212
+ attr_accessor to_phone_number: String
213
+
214
+ attr_accessor updated_at: top
215
+
216
+ attr_accessor follow_up_emails: ::Array[String]?
217
+
218
+ attr_accessor outcome: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::outcome?
219
+
220
+ attr_accessor outcome_summary: String?
221
+
222
+ attr_accessor slack_channel_ids: ::Array[String]?
223
+
224
+ def initialize: (
225
+ id: String,
226
+ assignee: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assignee?,
227
+ assistant: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant?,
228
+ call_attempts: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt],
229
+ call_retry_config: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig?,
230
+ calls_count: Float,
231
+ campaign: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Campaign?,
232
+ contact: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Contact,
233
+ created_at: top,
234
+ direction: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::direction,
235
+ first_sentence_delay_ms: Integer,
236
+ from_phone_number: String,
237
+ is_cancelled: bool,
238
+ is_completed: bool,
239
+ last_call_attempt: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt?,
240
+ llm_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::llm_model,
241
+ metadata: ::Hash[Symbol, String]?,
242
+ organization_id: String,
243
+ prompt_variables: ::Hash[Symbol, String]?,
244
+ scheduled_at: top,
245
+ status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::status,
246
+ to_phone_number: String,
247
+ updated_at: top,
248
+ ?follow_up_emails: ::Array[String]?,
249
+ ?outcome: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::outcome?,
250
+ ?outcome_summary: String?,
251
+ ?slack_channel_ids: ::Array[String]?
252
+ ) -> void
253
+
254
+ def to_hash: -> {
255
+ id: String,
256
+ assignee: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assignee?,
257
+ assistant: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant?,
258
+ call_attempts: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt],
259
+ call_retry_config: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig?,
260
+ calls_count: Float,
261
+ campaign: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Campaign?,
262
+ contact: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Contact,
263
+ created_at: top,
264
+ direction: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::direction,
265
+ first_sentence_delay_ms: Integer,
266
+ from_phone_number: String,
267
+ is_cancelled: bool,
268
+ is_completed: bool,
269
+ last_call_attempt: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt?,
270
+ llm_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::llm_model,
271
+ metadata: ::Hash[Symbol, String]?,
272
+ organization_id: String,
273
+ prompt_variables: ::Hash[Symbol, String]?,
274
+ scheduled_at: top,
275
+ status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::status,
276
+ to_phone_number: String,
277
+ updated_at: top,
278
+ follow_up_emails: ::Array[String]?,
279
+ outcome: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::outcome?,
280
+ outcome_summary: String?,
281
+ slack_channel_ids: ::Array[String]?
282
+ }
283
+
284
+ type assignee =
285
+ {
286
+ id: String,
287
+ email: String,
288
+ first_name: String?,
289
+ last_name: String?
290
+ }
291
+
292
+ class Assignee < Revox::Internal::Type::BaseModel
293
+ attr_accessor id: String
294
+
295
+ attr_accessor email: String
296
+
297
+ attr_accessor first_name: String?
298
+
299
+ attr_accessor last_name: String?
300
+
301
+ def initialize: (
302
+ id: String,
303
+ email: String,
304
+ first_name: String?,
305
+ last_name: String?
306
+ ) -> void
307
+
308
+ def to_hash: -> {
309
+ id: String,
310
+ email: String,
311
+ first_name: String?,
312
+ last_name: String?
313
+ }
314
+ end
315
+
316
+ type assistant =
317
+ {
318
+ id: String,
319
+ after_call_sms_outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::after_call_sms_outcome]?,
320
+ after_call_sms_prompt: String?,
321
+ background_sound: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::background_sound?,
322
+ background_sound_volume: Float,
323
+ calendly: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Calendly?,
324
+ call_retry_config: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig?,
325
+ cartesia_dictionary_pronunciation_id: String?,
326
+ created_at: top,
327
+ custom_tools: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool]?,
328
+ email_notification_address: String?,
329
+ email_notification_outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::email_notification_outcome]?,
330
+ end_of_call_sentence: String?,
331
+ first_sentence: String?,
332
+ first_sentence_delay_ms: Integer,
333
+ first_sentence_mode: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::first_sentence_mode,
334
+ from_phone_number: String?,
335
+ human_transfer_mode: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::human_transfer_mode?,
336
+ ivr_navigation_enabled: bool,
337
+ llm_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::llm_model,
338
+ logo_url: String?,
339
+ max_call_duration_secs: Float,
340
+ max_duration_end_message: String?,
341
+ name: String,
342
+ organization_id: String,
343
+ position: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Position?,
344
+ precall_lookup_url: String?,
345
+ prompt: String,
346
+ prompt_flow: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow?,
347
+ slack: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack?,
348
+ sms_enabled: bool,
349
+ sms_template: String?,
350
+ structured_output_config: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::StructuredOutputConfig]?,
351
+ structured_output_prompt: String?,
352
+ stt_context: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::SttContext?,
353
+ stt_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::stt_model,
354
+ thinking_sound: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::thinking_sound?,
355
+ thinking_sound_probability: Float,
356
+ thinking_sound_volume: Float,
357
+ transfer_destinations: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::TransferDestination]?,
358
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::type_,
359
+ updated_at: top,
360
+ voice: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice?,
361
+ voicemail_message: String?,
362
+ voicemail_sms_prompt: String?,
363
+ warm_transfer_summary_instructions: String?,
364
+ webhook_url: String?,
365
+ zoho: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho?,
366
+ created_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CreatedBy?,
367
+ faq_items: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem],
368
+ is_inbound_receptionist: bool,
369
+ is_realestate_assistant: bool,
370
+ pending_faq_count: Float
371
+ }
372
+
373
+ class Assistant < Revox::Internal::Type::BaseModel
374
+ attr_accessor id: String
375
+
376
+ attr_accessor after_call_sms_outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::after_call_sms_outcome]?
377
+
378
+ attr_accessor after_call_sms_prompt: String?
379
+
380
+ attr_accessor background_sound: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::background_sound?
381
+
382
+ attr_accessor background_sound_volume: Float
383
+
384
+ attr_accessor calendly: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Calendly?
385
+
386
+ attr_accessor call_retry_config: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig?
387
+
388
+ attr_accessor cartesia_dictionary_pronunciation_id: String?
389
+
390
+ attr_accessor created_at: top
391
+
392
+ attr_accessor custom_tools: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool]?
393
+
394
+ attr_accessor email_notification_address: String?
395
+
396
+ attr_accessor email_notification_outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::email_notification_outcome]?
397
+
398
+ attr_accessor end_of_call_sentence: String?
399
+
400
+ attr_accessor first_sentence: String?
401
+
402
+ attr_accessor first_sentence_delay_ms: Integer
403
+
404
+ attr_accessor first_sentence_mode: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::first_sentence_mode
405
+
406
+ attr_accessor from_phone_number: String?
407
+
408
+ attr_accessor human_transfer_mode: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::human_transfer_mode?
409
+
410
+ attr_accessor ivr_navigation_enabled: bool
411
+
412
+ attr_accessor llm_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::llm_model
413
+
414
+ attr_accessor logo_url: String?
415
+
416
+ attr_accessor max_call_duration_secs: Float
417
+
418
+ attr_accessor max_duration_end_message: String?
419
+
420
+ attr_accessor name: String
421
+
422
+ attr_accessor organization_id: String
423
+
424
+ attr_accessor position: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Position?
425
+
426
+ attr_accessor precall_lookup_url: String?
427
+
428
+ attr_accessor prompt: String
429
+
430
+ attr_accessor prompt_flow: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow?
431
+
432
+ attr_accessor slack: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack?
433
+
434
+ attr_accessor sms_enabled: bool
435
+
436
+ attr_accessor sms_template: String?
437
+
438
+ attr_accessor structured_output_config: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::StructuredOutputConfig]?
439
+
440
+ attr_accessor structured_output_prompt: String?
441
+
442
+ attr_accessor stt_context: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::SttContext?
443
+
444
+ attr_accessor stt_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::stt_model
445
+
446
+ attr_accessor thinking_sound: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::thinking_sound?
447
+
448
+ attr_accessor thinking_sound_probability: Float
449
+
450
+ attr_accessor thinking_sound_volume: Float
451
+
452
+ attr_accessor transfer_destinations: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::TransferDestination]?
453
+
454
+ attr_accessor type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::type_
455
+
456
+ attr_accessor updated_at: top
457
+
458
+ attr_accessor voice: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice?
459
+
460
+ attr_accessor voicemail_message: String?
461
+
462
+ attr_accessor voicemail_sms_prompt: String?
463
+
464
+ attr_accessor warm_transfer_summary_instructions: String?
465
+
466
+ attr_accessor webhook_url: String?
467
+
468
+ attr_accessor zoho: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho?
469
+
470
+ attr_accessor created_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CreatedBy?
471
+
472
+ attr_reader faq_items: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem]?
473
+
474
+ def faq_items=: (
475
+ ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem]
476
+ ) -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem]
477
+
478
+ attr_reader is_inbound_receptionist: bool?
479
+
480
+ def is_inbound_receptionist=: (bool) -> bool
481
+
482
+ attr_reader is_realestate_assistant: bool?
483
+
484
+ def is_realestate_assistant=: (bool) -> bool
485
+
486
+ attr_reader pending_faq_count: Float?
487
+
488
+ def pending_faq_count=: (Float) -> Float
489
+
490
+ def initialize: (
491
+ id: String,
492
+ after_call_sms_outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::after_call_sms_outcome]?,
493
+ after_call_sms_prompt: String?,
494
+ background_sound: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::background_sound?,
495
+ background_sound_volume: Float,
496
+ calendly: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Calendly?,
497
+ call_retry_config: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig?,
498
+ cartesia_dictionary_pronunciation_id: String?,
499
+ created_at: top,
500
+ custom_tools: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool]?,
501
+ email_notification_address: String?,
502
+ email_notification_outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::email_notification_outcome]?,
503
+ end_of_call_sentence: String?,
504
+ first_sentence: String?,
505
+ first_sentence_delay_ms: Integer,
506
+ first_sentence_mode: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::first_sentence_mode,
507
+ from_phone_number: String?,
508
+ human_transfer_mode: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::human_transfer_mode?,
509
+ ivr_navigation_enabled: bool,
510
+ llm_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::llm_model,
511
+ logo_url: String?,
512
+ max_call_duration_secs: Float,
513
+ max_duration_end_message: String?,
514
+ name: String,
515
+ organization_id: String,
516
+ position: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Position?,
517
+ precall_lookup_url: String?,
518
+ prompt: String,
519
+ prompt_flow: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow?,
520
+ slack: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack?,
521
+ sms_enabled: bool,
522
+ sms_template: String?,
523
+ structured_output_config: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::StructuredOutputConfig]?,
524
+ structured_output_prompt: String?,
525
+ stt_context: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::SttContext?,
526
+ stt_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::stt_model,
527
+ thinking_sound: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::thinking_sound?,
528
+ thinking_sound_probability: Float,
529
+ thinking_sound_volume: Float,
530
+ transfer_destinations: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::TransferDestination]?,
531
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::type_,
532
+ updated_at: top,
533
+ voice: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice?,
534
+ voicemail_message: String?,
535
+ voicemail_sms_prompt: String?,
536
+ warm_transfer_summary_instructions: String?,
537
+ webhook_url: String?,
538
+ zoho: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho?,
539
+ ?created_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CreatedBy?,
540
+ ?faq_items: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem],
541
+ ?is_inbound_receptionist: bool,
542
+ ?is_realestate_assistant: bool,
543
+ ?pending_faq_count: Float
544
+ ) -> void
545
+
546
+ def to_hash: -> {
547
+ id: String,
548
+ after_call_sms_outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::after_call_sms_outcome]?,
549
+ after_call_sms_prompt: String?,
550
+ background_sound: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::background_sound?,
551
+ background_sound_volume: Float,
552
+ calendly: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Calendly?,
553
+ call_retry_config: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig?,
554
+ cartesia_dictionary_pronunciation_id: String?,
555
+ created_at: top,
556
+ custom_tools: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool]?,
557
+ email_notification_address: String?,
558
+ email_notification_outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::email_notification_outcome]?,
559
+ end_of_call_sentence: String?,
560
+ first_sentence: String?,
561
+ first_sentence_delay_ms: Integer,
562
+ first_sentence_mode: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::first_sentence_mode,
563
+ from_phone_number: String?,
564
+ human_transfer_mode: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::human_transfer_mode?,
565
+ ivr_navigation_enabled: bool,
566
+ llm_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::llm_model,
567
+ logo_url: String?,
568
+ max_call_duration_secs: Float,
569
+ max_duration_end_message: String?,
570
+ name: String,
571
+ organization_id: String,
572
+ position: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Position?,
573
+ precall_lookup_url: String?,
574
+ prompt: String,
575
+ prompt_flow: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow?,
576
+ slack: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack?,
577
+ sms_enabled: bool,
578
+ sms_template: String?,
579
+ structured_output_config: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::StructuredOutputConfig]?,
580
+ structured_output_prompt: String?,
581
+ stt_context: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::SttContext?,
582
+ stt_model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::stt_model,
583
+ thinking_sound: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::thinking_sound?,
584
+ thinking_sound_probability: Float,
585
+ thinking_sound_volume: Float,
586
+ transfer_destinations: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::TransferDestination]?,
587
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::type_,
588
+ updated_at: top,
589
+ voice: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice?,
590
+ voicemail_message: String?,
591
+ voicemail_sms_prompt: String?,
592
+ warm_transfer_summary_instructions: String?,
593
+ webhook_url: String?,
594
+ zoho: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho?,
595
+ created_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CreatedBy?,
596
+ faq_items: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem],
597
+ is_inbound_receptionist: bool,
598
+ is_realestate_assistant: bool,
599
+ pending_faq_count: Float
600
+ }
601
+
602
+ type after_call_sms_outcome =
603
+ :not_interested
604
+ | :interested
605
+ | :completed
606
+ | :requested_callback_later
607
+ | :none
608
+
609
+ module AfterCallSMSOutcome
610
+ extend Revox::Internal::Type::Enum
611
+
612
+ NOT_INTERESTED: :not_interested
613
+ INTERESTED: :interested
614
+ COMPLETED: :completed
615
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
616
+ NONE: :none
617
+
618
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::after_call_sms_outcome]
619
+ end
620
+
621
+ type background_sound = :"audio/office.ogg"
622
+
623
+ module BackgroundSound
624
+ extend Revox::Internal::Type::Enum
625
+
626
+ AUDIO_OFFICE_OGG: :"audio/office.ogg"
627
+
628
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::background_sound]
629
+ end
630
+
631
+ type calendly = { connection_id: String, event_type_id: String }
632
+
633
+ class Calendly < Revox::Internal::Type::BaseModel
634
+ attr_accessor connection_id: String
635
+
636
+ attr_accessor event_type_id: String
637
+
638
+ def initialize: (
639
+ connection_id: String,
640
+ event_type_id: String
641
+ ) -> void
642
+
643
+ def to_hash: -> { connection_id: String, event_type_id: String }
644
+ end
645
+
646
+ type call_retry_config =
647
+ {
648
+ allowed_days: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig::allowed_day],
649
+ call_twice_in_a_row: bool,
650
+ calling_windows: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig::CallingWindow],
651
+ max_retry_attempts: Integer,
652
+ timezone: String?
653
+ }
654
+
655
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
656
+ attr_accessor allowed_days: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig::allowed_day]
657
+
658
+ attr_accessor call_twice_in_a_row: bool
659
+
660
+ attr_accessor calling_windows: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig::CallingWindow]
661
+
662
+ attr_accessor max_retry_attempts: Integer
663
+
664
+ attr_accessor timezone: String?
665
+
666
+ def initialize: (
667
+ allowed_days: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig::allowed_day],
668
+ call_twice_in_a_row: bool,
669
+ calling_windows: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig::CallingWindow],
670
+ max_retry_attempts: Integer,
671
+ ?timezone: String?
672
+ ) -> void
673
+
674
+ def to_hash: -> {
675
+ allowed_days: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig::allowed_day],
676
+ call_twice_in_a_row: bool,
677
+ calling_windows: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig::CallingWindow],
678
+ max_retry_attempts: Integer,
679
+ timezone: String?
680
+ }
681
+
682
+ type allowed_day =
683
+ :monday
684
+ | :tuesday
685
+ | :wednesday
686
+ | :thursday
687
+ | :friday
688
+ | :saturday
689
+ | :sunday
690
+
691
+ module AllowedDay
692
+ extend Revox::Internal::Type::Enum
693
+
694
+ MONDAY: :monday
695
+ TUESDAY: :tuesday
696
+ WEDNESDAY: :wednesday
697
+ THURSDAY: :thursday
698
+ FRIDAY: :friday
699
+ SATURDAY: :saturday
700
+ SUNDAY: :sunday
701
+
702
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CallRetryConfig::allowed_day]
703
+ end
704
+
705
+ type calling_window =
706
+ {
707
+ calling_window_end_time: String,
708
+ calling_window_start_time: String,
709
+ retry_delay_seconds: Integer
710
+ }
711
+
712
+ class CallingWindow < Revox::Internal::Type::BaseModel
713
+ attr_accessor calling_window_end_time: String
714
+
715
+ attr_accessor calling_window_start_time: String
716
+
717
+ attr_accessor retry_delay_seconds: Integer
718
+
719
+ def initialize: (
720
+ calling_window_end_time: String,
721
+ calling_window_start_time: String,
722
+ retry_delay_seconds: Integer
723
+ ) -> void
724
+
725
+ def to_hash: -> {
726
+ calling_window_end_time: String,
727
+ calling_window_start_time: String,
728
+ retry_delay_seconds: Integer
729
+ }
730
+ end
731
+ end
732
+
733
+ type custom_tool =
734
+ {
735
+ body_template: String?,
736
+ description: String,
737
+ headers: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::Header],
738
+ input_schema: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::InputSchema],
739
+ method_: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::method_,
740
+ name: String,
741
+ query_params: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::QueryParam],
742
+ url: String
743
+ }
744
+
745
+ class CustomTool < Revox::Internal::Type::BaseModel
746
+ attr_accessor body_template: String?
747
+
748
+ attr_accessor description: String
749
+
750
+ attr_accessor headers: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::Header]
751
+
752
+ attr_accessor input_schema: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::InputSchema]
753
+
754
+ attr_accessor method_: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::method_
755
+
756
+ attr_accessor name: String
757
+
758
+ attr_accessor query_params: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::QueryParam]
759
+
760
+ attr_accessor url: String
761
+
762
+ def initialize: (
763
+ body_template: String?,
764
+ description: String,
765
+ headers: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::Header],
766
+ input_schema: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::InputSchema],
767
+ method_: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::method_,
768
+ name: String,
769
+ query_params: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::QueryParam],
770
+ url: String
771
+ ) -> void
772
+
773
+ def to_hash: -> {
774
+ body_template: String?,
775
+ description: String,
776
+ headers: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::Header],
777
+ input_schema: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::InputSchema],
778
+ method_: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::method_,
779
+ name: String,
780
+ query_params: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::QueryParam],
781
+ url: String
782
+ }
783
+
784
+ type header = { key: String, value: String }
785
+
786
+ class Header < Revox::Internal::Type::BaseModel
787
+ attr_accessor key: String
788
+
789
+ attr_accessor value: String
790
+
791
+ def initialize: (key: String, value: String) -> void
792
+
793
+ def to_hash: -> { key: String, value: String }
794
+ end
795
+
796
+ type input_schema =
797
+ {
798
+ name: String,
799
+ required: bool,
800
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::InputSchema::type_,
801
+ description: String,
802
+ enum_options: ::Array[String]
803
+ }
804
+
805
+ class InputSchema < Revox::Internal::Type::BaseModel
806
+ attr_accessor name: String
807
+
808
+ attr_accessor required: bool
809
+
810
+ attr_accessor type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::InputSchema::type_
811
+
812
+ attr_reader description: String?
813
+
814
+ def description=: (String) -> String
815
+
816
+ attr_reader enum_options: ::Array[String]?
817
+
818
+ def enum_options=: (::Array[String]) -> ::Array[String]
819
+
820
+ def initialize: (
821
+ name: String,
822
+ required: bool,
823
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::InputSchema::type_,
824
+ ?description: String,
825
+ ?enum_options: ::Array[String]
826
+ ) -> void
827
+
828
+ def to_hash: -> {
829
+ name: String,
830
+ required: bool,
831
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::InputSchema::type_,
832
+ description: String,
833
+ enum_options: ::Array[String]
834
+ }
835
+
836
+ type type_ =
837
+ :string | :number | :boolean | :enum | :date | :datetime
838
+
839
+ module Type
840
+ extend Revox::Internal::Type::Enum
841
+
842
+ STRING: :string
843
+ NUMBER: :number
844
+ BOOLEAN: :boolean
845
+ ENUM: :enum
846
+ DATE: :date
847
+ DATETIME: :datetime
848
+
849
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::InputSchema::type_]
850
+ end
851
+ end
852
+
853
+ type method_ = :GET | :POST | :PUT | :PATCH | :DELETE
854
+
855
+ module Method
856
+ extend Revox::Internal::Type::Enum
857
+
858
+ GET: :GET
859
+ POST: :POST
860
+ PUT: :PUT
861
+ PATCH: :PATCH
862
+ DELETE: :DELETE
863
+
864
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::CustomTool::method_]
865
+ end
866
+
867
+ type query_param = { key: String, value: String }
868
+
869
+ class QueryParam < Revox::Internal::Type::BaseModel
870
+ attr_accessor key: String
871
+
872
+ attr_accessor value: String
873
+
874
+ def initialize: (key: String, value: String) -> void
875
+
876
+ def to_hash: -> { key: String, value: String }
877
+ end
878
+ end
879
+
880
+ type email_notification_outcome =
881
+ :not_interested
882
+ | :interested
883
+ | :completed
884
+ | :requested_callback_later
885
+ | :none
886
+
887
+ module EmailNotificationOutcome
888
+ extend Revox::Internal::Type::Enum
889
+
890
+ NOT_INTERESTED: :not_interested
891
+ INTERESTED: :interested
892
+ COMPLETED: :completed
893
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
894
+ NONE: :none
895
+
896
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::email_notification_outcome]
897
+ end
898
+
899
+ type first_sentence_mode = :generated | :static | :none
900
+
901
+ module FirstSentenceMode
902
+ extend Revox::Internal::Type::Enum
903
+
904
+ GENERATED: :generated
905
+ STATIC: :static
906
+ NONE: :none
907
+
908
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::first_sentence_mode]
909
+ end
910
+
911
+ type human_transfer_mode = :warm | :cold
912
+
913
+ module HumanTransferMode
914
+ extend Revox::Internal::Type::Enum
915
+
916
+ WARM: :warm
917
+ COLD: :cold
918
+
919
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::human_transfer_mode]
920
+ end
921
+
922
+ type llm_model =
923
+ Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember0
924
+ | Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember1
925
+ | Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember2
926
+ | Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember3
927
+
928
+ module LlmModel
929
+ extend Revox::Internal::Type::Union
930
+
931
+ type union_member0 =
932
+ {
933
+ name: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember0::name_,
934
+ type: :"dedicated-instance"
935
+ }
936
+
937
+ class UnionMember0 < Revox::Internal::Type::BaseModel
938
+ attr_accessor name: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember0::name_
939
+
940
+ attr_accessor type: :"dedicated-instance"
941
+
942
+ def initialize: (
943
+ name: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember0::name_,
944
+ ?type: :"dedicated-instance"
945
+ ) -> void
946
+
947
+ def to_hash: -> {
948
+ name: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember0::name_,
949
+ type: :"dedicated-instance"
950
+ }
951
+
952
+ type name_ = :"gpt-4.1" | :"ministral-3-8b-instruct"
953
+
954
+ module Name
955
+ extend Revox::Internal::Type::Enum
956
+
957
+ GPT_4_1: :"gpt-4.1"
958
+ MINISTRAL_3_8B_INSTRUCT: :"ministral-3-8b-instruct"
959
+
960
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember0::name_]
961
+ end
962
+ end
963
+
964
+ type union_member1 =
965
+ {
966
+ openrouter_model_id: String,
967
+ openrouter_provider: String,
968
+ type: :openrouter
969
+ }
970
+
971
+ class UnionMember1 < Revox::Internal::Type::BaseModel
972
+ attr_accessor openrouter_model_id: String
973
+
974
+ attr_accessor openrouter_provider: String
975
+
976
+ attr_accessor type: :openrouter
977
+
978
+ def initialize: (
979
+ openrouter_model_id: String,
980
+ openrouter_provider: String,
981
+ ?type: :openrouter
982
+ ) -> void
983
+
984
+ def to_hash: -> {
985
+ openrouter_model_id: String,
986
+ openrouter_provider: String,
987
+ type: :openrouter
988
+ }
989
+ end
990
+
991
+ type union_member2 =
992
+ {
993
+ api_key: String,
994
+ api_url: String,
995
+ model_name: String,
996
+ type: :custom
997
+ }
998
+
999
+ class UnionMember2 < Revox::Internal::Type::BaseModel
1000
+ attr_accessor api_key: String
1001
+
1002
+ attr_accessor api_url: String
1003
+
1004
+ attr_accessor model_name: String
1005
+
1006
+ attr_accessor type: :custom
1007
+
1008
+ def initialize: (
1009
+ api_key: String,
1010
+ api_url: String,
1011
+ model_name: String,
1012
+ ?type: :custom
1013
+ ) -> void
1014
+
1015
+ def to_hash: -> {
1016
+ api_key: String,
1017
+ api_url: String,
1018
+ model_name: String,
1019
+ type: :custom
1020
+ }
1021
+ end
1022
+
1023
+ type union_member3 =
1024
+ {
1025
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember3::provider,
1026
+ realtime_model_id: String,
1027
+ type: :realtime,
1028
+ realtime_voice_id: String
1029
+ }
1030
+
1031
+ class UnionMember3 < Revox::Internal::Type::BaseModel
1032
+ attr_accessor provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember3::provider
1033
+
1034
+ attr_accessor realtime_model_id: String
1035
+
1036
+ attr_accessor type: :realtime
1037
+
1038
+ attr_reader realtime_voice_id: String?
1039
+
1040
+ def realtime_voice_id=: (String) -> String
1041
+
1042
+ def initialize: (
1043
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember3::provider,
1044
+ realtime_model_id: String,
1045
+ ?realtime_voice_id: String,
1046
+ ?type: :realtime
1047
+ ) -> void
1048
+
1049
+ def to_hash: -> {
1050
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember3::provider,
1051
+ realtime_model_id: String,
1052
+ type: :realtime,
1053
+ realtime_voice_id: String
1054
+ }
1055
+
1056
+ type provider = :openai | :google
1057
+
1058
+ module Provider
1059
+ extend Revox::Internal::Type::Enum
1060
+
1061
+ OPENAI: :openai
1062
+ GOOGLE: :google
1063
+
1064
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::LlmModel::UnionMember3::provider]
1065
+ end
1066
+ end
1067
+
1068
+ def self?.variants: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::llm_model]
1069
+ end
1070
+
1071
+ type position = { x: Float, y_: Float }
1072
+
1073
+ class Position < Revox::Internal::Type::BaseModel
1074
+ attr_accessor x: Float
1075
+
1076
+ attr_accessor y_: Float
1077
+
1078
+ def initialize: (x: Float, y_: Float) -> void
1079
+
1080
+ def to_hash: -> { x: Float, y_: Float }
1081
+ end
1082
+
1083
+ type prompt_flow =
1084
+ {
1085
+ edges: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Edge],
1086
+ nodes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node]
1087
+ }
1088
+
1089
+ class PromptFlow < Revox::Internal::Type::BaseModel
1090
+ attr_accessor edges: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Edge]
1091
+
1092
+ attr_accessor nodes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node]
1093
+
1094
+ def initialize: (
1095
+ edges: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Edge],
1096
+ nodes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node]
1097
+ ) -> void
1098
+
1099
+ def to_hash: -> {
1100
+ edges: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Edge],
1101
+ nodes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node]
1102
+ }
1103
+
1104
+ type edge = { id: String, source: String, target: String }
1105
+
1106
+ class Edge < Revox::Internal::Type::BaseModel
1107
+ attr_accessor id: String
1108
+
1109
+ attr_accessor source: String
1110
+
1111
+ attr_accessor target: String
1112
+
1113
+ def initialize: (
1114
+ id: String,
1115
+ source: String,
1116
+ target: String
1117
+ ) -> void
1118
+
1119
+ def to_hash: -> { id: String, source: String, target: String }
1120
+ end
1121
+
1122
+ type node =
1123
+ {
1124
+ id: String,
1125
+ data: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node::Data,
1126
+ position: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node::Position,
1127
+ type: :promptBlock
1128
+ }
1129
+
1130
+ class Node < Revox::Internal::Type::BaseModel
1131
+ attr_accessor id: String
1132
+
1133
+ attr_accessor data: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node::Data
1134
+
1135
+ attr_accessor position: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node::Position
1136
+
1137
+ attr_accessor type: :promptBlock
1138
+
1139
+ def initialize: (
1140
+ id: String,
1141
+ data: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node::Data,
1142
+ position: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node::Position,
1143
+ ?type: :promptBlock
1144
+ ) -> void
1145
+
1146
+ def to_hash: -> {
1147
+ id: String,
1148
+ data: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node::Data,
1149
+ position: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::PromptFlow::Node::Position,
1150
+ type: :promptBlock
1151
+ }
1152
+
1153
+ type data = { body: String, title: String }
1154
+
1155
+ class Data < Revox::Internal::Type::BaseModel
1156
+ attr_accessor body: String
1157
+
1158
+ attr_accessor title: String
1159
+
1160
+ def initialize: (body: String, title: String) -> void
1161
+
1162
+ def to_hash: -> { body: String, title: String }
1163
+ end
1164
+
1165
+ type position = { x: Float, y_: Float }
1166
+
1167
+ class Position < Revox::Internal::Type::BaseModel
1168
+ attr_accessor x: Float
1169
+
1170
+ attr_accessor y_: Float
1171
+
1172
+ def initialize: (x: Float, y_: Float) -> void
1173
+
1174
+ def to_hash: -> { x: Float, y_: Float }
1175
+ end
1176
+ end
1177
+ end
1178
+
1179
+ type slack =
1180
+ {
1181
+ channels: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack::Channel],
1182
+ connection_id: String,
1183
+ outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack::outcome],
1184
+ template: String?
1185
+ }
1186
+
1187
+ class Slack < Revox::Internal::Type::BaseModel
1188
+ attr_accessor channels: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack::Channel]
1189
+
1190
+ attr_accessor connection_id: String
1191
+
1192
+ attr_accessor outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack::outcome]
1193
+
1194
+ attr_accessor template: String?
1195
+
1196
+ def initialize: (
1197
+ channels: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack::Channel],
1198
+ connection_id: String,
1199
+ outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack::outcome],
1200
+ ?template: String?
1201
+ ) -> void
1202
+
1203
+ def to_hash: -> {
1204
+ channels: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack::Channel],
1205
+ connection_id: String,
1206
+ outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack::outcome],
1207
+ template: String?
1208
+ }
1209
+
1210
+ type channel = { id: String, name: String? }
1211
+
1212
+ class Channel < Revox::Internal::Type::BaseModel
1213
+ attr_accessor id: String
1214
+
1215
+ attr_accessor name: String?
1216
+
1217
+ def initialize: (id: String, ?name: String?) -> void
1218
+
1219
+ def to_hash: -> { id: String, name: String? }
1220
+ end
1221
+
1222
+ type outcome =
1223
+ :not_interested
1224
+ | :interested
1225
+ | :completed
1226
+ | :requested_callback_later
1227
+ | :none
1228
+
1229
+ module Outcome
1230
+ extend Revox::Internal::Type::Enum
1231
+
1232
+ NOT_INTERESTED: :not_interested
1233
+ INTERESTED: :interested
1234
+ COMPLETED: :completed
1235
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
1236
+ NONE: :none
1237
+
1238
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Slack::outcome]
1239
+ end
1240
+ end
1241
+
1242
+ type structured_output_config =
1243
+ {
1244
+ name: String,
1245
+ required: bool,
1246
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::StructuredOutputConfig::type_,
1247
+ description: String,
1248
+ enum_options: ::Array[String]
1249
+ }
1250
+
1251
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
1252
+ attr_accessor name: String
1253
+
1254
+ attr_accessor required: bool
1255
+
1256
+ attr_accessor type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::StructuredOutputConfig::type_
1257
+
1258
+ attr_reader description: String?
1259
+
1260
+ def description=: (String) -> String
1261
+
1262
+ attr_reader enum_options: ::Array[String]?
1263
+
1264
+ def enum_options=: (::Array[String]) -> ::Array[String]
1265
+
1266
+ def initialize: (
1267
+ name: String,
1268
+ required: bool,
1269
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::StructuredOutputConfig::type_,
1270
+ ?description: String,
1271
+ ?enum_options: ::Array[String]
1272
+ ) -> void
1273
+
1274
+ def to_hash: -> {
1275
+ name: String,
1276
+ required: bool,
1277
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::StructuredOutputConfig::type_,
1278
+ description: String,
1279
+ enum_options: ::Array[String]
1280
+ }
1281
+
1282
+ type type_ =
1283
+ :string | :number | :boolean | :enum | :date | :datetime
1284
+
1285
+ module Type
1286
+ extend Revox::Internal::Type::Enum
1287
+
1288
+ STRING: :string
1289
+ NUMBER: :number
1290
+ BOOLEAN: :boolean
1291
+ ENUM: :enum
1292
+ DATE: :date
1293
+ DATETIME: :datetime
1294
+
1295
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::StructuredOutputConfig::type_]
1296
+ end
1297
+ end
1298
+
1299
+ type stt_context =
1300
+ {
1301
+ general: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::SttContext::General],
1302
+ terms: ::Array[String]
1303
+ }
1304
+
1305
+ class SttContext < Revox::Internal::Type::BaseModel
1306
+ attr_accessor general: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::SttContext::General]
1307
+
1308
+ attr_accessor terms: ::Array[String]
1309
+
1310
+ def initialize: (
1311
+ general: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::SttContext::General],
1312
+ terms: ::Array[String]
1313
+ ) -> void
1314
+
1315
+ def to_hash: -> {
1316
+ general: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::SttContext::General],
1317
+ terms: ::Array[String]
1318
+ }
1319
+
1320
+ type general = { key: String, value: String }
1321
+
1322
+ class General < Revox::Internal::Type::BaseModel
1323
+ attr_accessor key: String
1324
+
1325
+ attr_accessor value: String
1326
+
1327
+ def initialize: (key: String, value: String) -> void
1328
+
1329
+ def to_hash: -> { key: String, value: String }
1330
+ end
1331
+ end
1332
+
1333
+ type stt_model = :"stt-rt-v4" | :"stt-rt-v5"
1334
+
1335
+ module SttModel
1336
+ extend Revox::Internal::Type::Enum
1337
+
1338
+ STT_RT_V4: :"stt-rt-v4"
1339
+ STT_RT_V5: :"stt-rt-v5"
1340
+
1341
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::stt_model]
1342
+ end
1343
+
1344
+ type thinking_sound =
1345
+ :"city-ambience.ogg"
1346
+ | :"forest-ambience.ogg"
1347
+ | :"office-ambience.ogg"
1348
+ | :"crowded-room.ogg"
1349
+ | :"keyboard-typing.ogg"
1350
+ | :"keyboard-typing2.ogg"
1351
+ | :"hold_music.ogg"
1352
+
1353
+ module ThinkingSound
1354
+ extend Revox::Internal::Type::Enum
1355
+
1356
+ CITY_AMBIENCE_OGG: :"city-ambience.ogg"
1357
+ FOREST_AMBIENCE_OGG: :"forest-ambience.ogg"
1358
+ OFFICE_AMBIENCE_OGG: :"office-ambience.ogg"
1359
+ CROWDED_ROOM_OGG: :"crowded-room.ogg"
1360
+ KEYBOARD_TYPING_OGG: :"keyboard-typing.ogg"
1361
+ KEYBOARD_TYPING2_OGG: :"keyboard-typing2.ogg"
1362
+ HOLD_MUSIC_OGG: :"hold_music.ogg"
1363
+
1364
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::thinking_sound]
1365
+ end
1366
+
1367
+ type transfer_destination = { label: String, phone_number: String }
1368
+
1369
+ class TransferDestination < Revox::Internal::Type::BaseModel
1370
+ attr_accessor label: String
1371
+
1372
+ attr_accessor phone_number: String
1373
+
1374
+ def initialize: (label: String, phone_number: String) -> void
1375
+
1376
+ def to_hash: -> { label: String, phone_number: String }
1377
+ end
1378
+
1379
+ type type_ = :standalone | :"multi-step" | :"sub-assistant"
1380
+
1381
+ module Type
1382
+ extend Revox::Internal::Type::Enum
1383
+
1384
+ STANDALONE: :standalone
1385
+ MULTI_STEP: :"multi-step"
1386
+ SUB_ASSISTANT: :"sub-assistant"
1387
+
1388
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::type_]
1389
+ end
1390
+
1391
+ type voice =
1392
+ {
1393
+ id: String,
1394
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::provider,
1395
+ model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::model,
1396
+ speed: Float,
1397
+ volume: Float
1398
+ }
1399
+
1400
+ class Voice < Revox::Internal::Type::BaseModel
1401
+ attr_accessor id: String
1402
+
1403
+ attr_accessor provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::provider
1404
+
1405
+ attr_reader model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::model?
1406
+
1407
+ def model=: (
1408
+ Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::model
1409
+ ) -> Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::model
1410
+
1411
+ attr_reader speed: Float?
1412
+
1413
+ def speed=: (Float) -> Float
1414
+
1415
+ attr_reader volume: Float?
1416
+
1417
+ def volume=: (Float) -> Float
1418
+
1419
+ def initialize: (
1420
+ id: String,
1421
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::provider,
1422
+ ?model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::model,
1423
+ ?speed: Float,
1424
+ ?volume: Float
1425
+ ) -> void
1426
+
1427
+ def to_hash: -> {
1428
+ id: String,
1429
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::provider,
1430
+ model: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::model,
1431
+ speed: Float,
1432
+ volume: Float
1433
+ }
1434
+
1435
+ type provider = :cartesia | :elevenlabs | :gradium
1436
+
1437
+ module Provider
1438
+ extend Revox::Internal::Type::Enum
1439
+
1440
+ CARTESIA: :cartesia
1441
+ ELEVENLABS: :elevenlabs
1442
+ GRADIUM: :gradium
1443
+
1444
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::provider]
1445
+ end
1446
+
1447
+ type model = :"sonic-3" | :"sonic-3.5"
1448
+
1449
+ module Model
1450
+ extend Revox::Internal::Type::Enum
1451
+
1452
+ SONIC_3: :"sonic-3"
1453
+ SONIC_3_5: :"sonic-3.5"
1454
+
1455
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Voice::model]
1456
+ end
1457
+ end
1458
+
1459
+ type zoho =
1460
+ {
1461
+ connection_id: String,
1462
+ field_mapping: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho::FieldMapping],
1463
+ log_call_activity: bool,
1464
+ module_: String,
1465
+ outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho::outcome],
1466
+ template: String?
1467
+ }
1468
+
1469
+ class Zoho < Revox::Internal::Type::BaseModel
1470
+ attr_accessor connection_id: String
1471
+
1472
+ attr_accessor field_mapping: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho::FieldMapping]
1473
+
1474
+ attr_accessor log_call_activity: bool
1475
+
1476
+ attr_accessor module_: String
1477
+
1478
+ attr_accessor outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho::outcome]
1479
+
1480
+ attr_accessor template: String?
1481
+
1482
+ def initialize: (
1483
+ connection_id: String,
1484
+ field_mapping: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho::FieldMapping],
1485
+ log_call_activity: bool,
1486
+ module_: String,
1487
+ outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho::outcome],
1488
+ ?template: String?
1489
+ ) -> void
1490
+
1491
+ def to_hash: -> {
1492
+ connection_id: String,
1493
+ field_mapping: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho::FieldMapping],
1494
+ log_call_activity: bool,
1495
+ module_: String,
1496
+ outcomes: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho::outcome],
1497
+ template: String?
1498
+ }
1499
+
1500
+ type field_mapping = { source: String, zoho_field: String }
1501
+
1502
+ class FieldMapping < Revox::Internal::Type::BaseModel
1503
+ attr_accessor source: String
1504
+
1505
+ attr_accessor zoho_field: String
1506
+
1507
+ def initialize: (source: String, zoho_field: String) -> void
1508
+
1509
+ def to_hash: -> { source: String, zoho_field: String }
1510
+ end
1511
+
1512
+ type outcome =
1513
+ :not_interested
1514
+ | :interested
1515
+ | :completed
1516
+ | :requested_callback_later
1517
+ | :none
1518
+
1519
+ module Outcome
1520
+ extend Revox::Internal::Type::Enum
1521
+
1522
+ NOT_INTERESTED: :not_interested
1523
+ INTERESTED: :interested
1524
+ COMPLETED: :completed
1525
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
1526
+ NONE: :none
1527
+
1528
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::Zoho::outcome]
1529
+ end
1530
+ end
1531
+
1532
+ type created_by =
1533
+ {
1534
+ id: String,
1535
+ email: String,
1536
+ first_name: String?,
1537
+ last_name: String?
1538
+ }
1539
+
1540
+ class CreatedBy < Revox::Internal::Type::BaseModel
1541
+ attr_accessor id: String
1542
+
1543
+ attr_accessor email: String
1544
+
1545
+ attr_accessor first_name: String?
1546
+
1547
+ attr_accessor last_name: String?
1548
+
1549
+ def initialize: (
1550
+ id: String,
1551
+ email: String,
1552
+ first_name: String?,
1553
+ last_name: String?
1554
+ ) -> void
1555
+
1556
+ def to_hash: -> {
1557
+ id: String,
1558
+ email: String,
1559
+ first_name: String?,
1560
+ last_name: String?
1561
+ }
1562
+ end
1563
+
1564
+ type faq_item =
1565
+ {
1566
+ answer: String,
1567
+ question: String,
1568
+ id: String,
1569
+ needs_human_answer: bool,
1570
+ source: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem::source
1571
+ }
1572
+
1573
+ class FaqItem < Revox::Internal::Type::BaseModel
1574
+ attr_accessor answer: String
1575
+
1576
+ attr_accessor question: String
1577
+
1578
+ attr_reader id: String?
1579
+
1580
+ def id=: (String) -> String
1581
+
1582
+ attr_reader needs_human_answer: bool?
1583
+
1584
+ def needs_human_answer=: (bool) -> bool
1585
+
1586
+ attr_reader source: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem::source?
1587
+
1588
+ def source=: (
1589
+ Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem::source
1590
+ ) -> Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem::source
1591
+
1592
+ def initialize: (
1593
+ answer: String,
1594
+ question: String,
1595
+ ?id: String,
1596
+ ?needs_human_answer: bool,
1597
+ ?source: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem::source
1598
+ ) -> void
1599
+
1600
+ def to_hash: -> {
1601
+ answer: String,
1602
+ question: String,
1603
+ id: String,
1604
+ needs_human_answer: bool,
1605
+ source: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem::source
1606
+ }
1607
+
1608
+ type source = :human | :ai
1609
+
1610
+ module Source
1611
+ extend Revox::Internal::Type::Enum
1612
+
1613
+ HUMAN: :human
1614
+ AI: :ai
1615
+
1616
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::Assistant::FaqItem::source]
1617
+ end
1618
+ end
1619
+ end
1620
+
1621
+ type call_attempt =
1622
+ {
1623
+ id: String,
1624
+ answered_at: top,
1625
+ dial_error: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::dial_error?,
1626
+ ended_at: top,
1627
+ handled_by_ai: bool,
1628
+ handled_by_human: bool,
1629
+ handled_by_user: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::HandledByUser?,
1630
+ phone_number: String,
1631
+ recording_url: String?,
1632
+ result: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::result?,
1633
+ started_at: top,
1634
+ status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::status,
1635
+ assistants_used: ::Array[String]?,
1636
+ email_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::EmailLog]?,
1637
+ end_reason: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::end_reason?,
1638
+ ended_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::ended_by?,
1639
+ post_call_transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript]?,
1640
+ sms_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog]?,
1641
+ speech_events: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SpeechEvent]?,
1642
+ structured_output: ::Hash[Symbol, top]?,
1643
+ transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript]?
1644
+ }
1645
+
1646
+ class CallAttempt < Revox::Internal::Type::BaseModel
1647
+ attr_accessor id: String
1648
+
1649
+ attr_accessor answered_at: top
1650
+
1651
+ attr_accessor dial_error: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::dial_error?
1652
+
1653
+ attr_accessor ended_at: top
1654
+
1655
+ attr_accessor handled_by_ai: bool
1656
+
1657
+ attr_accessor handled_by_human: bool
1658
+
1659
+ attr_accessor handled_by_user: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::HandledByUser?
1660
+
1661
+ attr_accessor phone_number: String
1662
+
1663
+ attr_accessor recording_url: String?
1664
+
1665
+ attr_accessor result: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::result?
1666
+
1667
+ attr_accessor started_at: top
1668
+
1669
+ attr_accessor status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::status
1670
+
1671
+ attr_accessor assistants_used: ::Array[String]?
1672
+
1673
+ attr_accessor email_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::EmailLog]?
1674
+
1675
+ attr_accessor end_reason: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::end_reason?
1676
+
1677
+ attr_accessor ended_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::ended_by?
1678
+
1679
+ attr_accessor post_call_transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript]?
1680
+
1681
+ attr_accessor sms_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog]?
1682
+
1683
+ attr_accessor speech_events: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SpeechEvent]?
1684
+
1685
+ attr_accessor structured_output: ::Hash[Symbol, top]?
1686
+
1687
+ attr_accessor transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript]?
1688
+
1689
+ def initialize: (
1690
+ id: String,
1691
+ answered_at: top,
1692
+ dial_error: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::dial_error?,
1693
+ ended_at: top,
1694
+ handled_by_ai: bool,
1695
+ handled_by_human: bool,
1696
+ handled_by_user: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::HandledByUser?,
1697
+ phone_number: String,
1698
+ recording_url: String?,
1699
+ result: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::result?,
1700
+ started_at: top,
1701
+ status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::status,
1702
+ ?assistants_used: ::Array[String]?,
1703
+ ?email_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::EmailLog]?,
1704
+ ?end_reason: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::end_reason?,
1705
+ ?ended_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::ended_by?,
1706
+ ?post_call_transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript]?,
1707
+ ?sms_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog]?,
1708
+ ?speech_events: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SpeechEvent]?,
1709
+ ?structured_output: ::Hash[Symbol, top]?,
1710
+ ?transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript]?
1711
+ ) -> void
1712
+
1713
+ def to_hash: -> {
1714
+ id: String,
1715
+ answered_at: top,
1716
+ dial_error: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::dial_error?,
1717
+ ended_at: top,
1718
+ handled_by_ai: bool,
1719
+ handled_by_human: bool,
1720
+ handled_by_user: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::HandledByUser?,
1721
+ phone_number: String,
1722
+ recording_url: String?,
1723
+ result: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::result?,
1724
+ started_at: top,
1725
+ status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::status,
1726
+ assistants_used: ::Array[String]?,
1727
+ email_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::EmailLog]?,
1728
+ end_reason: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::end_reason?,
1729
+ ended_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::ended_by?,
1730
+ post_call_transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript]?,
1731
+ sms_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog]?,
1732
+ speech_events: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SpeechEvent]?,
1733
+ structured_output: ::Hash[Symbol, top]?,
1734
+ transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript]?
1735
+ }
1736
+
1737
+ type dial_error =
1738
+ :number_non_attributed
1739
+ | :too_many_calls
1740
+ | :busy
1741
+ | :temporarily_unavailable
1742
+ | :no_answer
1743
+ | :no_international_permission
1744
+ | :precondition_failed
1745
+ | :non_classified_error
1746
+
1747
+ module DialError
1748
+ extend Revox::Internal::Type::Enum
1749
+
1750
+ NUMBER_NON_ATTRIBUTED: :number_non_attributed
1751
+ TOO_MANY_CALLS: :too_many_calls
1752
+ BUSY: :busy
1753
+ TEMPORARILY_UNAVAILABLE: :temporarily_unavailable
1754
+ NO_ANSWER: :no_answer
1755
+ NO_INTERNATIONAL_PERMISSION: :no_international_permission
1756
+ PRECONDITION_FAILED: :precondition_failed
1757
+ NON_CLASSIFIED_ERROR: :non_classified_error
1758
+
1759
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::dial_error]
1760
+ end
1761
+
1762
+ type handled_by_user =
1763
+ {
1764
+ id: String,
1765
+ email: String,
1766
+ first_name: String?,
1767
+ last_name: String?
1768
+ }
1769
+
1770
+ class HandledByUser < Revox::Internal::Type::BaseModel
1771
+ attr_accessor id: String
1772
+
1773
+ attr_accessor email: String
1774
+
1775
+ attr_accessor first_name: String?
1776
+
1777
+ attr_accessor last_name: String?
1778
+
1779
+ def initialize: (
1780
+ id: String,
1781
+ email: String,
1782
+ first_name: String?,
1783
+ last_name: String?
1784
+ ) -> void
1785
+
1786
+ def to_hash: -> {
1787
+ id: String,
1788
+ email: String,
1789
+ first_name: String?,
1790
+ last_name: String?
1791
+ }
1792
+ end
1793
+
1794
+ type result =
1795
+ :IVR | :voicemail | :human | :unknown | :"ios-screening-filter"
1796
+
1797
+ module Result
1798
+ extend Revox::Internal::Type::Enum
1799
+
1800
+ IVR: :IVR
1801
+ VOICEMAIL: :voicemail
1802
+ HUMAN: :human
1803
+ UNKNOWN: :unknown
1804
+ IOS_SCREENING_FILTER: :"ios-screening-filter"
1805
+
1806
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::result]
1807
+ end
1808
+
1809
+ type status = :queued | :ringing | :ongoing | :completed | :error
1810
+
1811
+ module Status
1812
+ extend Revox::Internal::Type::Enum
1813
+
1814
+ QUEUED: :queued
1815
+ RINGING: :ringing
1816
+ ONGOING: :ongoing
1817
+ COMPLETED: :completed
1818
+ ERROR: :error
1819
+
1820
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::status]
1821
+ end
1822
+
1823
+ type email_log =
1824
+ {
1825
+ id: String,
1826
+ created_at: top,
1827
+ from_address: String,
1828
+ resend_message_id: String?,
1829
+ subject: String,
1830
+ to_emails: ::Array[String]
1831
+ }
1832
+
1833
+ class EmailLog < Revox::Internal::Type::BaseModel
1834
+ attr_accessor id: String
1835
+
1836
+ attr_accessor created_at: top
1837
+
1838
+ attr_accessor from_address: String
1839
+
1840
+ attr_accessor resend_message_id: String?
1841
+
1842
+ attr_accessor subject: String
1843
+
1844
+ attr_accessor to_emails: ::Array[String]
1845
+
1846
+ def initialize: (
1847
+ id: String,
1848
+ created_at: top,
1849
+ from_address: String,
1850
+ resend_message_id: String?,
1851
+ subject: String,
1852
+ to_emails: ::Array[String]
1853
+ ) -> void
1854
+
1855
+ def to_hash: -> {
1856
+ id: String,
1857
+ created_at: top,
1858
+ from_address: String,
1859
+ resend_message_id: String?,
1860
+ subject: String,
1861
+ to_emails: ::Array[String]
1862
+ }
1863
+ end
1864
+
1865
+ type end_reason =
1866
+ :client_initiated
1867
+ | :connection_timeout
1868
+ | :human_takeover
1869
+ | :ivr_no_navigate
1870
+ | :max_duration
1871
+ | :participant_removed
1872
+ | :tool_end_call
1873
+ | :transfer
1874
+ | :user_inactive
1875
+ | :user_rejected
1876
+ | :user_unavailable
1877
+ | :voicemail
1878
+ | :speed_dial_abandoned
1879
+ | :speed_dial_operator_missed
1880
+ | :speed_dial_timeout
1881
+ | :speed_dial_hangup
1882
+
1883
+ module EndReason
1884
+ extend Revox::Internal::Type::Enum
1885
+
1886
+ CLIENT_INITIATED: :client_initiated
1887
+ CONNECTION_TIMEOUT: :connection_timeout
1888
+ HUMAN_TAKEOVER: :human_takeover
1889
+ IVR_NO_NAVIGATE: :ivr_no_navigate
1890
+ MAX_DURATION: :max_duration
1891
+ PARTICIPANT_REMOVED: :participant_removed
1892
+ TOOL_END_CALL: :tool_end_call
1893
+ TRANSFER: :transfer
1894
+ USER_INACTIVE: :user_inactive
1895
+ USER_REJECTED: :user_rejected
1896
+ USER_UNAVAILABLE: :user_unavailable
1897
+ VOICEMAIL: :voicemail
1898
+ SPEED_DIAL_ABANDONED: :speed_dial_abandoned
1899
+ SPEED_DIAL_OPERATOR_MISSED: :speed_dial_operator_missed
1900
+ SPEED_DIAL_TIMEOUT: :speed_dial_timeout
1901
+ SPEED_DIAL_HANGUP: :speed_dial_hangup
1902
+
1903
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::end_reason]
1904
+ end
1905
+
1906
+ type ended_by = :agent | :user | :system
1907
+
1908
+ module EndedBy
1909
+ extend Revox::Internal::Type::Enum
1910
+
1911
+ AGENT: :agent
1912
+ USER: :user
1913
+ SYSTEM: :system
1914
+
1915
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::ended_by]
1916
+ end
1917
+
1918
+ type post_call_transcript =
1919
+ {
1920
+ content: String,
1921
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::role,
1922
+ tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::tool_arguments,
1923
+ tool_is_error: bool,
1924
+ tool_name: String,
1925
+ tool_output: String
1926
+ }
1927
+
1928
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
1929
+ attr_accessor content: String
1930
+
1931
+ attr_accessor role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::role
1932
+
1933
+ attr_reader tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::tool_arguments?
1934
+
1935
+ def tool_arguments=: (
1936
+ Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::tool_arguments
1937
+ ) -> Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::tool_arguments
1938
+
1939
+ attr_reader tool_is_error: bool?
1940
+
1941
+ def tool_is_error=: (bool) -> bool
1942
+
1943
+ attr_reader tool_name: String?
1944
+
1945
+ def tool_name=: (String) -> String
1946
+
1947
+ attr_reader tool_output: String?
1948
+
1949
+ def tool_output=: (String) -> String
1950
+
1951
+ def initialize: (
1952
+ content: String,
1953
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::role,
1954
+ ?tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::tool_arguments,
1955
+ ?tool_is_error: bool,
1956
+ ?tool_name: String,
1957
+ ?tool_output: String
1958
+ ) -> void
1959
+
1960
+ def to_hash: -> {
1961
+ content: String,
1962
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::role,
1963
+ tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::tool_arguments,
1964
+ tool_is_error: bool,
1965
+ tool_name: String,
1966
+ tool_output: String
1967
+ }
1968
+
1969
+ type role = :user | :assistant | :human_agent | :tool
1970
+
1971
+ module Role
1972
+ extend Revox::Internal::Type::Enum
1973
+
1974
+ USER: :user
1975
+ ASSISTANT: :assistant
1976
+ HUMAN_AGENT: :human_agent
1977
+ TOOL: :tool
1978
+
1979
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::role]
1980
+ end
1981
+
1982
+ type tool_arguments = ::Hash[Symbol, top] | String
1983
+
1984
+ module ToolArguments
1985
+ extend Revox::Internal::Type::Union
1986
+
1987
+ def self?.variants: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::PostCallTranscript::tool_arguments]
1988
+
1989
+ UnionMember0Map: Revox::Internal::Type::Converter
1990
+ end
1991
+ end
1992
+
1993
+ type sms_log =
1994
+ {
1995
+ id: String,
1996
+ created_at: top,
1997
+ message_body: String,
1998
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog::provider,
1999
+ provider_message_id: String?,
2000
+ to_phone_number: String,
2001
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog::type_
2002
+ }
2003
+
2004
+ class SMSLog < Revox::Internal::Type::BaseModel
2005
+ attr_accessor id: String
2006
+
2007
+ attr_accessor created_at: top
2008
+
2009
+ attr_accessor message_body: String
2010
+
2011
+ attr_accessor provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog::provider
2012
+
2013
+ attr_accessor provider_message_id: String?
2014
+
2015
+ attr_accessor to_phone_number: String
2016
+
2017
+ attr_accessor type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog::type_
2018
+
2019
+ def initialize: (
2020
+ id: String,
2021
+ created_at: top,
2022
+ message_body: String,
2023
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog::provider,
2024
+ provider_message_id: String?,
2025
+ to_phone_number: String,
2026
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog::type_
2027
+ ) -> void
2028
+
2029
+ def to_hash: -> {
2030
+ id: String,
2031
+ created_at: top,
2032
+ message_body: String,
2033
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog::provider,
2034
+ provider_message_id: String?,
2035
+ to_phone_number: String,
2036
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog::type_
2037
+ }
2038
+
2039
+ type provider = :twilio | :vonage
2040
+
2041
+ module Provider
2042
+ extend Revox::Internal::Type::Enum
2043
+
2044
+ TWILIO: :twilio
2045
+ VONAGE: :vonage
2046
+
2047
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog::provider]
2048
+ end
2049
+
2050
+ type type_ = :in_call | :voicemail | :after_call
2051
+
2052
+ module Type
2053
+ extend Revox::Internal::Type::Enum
2054
+
2055
+ IN_CALL: :in_call
2056
+ VOICEMAIL: :voicemail
2057
+ AFTER_CALL: :after_call
2058
+
2059
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SMSLog::type_]
2060
+ end
2061
+ end
2062
+
2063
+ type speech_event =
2064
+ {
2065
+ id: String,
2066
+ is_real_turn: bool,
2067
+ llm_system_prompt: String?,
2068
+ llm_ttft_ms: Float?,
2069
+ llm_winner_model: String?,
2070
+ speaker: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SpeechEvent::speaker,
2071
+ started_speaking_at_ms: Float,
2072
+ stopped_speaking_at_ms: Float?,
2073
+ stt_transcription_delay_ms: Float?,
2074
+ transcript: String?,
2075
+ tts_ttfb_ms: Float?,
2076
+ was_cut: bool?
2077
+ }
2078
+
2079
+ class SpeechEvent < Revox::Internal::Type::BaseModel
2080
+ attr_accessor id: String
2081
+
2082
+ attr_accessor is_real_turn: bool
2083
+
2084
+ attr_accessor llm_system_prompt: String?
2085
+
2086
+ attr_accessor llm_ttft_ms: Float?
2087
+
2088
+ attr_accessor llm_winner_model: String?
2089
+
2090
+ attr_accessor speaker: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SpeechEvent::speaker
2091
+
2092
+ attr_accessor started_speaking_at_ms: Float
2093
+
2094
+ attr_accessor stopped_speaking_at_ms: Float?
2095
+
2096
+ attr_accessor stt_transcription_delay_ms: Float?
2097
+
2098
+ attr_accessor transcript: String?
2099
+
2100
+ attr_accessor tts_ttfb_ms: Float?
2101
+
2102
+ attr_accessor was_cut: bool?
2103
+
2104
+ def initialize: (
2105
+ id: String,
2106
+ is_real_turn: bool,
2107
+ llm_system_prompt: String?,
2108
+ llm_ttft_ms: Float?,
2109
+ llm_winner_model: String?,
2110
+ speaker: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SpeechEvent::speaker,
2111
+ started_speaking_at_ms: Float,
2112
+ stopped_speaking_at_ms: Float?,
2113
+ stt_transcription_delay_ms: Float?,
2114
+ transcript: String?,
2115
+ tts_ttfb_ms: Float?,
2116
+ was_cut: bool?
2117
+ ) -> void
2118
+
2119
+ def to_hash: -> {
2120
+ id: String,
2121
+ is_real_turn: bool,
2122
+ llm_system_prompt: String?,
2123
+ llm_ttft_ms: Float?,
2124
+ llm_winner_model: String?,
2125
+ speaker: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SpeechEvent::speaker,
2126
+ started_speaking_at_ms: Float,
2127
+ stopped_speaking_at_ms: Float?,
2128
+ stt_transcription_delay_ms: Float?,
2129
+ transcript: String?,
2130
+ tts_ttfb_ms: Float?,
2131
+ was_cut: bool?
2132
+ }
2133
+
2134
+ type speaker = :user | :agent
2135
+
2136
+ module Speaker
2137
+ extend Revox::Internal::Type::Enum
2138
+
2139
+ USER: :user
2140
+ AGENT: :agent
2141
+
2142
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::SpeechEvent::speaker]
2143
+ end
2144
+ end
2145
+
2146
+ type transcript =
2147
+ {
2148
+ content: String,
2149
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::role,
2150
+ tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::tool_arguments,
2151
+ tool_is_error: bool,
2152
+ tool_name: String,
2153
+ tool_output: String
2154
+ }
2155
+
2156
+ class Transcript < Revox::Internal::Type::BaseModel
2157
+ attr_accessor content: String
2158
+
2159
+ attr_accessor role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::role
2160
+
2161
+ attr_reader tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::tool_arguments?
2162
+
2163
+ def tool_arguments=: (
2164
+ Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::tool_arguments
2165
+ ) -> Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::tool_arguments
2166
+
2167
+ attr_reader tool_is_error: bool?
2168
+
2169
+ def tool_is_error=: (bool) -> bool
2170
+
2171
+ attr_reader tool_name: String?
2172
+
2173
+ def tool_name=: (String) -> String
2174
+
2175
+ attr_reader tool_output: String?
2176
+
2177
+ def tool_output=: (String) -> String
2178
+
2179
+ def initialize: (
2180
+ content: String,
2181
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::role,
2182
+ ?tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::tool_arguments,
2183
+ ?tool_is_error: bool,
2184
+ ?tool_name: String,
2185
+ ?tool_output: String
2186
+ ) -> void
2187
+
2188
+ def to_hash: -> {
2189
+ content: String,
2190
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::role,
2191
+ tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::tool_arguments,
2192
+ tool_is_error: bool,
2193
+ tool_name: String,
2194
+ tool_output: String
2195
+ }
2196
+
2197
+ type role = :user | :assistant | :human_agent | :tool
2198
+
2199
+ module Role
2200
+ extend Revox::Internal::Type::Enum
2201
+
2202
+ USER: :user
2203
+ ASSISTANT: :assistant
2204
+ HUMAN_AGENT: :human_agent
2205
+ TOOL: :tool
2206
+
2207
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::role]
2208
+ end
2209
+
2210
+ type tool_arguments = ::Hash[Symbol, top] | String
2211
+
2212
+ module ToolArguments
2213
+ extend Revox::Internal::Type::Union
2214
+
2215
+ def self?.variants: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallAttempt::Transcript::tool_arguments]
2216
+
2217
+ UnionMember0Map: Revox::Internal::Type::Converter
2218
+ end
2219
+ end
2220
+ end
2221
+
2222
+ type call_retry_config =
2223
+ {
2224
+ allowed_days: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig::allowed_day],
2225
+ call_twice_in_a_row: bool,
2226
+ calling_windows: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig::CallingWindow],
2227
+ max_retry_attempts: Integer,
2228
+ timezone: String?
2229
+ }
2230
+
2231
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
2232
+ attr_accessor allowed_days: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig::allowed_day]
2233
+
2234
+ attr_accessor call_twice_in_a_row: bool
2235
+
2236
+ attr_accessor calling_windows: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig::CallingWindow]
2237
+
2238
+ attr_accessor max_retry_attempts: Integer
2239
+
2240
+ attr_accessor timezone: String?
2241
+
2242
+ def initialize: (
2243
+ allowed_days: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig::allowed_day],
2244
+ call_twice_in_a_row: bool,
2245
+ calling_windows: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig::CallingWindow],
2246
+ max_retry_attempts: Integer,
2247
+ ?timezone: String?
2248
+ ) -> void
2249
+
2250
+ def to_hash: -> {
2251
+ allowed_days: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig::allowed_day],
2252
+ call_twice_in_a_row: bool,
2253
+ calling_windows: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig::CallingWindow],
2254
+ max_retry_attempts: Integer,
2255
+ timezone: String?
2256
+ }
2257
+
2258
+ type allowed_day =
2259
+ :monday
2260
+ | :tuesday
2261
+ | :wednesday
2262
+ | :thursday
2263
+ | :friday
2264
+ | :saturday
2265
+ | :sunday
2266
+
2267
+ module AllowedDay
2268
+ extend Revox::Internal::Type::Enum
2269
+
2270
+ MONDAY: :monday
2271
+ TUESDAY: :tuesday
2272
+ WEDNESDAY: :wednesday
2273
+ THURSDAY: :thursday
2274
+ FRIDAY: :friday
2275
+ SATURDAY: :saturday
2276
+ SUNDAY: :sunday
2277
+
2278
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::CallRetryConfig::allowed_day]
2279
+ end
2280
+
2281
+ type calling_window =
2282
+ {
2283
+ calling_window_end_time: String,
2284
+ calling_window_start_time: String,
2285
+ retry_delay_seconds: Integer
2286
+ }
2287
+
2288
+ class CallingWindow < Revox::Internal::Type::BaseModel
2289
+ attr_accessor calling_window_end_time: String
2290
+
2291
+ attr_accessor calling_window_start_time: String
2292
+
2293
+ attr_accessor retry_delay_seconds: Integer
2294
+
2295
+ def initialize: (
2296
+ calling_window_end_time: String,
2297
+ calling_window_start_time: String,
2298
+ retry_delay_seconds: Integer
2299
+ ) -> void
2300
+
2301
+ def to_hash: -> {
2302
+ calling_window_end_time: String,
2303
+ calling_window_start_time: String,
2304
+ retry_delay_seconds: Integer
2305
+ }
2306
+ end
2307
+ end
2308
+
2309
+ type campaign = { id: String, name: String }
2310
+
2311
+ class Campaign < Revox::Internal::Type::BaseModel
2312
+ attr_accessor id: String
2313
+
2314
+ attr_accessor name: String
2315
+
2316
+ def initialize: (id: String, name: String) -> void
2317
+
2318
+ def to_hash: -> { id: String, name: String }
2319
+ end
2320
+
2321
+ type contact =
2322
+ {
2323
+ company: String?,
2324
+ email: String?,
2325
+ first_name: String?,
2326
+ job_title: String?,
2327
+ last_name: String?
2328
+ }
2329
+
2330
+ class Contact < Revox::Internal::Type::BaseModel
2331
+ attr_accessor company: String?
2332
+
2333
+ attr_accessor email: String?
2334
+
2335
+ attr_accessor first_name: String?
2336
+
2337
+ attr_accessor job_title: String?
2338
+
2339
+ attr_accessor last_name: String?
2340
+
2341
+ def initialize: (
2342
+ company: String?,
2343
+ email: String?,
2344
+ first_name: String?,
2345
+ job_title: String?,
2346
+ last_name: String?
2347
+ ) -> void
2348
+
2349
+ def to_hash: -> {
2350
+ company: String?,
2351
+ email: String?,
2352
+ first_name: String?,
2353
+ job_title: String?,
2354
+ last_name: String?
2355
+ }
2356
+ end
2357
+
2358
+ type direction = :inbound | :outbound
2359
+
2360
+ module Direction
2361
+ extend Revox::Internal::Type::Enum
2362
+
2363
+ INBOUND: :inbound
2364
+ OUTBOUND: :outbound
2365
+
2366
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::direction]
2367
+ end
2368
+
2369
+ type last_call_attempt =
2370
+ {
2371
+ id: String,
2372
+ answered_at: top,
2373
+ dial_error: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::dial_error?,
2374
+ ended_at: top,
2375
+ handled_by_ai: bool,
2376
+ handled_by_human: bool,
2377
+ handled_by_user: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::HandledByUser?,
2378
+ phone_number: String,
2379
+ recording_url: String?,
2380
+ result: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::result?,
2381
+ started_at: top,
2382
+ status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::status,
2383
+ assistants_used: ::Array[String]?,
2384
+ email_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::EmailLog]?,
2385
+ end_reason: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::end_reason?,
2386
+ ended_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::ended_by?,
2387
+ post_call_transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript]?,
2388
+ sms_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog]?,
2389
+ speech_events: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SpeechEvent]?,
2390
+ structured_output: ::Hash[Symbol, top]?,
2391
+ transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript]?
2392
+ }
2393
+
2394
+ class LastCallAttempt < Revox::Internal::Type::BaseModel
2395
+ attr_accessor id: String
2396
+
2397
+ attr_accessor answered_at: top
2398
+
2399
+ attr_accessor dial_error: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::dial_error?
2400
+
2401
+ attr_accessor ended_at: top
2402
+
2403
+ attr_accessor handled_by_ai: bool
2404
+
2405
+ attr_accessor handled_by_human: bool
2406
+
2407
+ attr_accessor handled_by_user: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::HandledByUser?
2408
+
2409
+ attr_accessor phone_number: String
2410
+
2411
+ attr_accessor recording_url: String?
2412
+
2413
+ attr_accessor result: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::result?
2414
+
2415
+ attr_accessor started_at: top
2416
+
2417
+ attr_accessor status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::status
2418
+
2419
+ attr_accessor assistants_used: ::Array[String]?
2420
+
2421
+ attr_accessor email_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::EmailLog]?
2422
+
2423
+ attr_accessor end_reason: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::end_reason?
2424
+
2425
+ attr_accessor ended_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::ended_by?
2426
+
2427
+ attr_accessor post_call_transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript]?
2428
+
2429
+ attr_accessor sms_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog]?
2430
+
2431
+ attr_accessor speech_events: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SpeechEvent]?
2432
+
2433
+ attr_accessor structured_output: ::Hash[Symbol, top]?
2434
+
2435
+ attr_accessor transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript]?
2436
+
2437
+ def initialize: (
2438
+ id: String,
2439
+ answered_at: top,
2440
+ dial_error: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::dial_error?,
2441
+ ended_at: top,
2442
+ handled_by_ai: bool,
2443
+ handled_by_human: bool,
2444
+ handled_by_user: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::HandledByUser?,
2445
+ phone_number: String,
2446
+ recording_url: String?,
2447
+ result: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::result?,
2448
+ started_at: top,
2449
+ status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::status,
2450
+ ?assistants_used: ::Array[String]?,
2451
+ ?email_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::EmailLog]?,
2452
+ ?end_reason: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::end_reason?,
2453
+ ?ended_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::ended_by?,
2454
+ ?post_call_transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript]?,
2455
+ ?sms_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog]?,
2456
+ ?speech_events: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SpeechEvent]?,
2457
+ ?structured_output: ::Hash[Symbol, top]?,
2458
+ ?transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript]?
2459
+ ) -> void
2460
+
2461
+ def to_hash: -> {
2462
+ id: String,
2463
+ answered_at: top,
2464
+ dial_error: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::dial_error?,
2465
+ ended_at: top,
2466
+ handled_by_ai: bool,
2467
+ handled_by_human: bool,
2468
+ handled_by_user: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::HandledByUser?,
2469
+ phone_number: String,
2470
+ recording_url: String?,
2471
+ result: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::result?,
2472
+ started_at: top,
2473
+ status: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::status,
2474
+ assistants_used: ::Array[String]?,
2475
+ email_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::EmailLog]?,
2476
+ end_reason: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::end_reason?,
2477
+ ended_by: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::ended_by?,
2478
+ post_call_transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript]?,
2479
+ sms_log: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog]?,
2480
+ speech_events: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SpeechEvent]?,
2481
+ structured_output: ::Hash[Symbol, top]?,
2482
+ transcript: ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript]?
2483
+ }
2484
+
2485
+ type dial_error =
2486
+ :number_non_attributed
2487
+ | :too_many_calls
2488
+ | :busy
2489
+ | :temporarily_unavailable
2490
+ | :no_answer
2491
+ | :no_international_permission
2492
+ | :precondition_failed
2493
+ | :non_classified_error
2494
+
2495
+ module DialError
2496
+ extend Revox::Internal::Type::Enum
2497
+
2498
+ NUMBER_NON_ATTRIBUTED: :number_non_attributed
2499
+ TOO_MANY_CALLS: :too_many_calls
2500
+ BUSY: :busy
2501
+ TEMPORARILY_UNAVAILABLE: :temporarily_unavailable
2502
+ NO_ANSWER: :no_answer
2503
+ NO_INTERNATIONAL_PERMISSION: :no_international_permission
2504
+ PRECONDITION_FAILED: :precondition_failed
2505
+ NON_CLASSIFIED_ERROR: :non_classified_error
2506
+
2507
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::dial_error]
2508
+ end
2509
+
2510
+ type handled_by_user =
2511
+ {
2512
+ id: String,
2513
+ email: String,
2514
+ first_name: String?,
2515
+ last_name: String?
2516
+ }
2517
+
2518
+ class HandledByUser < Revox::Internal::Type::BaseModel
2519
+ attr_accessor id: String
2520
+
2521
+ attr_accessor email: String
2522
+
2523
+ attr_accessor first_name: String?
2524
+
2525
+ attr_accessor last_name: String?
2526
+
2527
+ def initialize: (
2528
+ id: String,
2529
+ email: String,
2530
+ first_name: String?,
2531
+ last_name: String?
2532
+ ) -> void
2533
+
2534
+ def to_hash: -> {
2535
+ id: String,
2536
+ email: String,
2537
+ first_name: String?,
2538
+ last_name: String?
2539
+ }
2540
+ end
2541
+
2542
+ type result =
2543
+ :IVR | :voicemail | :human | :unknown | :"ios-screening-filter"
2544
+
2545
+ module Result
2546
+ extend Revox::Internal::Type::Enum
2547
+
2548
+ IVR: :IVR
2549
+ VOICEMAIL: :voicemail
2550
+ HUMAN: :human
2551
+ UNKNOWN: :unknown
2552
+ IOS_SCREENING_FILTER: :"ios-screening-filter"
2553
+
2554
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::result]
2555
+ end
2556
+
2557
+ type status = :queued | :ringing | :ongoing | :completed | :error
2558
+
2559
+ module Status
2560
+ extend Revox::Internal::Type::Enum
2561
+
2562
+ QUEUED: :queued
2563
+ RINGING: :ringing
2564
+ ONGOING: :ongoing
2565
+ COMPLETED: :completed
2566
+ ERROR: :error
2567
+
2568
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::status]
2569
+ end
2570
+
2571
+ type email_log =
2572
+ {
2573
+ id: String,
2574
+ created_at: top,
2575
+ from_address: String,
2576
+ resend_message_id: String?,
2577
+ subject: String,
2578
+ to_emails: ::Array[String]
2579
+ }
2580
+
2581
+ class EmailLog < Revox::Internal::Type::BaseModel
2582
+ attr_accessor id: String
2583
+
2584
+ attr_accessor created_at: top
2585
+
2586
+ attr_accessor from_address: String
2587
+
2588
+ attr_accessor resend_message_id: String?
2589
+
2590
+ attr_accessor subject: String
2591
+
2592
+ attr_accessor to_emails: ::Array[String]
2593
+
2594
+ def initialize: (
2595
+ id: String,
2596
+ created_at: top,
2597
+ from_address: String,
2598
+ resend_message_id: String?,
2599
+ subject: String,
2600
+ to_emails: ::Array[String]
2601
+ ) -> void
2602
+
2603
+ def to_hash: -> {
2604
+ id: String,
2605
+ created_at: top,
2606
+ from_address: String,
2607
+ resend_message_id: String?,
2608
+ subject: String,
2609
+ to_emails: ::Array[String]
2610
+ }
2611
+ end
2612
+
2613
+ type end_reason =
2614
+ :client_initiated
2615
+ | :connection_timeout
2616
+ | :human_takeover
2617
+ | :ivr_no_navigate
2618
+ | :max_duration
2619
+ | :participant_removed
2620
+ | :tool_end_call
2621
+ | :transfer
2622
+ | :user_inactive
2623
+ | :user_rejected
2624
+ | :user_unavailable
2625
+ | :voicemail
2626
+ | :speed_dial_abandoned
2627
+ | :speed_dial_operator_missed
2628
+ | :speed_dial_timeout
2629
+ | :speed_dial_hangup
2630
+
2631
+ module EndReason
2632
+ extend Revox::Internal::Type::Enum
2633
+
2634
+ CLIENT_INITIATED: :client_initiated
2635
+ CONNECTION_TIMEOUT: :connection_timeout
2636
+ HUMAN_TAKEOVER: :human_takeover
2637
+ IVR_NO_NAVIGATE: :ivr_no_navigate
2638
+ MAX_DURATION: :max_duration
2639
+ PARTICIPANT_REMOVED: :participant_removed
2640
+ TOOL_END_CALL: :tool_end_call
2641
+ TRANSFER: :transfer
2642
+ USER_INACTIVE: :user_inactive
2643
+ USER_REJECTED: :user_rejected
2644
+ USER_UNAVAILABLE: :user_unavailable
2645
+ VOICEMAIL: :voicemail
2646
+ SPEED_DIAL_ABANDONED: :speed_dial_abandoned
2647
+ SPEED_DIAL_OPERATOR_MISSED: :speed_dial_operator_missed
2648
+ SPEED_DIAL_TIMEOUT: :speed_dial_timeout
2649
+ SPEED_DIAL_HANGUP: :speed_dial_hangup
2650
+
2651
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::end_reason]
2652
+ end
2653
+
2654
+ type ended_by = :agent | :user | :system
2655
+
2656
+ module EndedBy
2657
+ extend Revox::Internal::Type::Enum
2658
+
2659
+ AGENT: :agent
2660
+ USER: :user
2661
+ SYSTEM: :system
2662
+
2663
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::ended_by]
2664
+ end
2665
+
2666
+ type post_call_transcript =
2667
+ {
2668
+ content: String,
2669
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::role,
2670
+ tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::tool_arguments,
2671
+ tool_is_error: bool,
2672
+ tool_name: String,
2673
+ tool_output: String
2674
+ }
2675
+
2676
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2677
+ attr_accessor content: String
2678
+
2679
+ attr_accessor role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::role
2680
+
2681
+ attr_reader tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::tool_arguments?
2682
+
2683
+ def tool_arguments=: (
2684
+ Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::tool_arguments
2685
+ ) -> Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::tool_arguments
2686
+
2687
+ attr_reader tool_is_error: bool?
2688
+
2689
+ def tool_is_error=: (bool) -> bool
2690
+
2691
+ attr_reader tool_name: String?
2692
+
2693
+ def tool_name=: (String) -> String
2694
+
2695
+ attr_reader tool_output: String?
2696
+
2697
+ def tool_output=: (String) -> String
2698
+
2699
+ def initialize: (
2700
+ content: String,
2701
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::role,
2702
+ ?tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::tool_arguments,
2703
+ ?tool_is_error: bool,
2704
+ ?tool_name: String,
2705
+ ?tool_output: String
2706
+ ) -> void
2707
+
2708
+ def to_hash: -> {
2709
+ content: String,
2710
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::role,
2711
+ tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::tool_arguments,
2712
+ tool_is_error: bool,
2713
+ tool_name: String,
2714
+ tool_output: String
2715
+ }
2716
+
2717
+ type role = :user | :assistant | :human_agent | :tool
2718
+
2719
+ module Role
2720
+ extend Revox::Internal::Type::Enum
2721
+
2722
+ USER: :user
2723
+ ASSISTANT: :assistant
2724
+ HUMAN_AGENT: :human_agent
2725
+ TOOL: :tool
2726
+
2727
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::role]
2728
+ end
2729
+
2730
+ type tool_arguments = ::Hash[Symbol, top] | String
2731
+
2732
+ module ToolArguments
2733
+ extend Revox::Internal::Type::Union
2734
+
2735
+ def self?.variants: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::PostCallTranscript::tool_arguments]
2736
+
2737
+ UnionMember0Map: Revox::Internal::Type::Converter
2738
+ end
2739
+ end
2740
+
2741
+ type sms_log =
2742
+ {
2743
+ id: String,
2744
+ created_at: top,
2745
+ message_body: String,
2746
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog::provider,
2747
+ provider_message_id: String?,
2748
+ to_phone_number: String,
2749
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog::type_
2750
+ }
2751
+
2752
+ class SMSLog < Revox::Internal::Type::BaseModel
2753
+ attr_accessor id: String
2754
+
2755
+ attr_accessor created_at: top
2756
+
2757
+ attr_accessor message_body: String
2758
+
2759
+ attr_accessor provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog::provider
2760
+
2761
+ attr_accessor provider_message_id: String?
2762
+
2763
+ attr_accessor to_phone_number: String
2764
+
2765
+ attr_accessor type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog::type_
2766
+
2767
+ def initialize: (
2768
+ id: String,
2769
+ created_at: top,
2770
+ message_body: String,
2771
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog::provider,
2772
+ provider_message_id: String?,
2773
+ to_phone_number: String,
2774
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog::type_
2775
+ ) -> void
2776
+
2777
+ def to_hash: -> {
2778
+ id: String,
2779
+ created_at: top,
2780
+ message_body: String,
2781
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog::provider,
2782
+ provider_message_id: String?,
2783
+ to_phone_number: String,
2784
+ type: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog::type_
2785
+ }
2786
+
2787
+ type provider = :twilio | :vonage
2788
+
2789
+ module Provider
2790
+ extend Revox::Internal::Type::Enum
2791
+
2792
+ TWILIO: :twilio
2793
+ VONAGE: :vonage
2794
+
2795
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog::provider]
2796
+ end
2797
+
2798
+ type type_ = :in_call | :voicemail | :after_call
2799
+
2800
+ module Type
2801
+ extend Revox::Internal::Type::Enum
2802
+
2803
+ IN_CALL: :in_call
2804
+ VOICEMAIL: :voicemail
2805
+ AFTER_CALL: :after_call
2806
+
2807
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SMSLog::type_]
2808
+ end
2809
+ end
2810
+
2811
+ type speech_event =
2812
+ {
2813
+ id: String,
2814
+ is_real_turn: bool,
2815
+ llm_system_prompt: String?,
2816
+ llm_ttft_ms: Float?,
2817
+ llm_winner_model: String?,
2818
+ speaker: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SpeechEvent::speaker,
2819
+ started_speaking_at_ms: Float,
2820
+ stopped_speaking_at_ms: Float?,
2821
+ stt_transcription_delay_ms: Float?,
2822
+ transcript: String?,
2823
+ tts_ttfb_ms: Float?,
2824
+ was_cut: bool?
2825
+ }
2826
+
2827
+ class SpeechEvent < Revox::Internal::Type::BaseModel
2828
+ attr_accessor id: String
2829
+
2830
+ attr_accessor is_real_turn: bool
2831
+
2832
+ attr_accessor llm_system_prompt: String?
2833
+
2834
+ attr_accessor llm_ttft_ms: Float?
2835
+
2836
+ attr_accessor llm_winner_model: String?
2837
+
2838
+ attr_accessor speaker: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SpeechEvent::speaker
2839
+
2840
+ attr_accessor started_speaking_at_ms: Float
2841
+
2842
+ attr_accessor stopped_speaking_at_ms: Float?
2843
+
2844
+ attr_accessor stt_transcription_delay_ms: Float?
2845
+
2846
+ attr_accessor transcript: String?
2847
+
2848
+ attr_accessor tts_ttfb_ms: Float?
2849
+
2850
+ attr_accessor was_cut: bool?
2851
+
2852
+ def initialize: (
2853
+ id: String,
2854
+ is_real_turn: bool,
2855
+ llm_system_prompt: String?,
2856
+ llm_ttft_ms: Float?,
2857
+ llm_winner_model: String?,
2858
+ speaker: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SpeechEvent::speaker,
2859
+ started_speaking_at_ms: Float,
2860
+ stopped_speaking_at_ms: Float?,
2861
+ stt_transcription_delay_ms: Float?,
2862
+ transcript: String?,
2863
+ tts_ttfb_ms: Float?,
2864
+ was_cut: bool?
2865
+ ) -> void
2866
+
2867
+ def to_hash: -> {
2868
+ id: String,
2869
+ is_real_turn: bool,
2870
+ llm_system_prompt: String?,
2871
+ llm_ttft_ms: Float?,
2872
+ llm_winner_model: String?,
2873
+ speaker: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SpeechEvent::speaker,
2874
+ started_speaking_at_ms: Float,
2875
+ stopped_speaking_at_ms: Float?,
2876
+ stt_transcription_delay_ms: Float?,
2877
+ transcript: String?,
2878
+ tts_ttfb_ms: Float?,
2879
+ was_cut: bool?
2880
+ }
2881
+
2882
+ type speaker = :user | :agent
2883
+
2884
+ module Speaker
2885
+ extend Revox::Internal::Type::Enum
2886
+
2887
+ USER: :user
2888
+ AGENT: :agent
2889
+
2890
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::SpeechEvent::speaker]
2891
+ end
2892
+ end
2893
+
2894
+ type transcript =
2895
+ {
2896
+ content: String,
2897
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::role,
2898
+ tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::tool_arguments,
2899
+ tool_is_error: bool,
2900
+ tool_name: String,
2901
+ tool_output: String
2902
+ }
2903
+
2904
+ class Transcript < Revox::Internal::Type::BaseModel
2905
+ attr_accessor content: String
2906
+
2907
+ attr_accessor role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::role
2908
+
2909
+ attr_reader tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::tool_arguments?
2910
+
2911
+ def tool_arguments=: (
2912
+ Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::tool_arguments
2913
+ ) -> Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::tool_arguments
2914
+
2915
+ attr_reader tool_is_error: bool?
2916
+
2917
+ def tool_is_error=: (bool) -> bool
2918
+
2919
+ attr_reader tool_name: String?
2920
+
2921
+ def tool_name=: (String) -> String
2922
+
2923
+ attr_reader tool_output: String?
2924
+
2925
+ def tool_output=: (String) -> String
2926
+
2927
+ def initialize: (
2928
+ content: String,
2929
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::role,
2930
+ ?tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::tool_arguments,
2931
+ ?tool_is_error: bool,
2932
+ ?tool_name: String,
2933
+ ?tool_output: String
2934
+ ) -> void
2935
+
2936
+ def to_hash: -> {
2937
+ content: String,
2938
+ role: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::role,
2939
+ tool_arguments: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::tool_arguments,
2940
+ tool_is_error: bool,
2941
+ tool_name: String,
2942
+ tool_output: String
2943
+ }
2944
+
2945
+ type role = :user | :assistant | :human_agent | :tool
2946
+
2947
+ module Role
2948
+ extend Revox::Internal::Type::Enum
2949
+
2950
+ USER: :user
2951
+ ASSISTANT: :assistant
2952
+ HUMAN_AGENT: :human_agent
2953
+ TOOL: :tool
2954
+
2955
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::role]
2956
+ end
2957
+
2958
+ type tool_arguments = ::Hash[Symbol, top] | String
2959
+
2960
+ module ToolArguments
2961
+ extend Revox::Internal::Type::Union
2962
+
2963
+ def self?.variants: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LastCallAttempt::Transcript::tool_arguments]
2964
+
2965
+ UnionMember0Map: Revox::Internal::Type::Converter
2966
+ end
2967
+ end
2968
+ end
2969
+
2970
+ type llm_model =
2971
+ Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember0
2972
+ | Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember1
2973
+ | Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember2
2974
+ | Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember3
2975
+
2976
+ module LlmModel
2977
+ extend Revox::Internal::Type::Union
2978
+
2979
+ type union_member0 =
2980
+ {
2981
+ name: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember0::name_,
2982
+ type: :"dedicated-instance"
2983
+ }
2984
+
2985
+ class UnionMember0 < Revox::Internal::Type::BaseModel
2986
+ attr_accessor name: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember0::name_
2987
+
2988
+ attr_accessor type: :"dedicated-instance"
2989
+
2990
+ def initialize: (
2991
+ name: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember0::name_,
2992
+ ?type: :"dedicated-instance"
2993
+ ) -> void
2994
+
2995
+ def to_hash: -> {
2996
+ name: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember0::name_,
2997
+ type: :"dedicated-instance"
2998
+ }
2999
+
3000
+ type name_ = :"gpt-4.1" | :"ministral-3-8b-instruct"
3001
+
3002
+ module Name
3003
+ extend Revox::Internal::Type::Enum
3004
+
3005
+ GPT_4_1: :"gpt-4.1"
3006
+ MINISTRAL_3_8B_INSTRUCT: :"ministral-3-8b-instruct"
3007
+
3008
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember0::name_]
3009
+ end
3010
+ end
3011
+
3012
+ type union_member1 =
3013
+ {
3014
+ openrouter_model_id: String,
3015
+ openrouter_provider: String,
3016
+ type: :openrouter
3017
+ }
3018
+
3019
+ class UnionMember1 < Revox::Internal::Type::BaseModel
3020
+ attr_accessor openrouter_model_id: String
3021
+
3022
+ attr_accessor openrouter_provider: String
3023
+
3024
+ attr_accessor type: :openrouter
3025
+
3026
+ def initialize: (
3027
+ openrouter_model_id: String,
3028
+ openrouter_provider: String,
3029
+ ?type: :openrouter
3030
+ ) -> void
3031
+
3032
+ def to_hash: -> {
3033
+ openrouter_model_id: String,
3034
+ openrouter_provider: String,
3035
+ type: :openrouter
3036
+ }
3037
+ end
3038
+
3039
+ type union_member2 =
3040
+ {
3041
+ api_key: String,
3042
+ api_url: String,
3043
+ model_name: String,
3044
+ type: :custom
3045
+ }
3046
+
3047
+ class UnionMember2 < Revox::Internal::Type::BaseModel
3048
+ attr_accessor api_key: String
3049
+
3050
+ attr_accessor api_url: String
3051
+
3052
+ attr_accessor model_name: String
3053
+
3054
+ attr_accessor type: :custom
3055
+
3056
+ def initialize: (
3057
+ api_key: String,
3058
+ api_url: String,
3059
+ model_name: String,
3060
+ ?type: :custom
3061
+ ) -> void
3062
+
3063
+ def to_hash: -> {
3064
+ api_key: String,
3065
+ api_url: String,
3066
+ model_name: String,
3067
+ type: :custom
3068
+ }
3069
+ end
3070
+
3071
+ type union_member3 =
3072
+ {
3073
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember3::provider,
3074
+ realtime_model_id: String,
3075
+ type: :realtime,
3076
+ realtime_voice_id: String
3077
+ }
3078
+
3079
+ class UnionMember3 < Revox::Internal::Type::BaseModel
3080
+ attr_accessor provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember3::provider
3081
+
3082
+ attr_accessor realtime_model_id: String
3083
+
3084
+ attr_accessor type: :realtime
3085
+
3086
+ attr_reader realtime_voice_id: String?
3087
+
3088
+ def realtime_voice_id=: (String) -> String
3089
+
3090
+ def initialize: (
3091
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember3::provider,
3092
+ realtime_model_id: String,
3093
+ ?realtime_voice_id: String,
3094
+ ?type: :realtime
3095
+ ) -> void
3096
+
3097
+ def to_hash: -> {
3098
+ provider: Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember3::provider,
3099
+ realtime_model_id: String,
3100
+ type: :realtime,
3101
+ realtime_voice_id: String
3102
+ }
3103
+
3104
+ type provider = :openai | :google
3105
+
3106
+ module Provider
3107
+ extend Revox::Internal::Type::Enum
3108
+
3109
+ OPENAI: :openai
3110
+ GOOGLE: :google
3111
+
3112
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::LlmModel::UnionMember3::provider]
3113
+ end
3114
+ end
3115
+
3116
+ def self?.variants: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::llm_model]
3117
+ end
3118
+
3119
+ type status =
3120
+ :initializing
3121
+ | :queued_for_calling
3122
+ | :calling
3123
+ | :post_processing
3124
+ | :not_launched
3125
+ | :scheduled
3126
+ | :paused
3127
+ | :completed
3128
+ | :cancelled
3129
+ | :errored
3130
+
3131
+ module Status
3132
+ extend Revox::Internal::Type::Enum
3133
+
3134
+ INITIALIZING: :initializing
3135
+ QUEUED_FOR_CALLING: :queued_for_calling
3136
+ CALLING: :calling
3137
+ POST_PROCESSING: :post_processing
3138
+ NOT_LAUNCHED: :not_launched
3139
+ SCHEDULED: :scheduled
3140
+ PAUSED: :paused
3141
+ COMPLETED: :completed
3142
+ CANCELLED: :cancelled
3143
+ ERRORED: :errored
3144
+
3145
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::status]
3146
+ end
3147
+
3148
+ type outcome =
3149
+ :not_interested
3150
+ | :interested
3151
+ | :completed
3152
+ | :requested_callback_later
3153
+
3154
+ module Outcome
3155
+ extend Revox::Internal::Type::Enum
3156
+
3157
+ NOT_INTERESTED: :not_interested
3158
+ INTERESTED: :interested
3159
+ COMPLETED: :completed
3160
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
3161
+
3162
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::InFlightCall::outcome]
3163
+ end
3164
+ end
3165
+
3166
+ type outcome_filter =
3167
+ :not_interested | :interested | :completed | :requested_callback_later
3168
+
3169
+ module OutcomeFilter
3170
+ extend Revox::Internal::Type::Enum
3171
+
3172
+ NOT_INTERESTED: :not_interested
3173
+ INTERESTED: :interested
3174
+ COMPLETED: :completed
3175
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
3176
+
3177
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::outcome_filter]
3178
+ end
3179
+
3180
+ type status = :dialing | :connected | :completed | :stopped | :errored
3181
+
3182
+ module Status
3183
+ extend Revox::Internal::Type::Enum
3184
+
3185
+ DIALING: :dialing
3186
+ CONNECTED: :connected
3187
+ COMPLETED: :completed
3188
+ STOPPED: :stopped
3189
+ ERRORED: :errored
3190
+
3191
+ def self?.values: -> ::Array[Revox::Models::CampaignLaunchResponse::Session::status]
3192
+ end
3193
+ end
3194
+ end
3195
+ end
3196
+ end