revox 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +71 -0
- data/README.md +39 -14
- data/lib/revox/client.rb +15 -1
- data/lib/revox/internal/transport/base_client.rb +5 -0
- data/lib/revox/internal/util.rb +22 -7
- data/lib/revox/models/assistant_create_params.rb +1038 -13
- data/lib/revox/models/assistant_create_response.rb +1071 -11
- data/lib/revox/models/assistant_list_response.rb +1070 -11
- data/lib/revox/models/assistant_retrieve_response.rb +1066 -11
- data/lib/revox/models/assistant_update_params.rb +1038 -13
- data/lib/revox/models/assistant_update_response.rb +1097 -12
- data/lib/revox/models/call_create_params.rb +1065 -13
- data/lib/revox/models/call_create_response.rb +1813 -101
- data/lib/revox/models/call_retrieve_response.rb +1815 -101
- data/lib/revox/models/campaign_create_params.rb +67 -2
- data/lib/revox/models/campaign_create_response.rb +1314 -59
- data/lib/revox/models/campaign_get_rows_params.rb +1 -46
- data/lib/revox/models/campaign_get_rows_response.rb +1837 -129
- data/lib/revox/models/campaign_list_response.rb +1312 -59
- data/lib/revox/models/campaign_retrieve_response.rb +1312 -56
- data/lib/revox/models/users/me_retrieve_response.rb +13 -1
- data/lib/revox/models/users/me_update_response.rb +13 -1
- data/lib/revox/models/voice_list_response.rb +55 -1
- data/lib/revox/models/voice_preview_params.rb +49 -1
- data/lib/revox/models.rb +0 -2
- data/lib/revox/resources/assistants.rb +116 -8
- data/lib/revox/resources/call.rb +0 -29
- data/lib/revox/resources/campaigns.rb +12 -17
- data/lib/revox/resources/voices.rb +16 -10
- data/lib/revox/version.rb +1 -1
- data/lib/revox.rb +0 -2
- data/rbi/revox/internal/util.rbi +8 -0
- data/rbi/revox/models/assistant_create_params.rbi +2138 -103
- data/rbi/revox/models/assistant_create_response.rbi +2454 -199
- data/rbi/revox/models/assistant_list_response.rbi +2448 -195
- data/rbi/revox/models/assistant_retrieve_response.rbi +2401 -210
- data/rbi/revox/models/assistant_update_params.rbi +2138 -103
- data/rbi/revox/models/assistant_update_response.rbi +2504 -198
- data/rbi/revox/models/call_create_params.rbi +2382 -225
- data/rbi/revox/models/call_create_response.rbi +4104 -384
- data/rbi/revox/models/call_retrieve_response.rbi +4104 -382
- data/rbi/revox/models/campaign_create_params.rbi +136 -0
- data/rbi/revox/models/campaign_create_response.rbi +2911 -231
- data/rbi/revox/models/campaign_get_rows_params.rbi +2 -82
- data/rbi/revox/models/campaign_get_rows_response.rbi +4135 -410
- data/rbi/revox/models/campaign_list_response.rbi +2904 -230
- data/rbi/revox/models/campaign_retrieve_response.rbi +2911 -231
- data/rbi/revox/models/users/me_retrieve_response.rbi +13 -3
- data/rbi/revox/models/users/me_update_response.rbi +13 -3
- data/rbi/revox/models/voice_list_response.rbi +105 -3
- data/rbi/revox/models/voice_preview_params.rbi +69 -0
- data/rbi/revox/models.rbi +0 -2
- data/rbi/revox/resources/assistants.rbi +284 -8
- data/rbi/revox/resources/call.rbi +0 -21
- data/rbi/revox/resources/campaigns.rbi +12 -19
- data/rbi/revox/resources/voices.rbi +17 -9
- data/sig/revox/internal/util.rbs +4 -0
- data/sig/revox/models/assistant_create_params.rbs +844 -11
- data/sig/revox/models/assistant_create_response.rbs +860 -3
- data/sig/revox/models/assistant_list_response.rbs +860 -3
- data/sig/revox/models/assistant_retrieve_response.rbs +859 -3
- data/sig/revox/models/assistant_update_params.rbs +844 -11
- data/sig/revox/models/assistant_update_response.rbs +886 -6
- data/sig/revox/models/call_create_params.rbs +847 -13
- data/sig/revox/models/call_create_response.rbs +1514 -34
- data/sig/revox/models/call_retrieve_response.rbs +1514 -34
- data/sig/revox/models/campaign_create_params.rbs +54 -0
- data/sig/revox/models/campaign_create_response.rbs +1034 -6
- data/sig/revox/models/campaign_get_rows_params.rbs +2 -64
- data/sig/revox/models/campaign_get_rows_response.rbs +1522 -54
- data/sig/revox/models/campaign_list_response.rbs +1034 -6
- data/sig/revox/models/campaign_retrieve_response.rbs +1034 -6
- data/sig/revox/models/users/me_retrieve_response.rbs +8 -3
- data/sig/revox/models/users/me_update_response.rbs +8 -3
- data/sig/revox/models/voice_list_response.rbs +45 -3
- data/sig/revox/models/voice_preview_params.rbs +42 -1
- data/sig/revox/models.rbs +0 -2
- data/sig/revox/resources/assistants.rbs +56 -2
- data/sig/revox/resources/call.rbs +0 -7
- data/sig/revox/resources/campaigns.rbs +2 -5
- data/sig/revox/resources/voices.rbs +4 -0
- metadata +2 -8
- data/lib/revox/models/call_list_params.rb +0 -52
- data/lib/revox/models/call_list_response.rb +0 -259
- data/rbi/revox/models/call_list_params.rbi +0 -94
- data/rbi/revox/models/call_list_response.rbi +0 -563
- data/sig/revox/models/call_list_params.rbs +0 -63
- data/sig/revox/models/call_list_response.rbs +0 -226
|
@@ -43,8 +43,25 @@ module Revox
|
|
|
43
43
|
sig { returns(String) }
|
|
44
44
|
attr_accessor :id
|
|
45
45
|
|
|
46
|
-
#
|
|
47
|
-
#
|
|
46
|
+
# Which call outcomes trigger the after-call SMS. When empty or null, no
|
|
47
|
+
# after-call SMS is sent. Use "none" when outcome is null.
|
|
48
|
+
sig do
|
|
49
|
+
returns(
|
|
50
|
+
T.nilable(
|
|
51
|
+
T::Array[
|
|
52
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
53
|
+
]
|
|
54
|
+
)
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
attr_accessor :after_call_sms_outcomes
|
|
58
|
+
|
|
59
|
+
# Prompt / instructions for the after-call SMS. Supports {{variable}}
|
|
60
|
+
# placeholders. When null, no after-call SMS is sent.
|
|
61
|
+
sig { returns(T.nilable(String)) }
|
|
62
|
+
attr_accessor :after_call_sms_prompt
|
|
63
|
+
|
|
64
|
+
# Ambient background sound to play during the call. null disables it.
|
|
48
65
|
sig do
|
|
49
66
|
returns(
|
|
50
67
|
T.nilable(
|
|
@@ -54,6 +71,10 @@ module Revox
|
|
|
54
71
|
end
|
|
55
72
|
attr_accessor :background_sound
|
|
56
73
|
|
|
74
|
+
# Volume of the ambient background sound (0 = silent, 1 = max).
|
|
75
|
+
sig { returns(Float) }
|
|
76
|
+
attr_accessor :background_sound_volume
|
|
77
|
+
|
|
57
78
|
sig do
|
|
58
79
|
returns(
|
|
59
80
|
T.nilable(Revox::Models::AssistantListResponse::Assistant::Calendly)
|
|
@@ -92,9 +113,51 @@ module Revox
|
|
|
92
113
|
end
|
|
93
114
|
attr_writer :call_retry_config
|
|
94
115
|
|
|
116
|
+
# Optional Cartesia pronunciation dictionary ID linked to this assistant.
|
|
117
|
+
sig { returns(T.nilable(String)) }
|
|
118
|
+
attr_accessor :cartesia_dictionary_pronunciation_id
|
|
119
|
+
|
|
95
120
|
sig { returns(T.anything) }
|
|
96
121
|
attr_accessor :created_at
|
|
97
122
|
|
|
123
|
+
sig do
|
|
124
|
+
returns(
|
|
125
|
+
T.nilable(
|
|
126
|
+
T::Array[
|
|
127
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool
|
|
128
|
+
]
|
|
129
|
+
)
|
|
130
|
+
)
|
|
131
|
+
end
|
|
132
|
+
attr_accessor :custom_tools
|
|
133
|
+
|
|
134
|
+
# Email address(es) to receive notifications when a call ends with a matching
|
|
135
|
+
# outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
|
|
136
|
+
# bob@y.com").
|
|
137
|
+
sig { returns(T.nilable(String)) }
|
|
138
|
+
attr_accessor :email_notification_address
|
|
139
|
+
|
|
140
|
+
# The language used for the notification email content. One of "en" or "fr".
|
|
141
|
+
sig do
|
|
142
|
+
returns(
|
|
143
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
144
|
+
)
|
|
145
|
+
end
|
|
146
|
+
attr_accessor :email_notification_language
|
|
147
|
+
|
|
148
|
+
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
149
|
+
# "completed", "none"]. Use "none" when outcome is null.
|
|
150
|
+
sig do
|
|
151
|
+
returns(
|
|
152
|
+
T.nilable(
|
|
153
|
+
T::Array[
|
|
154
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
155
|
+
]
|
|
156
|
+
)
|
|
157
|
+
)
|
|
158
|
+
end
|
|
159
|
+
attr_accessor :email_notification_outcomes
|
|
160
|
+
|
|
98
161
|
sig { returns(T.nilable(String)) }
|
|
99
162
|
attr_accessor :end_of_call_sentence
|
|
100
163
|
|
|
@@ -112,6 +175,22 @@ module Revox
|
|
|
112
175
|
end
|
|
113
176
|
attr_accessor :first_sentence_mode
|
|
114
177
|
|
|
178
|
+
# Override the default outbound phone number for calls placed with this assistant.
|
|
179
|
+
# When null, the organization's default phone number is used.
|
|
180
|
+
sig { returns(T.nilable(String)) }
|
|
181
|
+
attr_accessor :from_phone_number
|
|
182
|
+
|
|
183
|
+
# Warm or cold transfer when transfer_phone_number is set; null when transfer is
|
|
184
|
+
# not configured.
|
|
185
|
+
sig do
|
|
186
|
+
returns(
|
|
187
|
+
T.nilable(
|
|
188
|
+
Revox::Models::AssistantListResponse::Assistant::HumanTransferMode::TaggedSymbol
|
|
189
|
+
)
|
|
190
|
+
)
|
|
191
|
+
end
|
|
192
|
+
attr_accessor :human_transfer_mode
|
|
193
|
+
|
|
115
194
|
# Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
116
195
|
# skip turns to navigate phone menus.
|
|
117
196
|
sig { returns(T::Boolean) }
|
|
@@ -124,20 +203,95 @@ module Revox
|
|
|
124
203
|
end
|
|
125
204
|
attr_accessor :llm_model
|
|
126
205
|
|
|
206
|
+
# Public URL of the brand logo shown on the assistant's demo page. Null when
|
|
207
|
+
# unset.
|
|
208
|
+
sig { returns(T.nilable(String)) }
|
|
209
|
+
attr_accessor :logo_url
|
|
210
|
+
|
|
127
211
|
# The maximum duration of the call in seconds. This is the maximum time the call
|
|
128
212
|
# will be allowed to run.
|
|
129
213
|
sig { returns(Float) }
|
|
130
214
|
attr_accessor :max_call_duration_secs
|
|
131
215
|
|
|
216
|
+
# Optional message the agent will say, without being interruptible, when the call
|
|
217
|
+
# reaches its max duration. Kept short so it fits inside the farewell buffer. If
|
|
218
|
+
# null, the call ends silently.
|
|
219
|
+
sig { returns(T.nilable(String)) }
|
|
220
|
+
attr_accessor :max_duration_end_message
|
|
221
|
+
|
|
132
222
|
sig { returns(String) }
|
|
133
223
|
attr_accessor :name
|
|
134
224
|
|
|
135
225
|
sig { returns(String) }
|
|
136
226
|
attr_accessor :organization_id
|
|
137
227
|
|
|
228
|
+
sig do
|
|
229
|
+
returns(
|
|
230
|
+
T.nilable(Revox::Models::AssistantListResponse::Assistant::Position)
|
|
231
|
+
)
|
|
232
|
+
end
|
|
233
|
+
attr_reader :position
|
|
234
|
+
|
|
235
|
+
sig do
|
|
236
|
+
params(
|
|
237
|
+
position:
|
|
238
|
+
T.nilable(
|
|
239
|
+
Revox::Models::AssistantListResponse::Assistant::Position::OrHash
|
|
240
|
+
)
|
|
241
|
+
).void
|
|
242
|
+
end
|
|
243
|
+
attr_writer :position
|
|
244
|
+
|
|
138
245
|
sig { returns(String) }
|
|
139
246
|
attr_accessor :prompt
|
|
140
247
|
|
|
248
|
+
sig do
|
|
249
|
+
returns(
|
|
250
|
+
T.nilable(
|
|
251
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow
|
|
252
|
+
)
|
|
253
|
+
)
|
|
254
|
+
end
|
|
255
|
+
attr_reader :prompt_flow
|
|
256
|
+
|
|
257
|
+
sig do
|
|
258
|
+
params(
|
|
259
|
+
prompt_flow:
|
|
260
|
+
T.nilable(
|
|
261
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::OrHash
|
|
262
|
+
)
|
|
263
|
+
).void
|
|
264
|
+
end
|
|
265
|
+
attr_writer :prompt_flow
|
|
266
|
+
|
|
267
|
+
sig do
|
|
268
|
+
returns(
|
|
269
|
+
T.nilable(Revox::Models::AssistantListResponse::Assistant::Slack)
|
|
270
|
+
)
|
|
271
|
+
end
|
|
272
|
+
attr_reader :slack
|
|
273
|
+
|
|
274
|
+
sig do
|
|
275
|
+
params(
|
|
276
|
+
slack:
|
|
277
|
+
T.nilable(
|
|
278
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::OrHash
|
|
279
|
+
)
|
|
280
|
+
).void
|
|
281
|
+
end
|
|
282
|
+
attr_writer :slack
|
|
283
|
+
|
|
284
|
+
# Enable SMS tool during calls. When enabled, the agent can send SMS messages to
|
|
285
|
+
# the user on the call.
|
|
286
|
+
sig { returns(T::Boolean) }
|
|
287
|
+
attr_accessor :sms_enabled
|
|
288
|
+
|
|
289
|
+
# Hardcoded SMS template to send during calls. When set, this exact text is sent
|
|
290
|
+
# instead of letting the agent generate the message. Supports {{variable}}
|
|
291
|
+
# placeholders.
|
|
292
|
+
sig { returns(T.nilable(String)) }
|
|
293
|
+
attr_accessor :sms_template
|
|
294
|
+
|
|
141
295
|
# The structured output config to use for the call. This is used to extract the
|
|
142
296
|
# data from the call (like email, name, company name, etc.).
|
|
143
297
|
sig do
|
|
@@ -151,10 +305,73 @@ module Revox
|
|
|
151
305
|
end
|
|
152
306
|
attr_accessor :structured_output_config
|
|
153
307
|
|
|
308
|
+
# Custom prompt for structured data extraction. If not provided, a default prompt
|
|
309
|
+
# is used. Available variables: {{transcript}}, {{call_direction}},
|
|
310
|
+
# {{user_phone_number}}, {{agent_phone_number}}.
|
|
311
|
+
sig { returns(T.nilable(String)) }
|
|
312
|
+
attr_accessor :structured_output_prompt
|
|
313
|
+
|
|
314
|
+
# Assistant-level speech-to-text context: structured `general` key/value pairs
|
|
315
|
+
# plus a list of domain `terms`. Prompt-derived context is merged in without
|
|
316
|
+
# replacing existing entries.
|
|
317
|
+
sig do
|
|
318
|
+
returns(
|
|
319
|
+
T.nilable(
|
|
320
|
+
Revox::Models::AssistantListResponse::Assistant::SttContext
|
|
321
|
+
)
|
|
322
|
+
)
|
|
323
|
+
end
|
|
324
|
+
attr_reader :stt_context
|
|
325
|
+
|
|
326
|
+
sig do
|
|
327
|
+
params(
|
|
328
|
+
stt_context:
|
|
329
|
+
T.nilable(
|
|
330
|
+
Revox::Models::AssistantListResponse::Assistant::SttContext::OrHash
|
|
331
|
+
)
|
|
332
|
+
).void
|
|
333
|
+
end
|
|
334
|
+
attr_writer :stt_context
|
|
335
|
+
|
|
336
|
+
# Transcriber (speech-to-text) model used for the assistant.
|
|
337
|
+
sig do
|
|
338
|
+
returns(
|
|
339
|
+
Revox::Models::AssistantListResponse::Assistant::SttModel::TaggedSymbol
|
|
340
|
+
)
|
|
341
|
+
end
|
|
342
|
+
attr_accessor :stt_model
|
|
343
|
+
|
|
344
|
+
# Audio clip to play while the agent is processing a response. One of the built-in
|
|
345
|
+
# LiveKit audio clips; null disables it.
|
|
346
|
+
sig do
|
|
347
|
+
returns(
|
|
348
|
+
T.nilable(
|
|
349
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::TaggedSymbol
|
|
350
|
+
)
|
|
351
|
+
)
|
|
352
|
+
end
|
|
353
|
+
attr_accessor :thinking_sound
|
|
354
|
+
|
|
355
|
+
# Probability [0..1] that the thinking sound plays on any given turn; otherwise
|
|
356
|
+
# the agent is silent while thinking.
|
|
357
|
+
sig { returns(Float) }
|
|
358
|
+
attr_accessor :thinking_sound_probability
|
|
359
|
+
|
|
360
|
+
# Volume of the thinking sound (0 = silent, 1 = max).
|
|
361
|
+
sig { returns(Float) }
|
|
362
|
+
attr_accessor :thinking_sound_volume
|
|
363
|
+
|
|
154
364
|
# Phone number to transfer calls to when users request to speak to a human agent.
|
|
155
365
|
sig { returns(T.nilable(String)) }
|
|
156
366
|
attr_accessor :transfer_phone_number
|
|
157
367
|
|
|
368
|
+
sig do
|
|
369
|
+
returns(
|
|
370
|
+
Revox::Models::AssistantListResponse::Assistant::Type::TaggedSymbol
|
|
371
|
+
)
|
|
372
|
+
end
|
|
373
|
+
attr_accessor :type
|
|
374
|
+
|
|
158
375
|
sig { returns(T.anything) }
|
|
159
376
|
attr_accessor :updated_at
|
|
160
377
|
|
|
@@ -180,10 +397,57 @@ module Revox
|
|
|
180
397
|
sig { returns(T.nilable(String)) }
|
|
181
398
|
attr_accessor :voicemail_message
|
|
182
399
|
|
|
400
|
+
# Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
|
|
401
|
+
# When null, no SMS is sent on voicemail.
|
|
402
|
+
sig { returns(T.nilable(String)) }
|
|
403
|
+
attr_accessor :voicemail_sms_prompt
|
|
404
|
+
|
|
405
|
+
# Warm transfer only: instructions for the supervisor handoff summary; null when
|
|
406
|
+
# not configured or cold transfer.
|
|
407
|
+
sig { returns(T.nilable(String)) }
|
|
408
|
+
attr_accessor :warm_transfer_summary_instructions
|
|
409
|
+
|
|
183
410
|
# The webhook URL to call when the call is completed.
|
|
184
411
|
sig { returns(T.nilable(String)) }
|
|
185
412
|
attr_accessor :webhook_url
|
|
186
413
|
|
|
414
|
+
sig do
|
|
415
|
+
returns(
|
|
416
|
+
T.nilable(Revox::Models::AssistantListResponse::Assistant::Zoho)
|
|
417
|
+
)
|
|
418
|
+
end
|
|
419
|
+
attr_reader :zoho
|
|
420
|
+
|
|
421
|
+
sig do
|
|
422
|
+
params(
|
|
423
|
+
zoho:
|
|
424
|
+
T.nilable(
|
|
425
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::OrHash
|
|
426
|
+
)
|
|
427
|
+
).void
|
|
428
|
+
end
|
|
429
|
+
attr_writer :zoho
|
|
430
|
+
|
|
431
|
+
# The user who created the assistant.
|
|
432
|
+
sig do
|
|
433
|
+
returns(
|
|
434
|
+
T.nilable(
|
|
435
|
+
Revox::Models::AssistantListResponse::Assistant::CreatedBy
|
|
436
|
+
)
|
|
437
|
+
)
|
|
438
|
+
end
|
|
439
|
+
attr_reader :created_by
|
|
440
|
+
|
|
441
|
+
sig do
|
|
442
|
+
params(
|
|
443
|
+
created_by:
|
|
444
|
+
T.nilable(
|
|
445
|
+
Revox::Models::AssistantListResponse::Assistant::CreatedBy::OrHash
|
|
446
|
+
)
|
|
447
|
+
).void
|
|
448
|
+
end
|
|
449
|
+
attr_writer :created_by
|
|
450
|
+
|
|
187
451
|
sig do
|
|
188
452
|
returns(
|
|
189
453
|
T.nilable(
|
|
@@ -203,6 +467,12 @@ module Revox
|
|
|
203
467
|
end
|
|
204
468
|
attr_writer :faq_items
|
|
205
469
|
|
|
470
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
471
|
+
attr_reader :is_realestate_assistant
|
|
472
|
+
|
|
473
|
+
sig { params(is_realestate_assistant: T::Boolean).void }
|
|
474
|
+
attr_writer :is_realestate_assistant
|
|
475
|
+
|
|
206
476
|
sig { returns(T.nilable(Float)) }
|
|
207
477
|
attr_reader :pending_faq_count
|
|
208
478
|
|
|
@@ -212,10 +482,18 @@ module Revox
|
|
|
212
482
|
sig do
|
|
213
483
|
params(
|
|
214
484
|
id: String,
|
|
485
|
+
after_call_sms_outcomes:
|
|
486
|
+
T.nilable(
|
|
487
|
+
T::Array[
|
|
488
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::OrSymbol
|
|
489
|
+
]
|
|
490
|
+
),
|
|
491
|
+
after_call_sms_prompt: T.nilable(String),
|
|
215
492
|
background_sound:
|
|
216
493
|
T.nilable(
|
|
217
494
|
Revox::Models::AssistantListResponse::Assistant::BackgroundSound::OrSymbol
|
|
218
495
|
),
|
|
496
|
+
background_sound_volume: Float,
|
|
219
497
|
calendly:
|
|
220
498
|
T.nilable(
|
|
221
499
|
Revox::Models::AssistantListResponse::Assistant::Calendly::OrHash
|
|
@@ -224,81 +502,217 @@ module Revox
|
|
|
224
502
|
T.nilable(
|
|
225
503
|
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::OrHash
|
|
226
504
|
),
|
|
505
|
+
cartesia_dictionary_pronunciation_id: T.nilable(String),
|
|
227
506
|
created_at: T.anything,
|
|
507
|
+
custom_tools:
|
|
508
|
+
T.nilable(
|
|
509
|
+
T::Array[
|
|
510
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::OrHash
|
|
511
|
+
]
|
|
512
|
+
),
|
|
513
|
+
email_notification_address: T.nilable(String),
|
|
514
|
+
email_notification_language:
|
|
515
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::OrSymbol,
|
|
516
|
+
email_notification_outcomes:
|
|
517
|
+
T.nilable(
|
|
518
|
+
T::Array[
|
|
519
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::OrSymbol
|
|
520
|
+
]
|
|
521
|
+
),
|
|
228
522
|
end_of_call_sentence: T.nilable(String),
|
|
229
523
|
first_sentence: T.nilable(String),
|
|
230
524
|
first_sentence_delay_ms: Integer,
|
|
231
525
|
first_sentence_mode:
|
|
232
526
|
Revox::Models::AssistantListResponse::Assistant::FirstSentenceMode::OrSymbol,
|
|
527
|
+
from_phone_number: T.nilable(String),
|
|
528
|
+
human_transfer_mode:
|
|
529
|
+
T.nilable(
|
|
530
|
+
Revox::Models::AssistantListResponse::Assistant::HumanTransferMode::OrSymbol
|
|
531
|
+
),
|
|
233
532
|
ivr_navigation_enabled: T::Boolean,
|
|
234
533
|
llm_model:
|
|
235
534
|
T.any(
|
|
236
535
|
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember0::OrHash,
|
|
237
|
-
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember1::OrHash
|
|
536
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember1::OrHash,
|
|
537
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember2::OrHash,
|
|
538
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember3::OrHash
|
|
238
539
|
),
|
|
540
|
+
logo_url: T.nilable(String),
|
|
239
541
|
max_call_duration_secs: Float,
|
|
542
|
+
max_duration_end_message: T.nilable(String),
|
|
240
543
|
name: String,
|
|
241
544
|
organization_id: String,
|
|
545
|
+
position:
|
|
546
|
+
T.nilable(
|
|
547
|
+
Revox::Models::AssistantListResponse::Assistant::Position::OrHash
|
|
548
|
+
),
|
|
242
549
|
prompt: String,
|
|
550
|
+
prompt_flow:
|
|
551
|
+
T.nilable(
|
|
552
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::OrHash
|
|
553
|
+
),
|
|
554
|
+
slack:
|
|
555
|
+
T.nilable(
|
|
556
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::OrHash
|
|
557
|
+
),
|
|
558
|
+
sms_enabled: T::Boolean,
|
|
559
|
+
sms_template: T.nilable(String),
|
|
243
560
|
structured_output_config:
|
|
244
561
|
T.nilable(
|
|
245
562
|
T::Array[
|
|
246
563
|
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::OrHash
|
|
247
564
|
]
|
|
248
565
|
),
|
|
566
|
+
structured_output_prompt: T.nilable(String),
|
|
567
|
+
stt_context:
|
|
568
|
+
T.nilable(
|
|
569
|
+
Revox::Models::AssistantListResponse::Assistant::SttContext::OrHash
|
|
570
|
+
),
|
|
571
|
+
stt_model:
|
|
572
|
+
Revox::Models::AssistantListResponse::Assistant::SttModel::OrSymbol,
|
|
573
|
+
thinking_sound:
|
|
574
|
+
T.nilable(
|
|
575
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::OrSymbol
|
|
576
|
+
),
|
|
577
|
+
thinking_sound_probability: Float,
|
|
578
|
+
thinking_sound_volume: Float,
|
|
249
579
|
transfer_phone_number: T.nilable(String),
|
|
580
|
+
type:
|
|
581
|
+
Revox::Models::AssistantListResponse::Assistant::Type::OrSymbol,
|
|
250
582
|
updated_at: T.anything,
|
|
251
583
|
voice:
|
|
252
584
|
T.nilable(
|
|
253
585
|
Revox::Models::AssistantListResponse::Assistant::Voice::OrHash
|
|
254
586
|
),
|
|
255
587
|
voicemail_message: T.nilable(String),
|
|
588
|
+
voicemail_sms_prompt: T.nilable(String),
|
|
589
|
+
warm_transfer_summary_instructions: T.nilable(String),
|
|
256
590
|
webhook_url: T.nilable(String),
|
|
591
|
+
zoho:
|
|
592
|
+
T.nilable(
|
|
593
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::OrHash
|
|
594
|
+
),
|
|
595
|
+
created_by:
|
|
596
|
+
T.nilable(
|
|
597
|
+
Revox::Models::AssistantListResponse::Assistant::CreatedBy::OrHash
|
|
598
|
+
),
|
|
257
599
|
faq_items:
|
|
258
600
|
T::Array[
|
|
259
601
|
Revox::Models::AssistantListResponse::Assistant::FaqItem::OrHash
|
|
260
602
|
],
|
|
603
|
+
is_realestate_assistant: T::Boolean,
|
|
261
604
|
pending_faq_count: Float
|
|
262
605
|
).returns(T.attached_class)
|
|
263
606
|
end
|
|
264
607
|
def self.new(
|
|
265
608
|
id:,
|
|
266
|
-
#
|
|
267
|
-
#
|
|
609
|
+
# Which call outcomes trigger the after-call SMS. When empty or null, no
|
|
610
|
+
# after-call SMS is sent. Use "none" when outcome is null.
|
|
611
|
+
after_call_sms_outcomes:,
|
|
612
|
+
# Prompt / instructions for the after-call SMS. Supports {{variable}}
|
|
613
|
+
# placeholders. When null, no after-call SMS is sent.
|
|
614
|
+
after_call_sms_prompt:,
|
|
615
|
+
# Ambient background sound to play during the call. null disables it.
|
|
268
616
|
background_sound:,
|
|
617
|
+
# Volume of the ambient background sound (0 = silent, 1 = max).
|
|
618
|
+
background_sound_volume:,
|
|
269
619
|
calendly:,
|
|
270
620
|
# Configuration for call retry behavior including time windows, delays, and max
|
|
271
621
|
# iterations. If not provided, defaults will be used.
|
|
272
622
|
call_retry_config:,
|
|
623
|
+
# Optional Cartesia pronunciation dictionary ID linked to this assistant.
|
|
624
|
+
cartesia_dictionary_pronunciation_id:,
|
|
273
625
|
created_at:,
|
|
626
|
+
custom_tools:,
|
|
627
|
+
# Email address(es) to receive notifications when a call ends with a matching
|
|
628
|
+
# outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
|
|
629
|
+
# bob@y.com").
|
|
630
|
+
email_notification_address:,
|
|
631
|
+
# The language used for the notification email content. One of "en" or "fr".
|
|
632
|
+
email_notification_language:,
|
|
633
|
+
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
634
|
+
# "completed", "none"]. Use "none" when outcome is null.
|
|
635
|
+
email_notification_outcomes:,
|
|
274
636
|
end_of_call_sentence:,
|
|
275
637
|
first_sentence:,
|
|
276
638
|
# Delay in milliseconds before speaking the first sentence. Default: 400.
|
|
277
639
|
first_sentence_delay_ms:,
|
|
278
640
|
first_sentence_mode:,
|
|
641
|
+
# Override the default outbound phone number for calls placed with this assistant.
|
|
642
|
+
# When null, the organization's default phone number is used.
|
|
643
|
+
from_phone_number:,
|
|
644
|
+
# Warm or cold transfer when transfer_phone_number is set; null when transfer is
|
|
645
|
+
# not configured.
|
|
646
|
+
human_transfer_mode:,
|
|
279
647
|
# Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
280
648
|
# skip turns to navigate phone menus.
|
|
281
649
|
ivr_navigation_enabled:,
|
|
282
650
|
llm_model:,
|
|
651
|
+
# Public URL of the brand logo shown on the assistant's demo page. Null when
|
|
652
|
+
# unset.
|
|
653
|
+
logo_url:,
|
|
283
654
|
# The maximum duration of the call in seconds. This is the maximum time the call
|
|
284
655
|
# will be allowed to run.
|
|
285
656
|
max_call_duration_secs:,
|
|
657
|
+
# Optional message the agent will say, without being interruptible, when the call
|
|
658
|
+
# reaches its max duration. Kept short so it fits inside the farewell buffer. If
|
|
659
|
+
# null, the call ends silently.
|
|
660
|
+
max_duration_end_message:,
|
|
286
661
|
name:,
|
|
287
662
|
organization_id:,
|
|
663
|
+
position:,
|
|
288
664
|
prompt:,
|
|
665
|
+
prompt_flow:,
|
|
666
|
+
slack:,
|
|
667
|
+
# Enable SMS tool during calls. When enabled, the agent can send SMS messages to
|
|
668
|
+
# the user on the call.
|
|
669
|
+
sms_enabled:,
|
|
670
|
+
# Hardcoded SMS template to send during calls. When set, this exact text is sent
|
|
671
|
+
# instead of letting the agent generate the message. Supports {{variable}}
|
|
672
|
+
# placeholders.
|
|
673
|
+
sms_template:,
|
|
289
674
|
# The structured output config to use for the call. This is used to extract the
|
|
290
675
|
# data from the call (like email, name, company name, etc.).
|
|
291
676
|
structured_output_config:,
|
|
677
|
+
# Custom prompt for structured data extraction. If not provided, a default prompt
|
|
678
|
+
# is used. Available variables: {{transcript}}, {{call_direction}},
|
|
679
|
+
# {{user_phone_number}}, {{agent_phone_number}}.
|
|
680
|
+
structured_output_prompt:,
|
|
681
|
+
# Assistant-level speech-to-text context: structured `general` key/value pairs
|
|
682
|
+
# plus a list of domain `terms`. Prompt-derived context is merged in without
|
|
683
|
+
# replacing existing entries.
|
|
684
|
+
stt_context:,
|
|
685
|
+
# Transcriber (speech-to-text) model used for the assistant.
|
|
686
|
+
stt_model:,
|
|
687
|
+
# Audio clip to play while the agent is processing a response. One of the built-in
|
|
688
|
+
# LiveKit audio clips; null disables it.
|
|
689
|
+
thinking_sound:,
|
|
690
|
+
# Probability [0..1] that the thinking sound plays on any given turn; otherwise
|
|
691
|
+
# the agent is silent while thinking.
|
|
692
|
+
thinking_sound_probability:,
|
|
693
|
+
# Volume of the thinking sound (0 = silent, 1 = max).
|
|
694
|
+
thinking_sound_volume:,
|
|
292
695
|
# Phone number to transfer calls to when users request to speak to a human agent.
|
|
293
696
|
transfer_phone_number:,
|
|
697
|
+
type:,
|
|
294
698
|
updated_at:,
|
|
295
699
|
voice:,
|
|
296
700
|
# If set, when voicemail is detected the agent will speak this message then hang
|
|
297
701
|
# up; if null, hang up immediately.
|
|
298
702
|
voicemail_message:,
|
|
703
|
+
# Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
|
|
704
|
+
# When null, no SMS is sent on voicemail.
|
|
705
|
+
voicemail_sms_prompt:,
|
|
706
|
+
# Warm transfer only: instructions for the supervisor handoff summary; null when
|
|
707
|
+
# not configured or cold transfer.
|
|
708
|
+
warm_transfer_summary_instructions:,
|
|
299
709
|
# The webhook URL to call when the call is completed.
|
|
300
710
|
webhook_url:,
|
|
711
|
+
zoho:,
|
|
712
|
+
# The user who created the assistant.
|
|
713
|
+
created_by: nil,
|
|
301
714
|
faq_items: nil,
|
|
715
|
+
is_realestate_assistant: nil,
|
|
302
716
|
pending_faq_count: nil
|
|
303
717
|
)
|
|
304
718
|
end
|
|
@@ -307,10 +721,18 @@ module Revox
|
|
|
307
721
|
override.returns(
|
|
308
722
|
{
|
|
309
723
|
id: String,
|
|
724
|
+
after_call_sms_outcomes:
|
|
725
|
+
T.nilable(
|
|
726
|
+
T::Array[
|
|
727
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
728
|
+
]
|
|
729
|
+
),
|
|
730
|
+
after_call_sms_prompt: T.nilable(String),
|
|
310
731
|
background_sound:
|
|
311
732
|
T.nilable(
|
|
312
733
|
Revox::Models::AssistantListResponse::Assistant::BackgroundSound::TaggedSymbol
|
|
313
734
|
),
|
|
735
|
+
background_sound_volume: Float,
|
|
314
736
|
calendly:
|
|
315
737
|
T.nilable(
|
|
316
738
|
Revox::Models::AssistantListResponse::Assistant::Calendly
|
|
@@ -319,37 +741,100 @@ module Revox
|
|
|
319
741
|
T.nilable(
|
|
320
742
|
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig
|
|
321
743
|
),
|
|
744
|
+
cartesia_dictionary_pronunciation_id: T.nilable(String),
|
|
322
745
|
created_at: T.anything,
|
|
746
|
+
custom_tools:
|
|
747
|
+
T.nilable(
|
|
748
|
+
T::Array[
|
|
749
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool
|
|
750
|
+
]
|
|
751
|
+
),
|
|
752
|
+
email_notification_address: T.nilable(String),
|
|
753
|
+
email_notification_language:
|
|
754
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::TaggedSymbol,
|
|
755
|
+
email_notification_outcomes:
|
|
756
|
+
T.nilable(
|
|
757
|
+
T::Array[
|
|
758
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
759
|
+
]
|
|
760
|
+
),
|
|
323
761
|
end_of_call_sentence: T.nilable(String),
|
|
324
762
|
first_sentence: T.nilable(String),
|
|
325
763
|
first_sentence_delay_ms: Integer,
|
|
326
764
|
first_sentence_mode:
|
|
327
765
|
Revox::Models::AssistantListResponse::Assistant::FirstSentenceMode::TaggedSymbol,
|
|
766
|
+
from_phone_number: T.nilable(String),
|
|
767
|
+
human_transfer_mode:
|
|
768
|
+
T.nilable(
|
|
769
|
+
Revox::Models::AssistantListResponse::Assistant::HumanTransferMode::TaggedSymbol
|
|
770
|
+
),
|
|
328
771
|
ivr_navigation_enabled: T::Boolean,
|
|
329
772
|
llm_model:
|
|
330
773
|
Revox::Models::AssistantListResponse::Assistant::LlmModel::Variants,
|
|
774
|
+
logo_url: T.nilable(String),
|
|
331
775
|
max_call_duration_secs: Float,
|
|
776
|
+
max_duration_end_message: T.nilable(String),
|
|
332
777
|
name: String,
|
|
333
778
|
organization_id: String,
|
|
779
|
+
position:
|
|
780
|
+
T.nilable(
|
|
781
|
+
Revox::Models::AssistantListResponse::Assistant::Position
|
|
782
|
+
),
|
|
334
783
|
prompt: String,
|
|
784
|
+
prompt_flow:
|
|
785
|
+
T.nilable(
|
|
786
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow
|
|
787
|
+
),
|
|
788
|
+
slack:
|
|
789
|
+
T.nilable(
|
|
790
|
+
Revox::Models::AssistantListResponse::Assistant::Slack
|
|
791
|
+
),
|
|
792
|
+
sms_enabled: T::Boolean,
|
|
793
|
+
sms_template: T.nilable(String),
|
|
335
794
|
structured_output_config:
|
|
336
795
|
T.nilable(
|
|
337
796
|
T::Array[
|
|
338
797
|
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig
|
|
339
798
|
]
|
|
340
799
|
),
|
|
800
|
+
structured_output_prompt: T.nilable(String),
|
|
801
|
+
stt_context:
|
|
802
|
+
T.nilable(
|
|
803
|
+
Revox::Models::AssistantListResponse::Assistant::SttContext
|
|
804
|
+
),
|
|
805
|
+
stt_model:
|
|
806
|
+
Revox::Models::AssistantListResponse::Assistant::SttModel::TaggedSymbol,
|
|
807
|
+
thinking_sound:
|
|
808
|
+
T.nilable(
|
|
809
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::TaggedSymbol
|
|
810
|
+
),
|
|
811
|
+
thinking_sound_probability: Float,
|
|
812
|
+
thinking_sound_volume: Float,
|
|
341
813
|
transfer_phone_number: T.nilable(String),
|
|
814
|
+
type:
|
|
815
|
+
Revox::Models::AssistantListResponse::Assistant::Type::TaggedSymbol,
|
|
342
816
|
updated_at: T.anything,
|
|
343
817
|
voice:
|
|
344
818
|
T.nilable(
|
|
345
819
|
Revox::Models::AssistantListResponse::Assistant::Voice
|
|
346
820
|
),
|
|
347
821
|
voicemail_message: T.nilable(String),
|
|
822
|
+
voicemail_sms_prompt: T.nilable(String),
|
|
823
|
+
warm_transfer_summary_instructions: T.nilable(String),
|
|
348
824
|
webhook_url: T.nilable(String),
|
|
825
|
+
zoho:
|
|
826
|
+
T.nilable(
|
|
827
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho
|
|
828
|
+
),
|
|
829
|
+
created_by:
|
|
830
|
+
T.nilable(
|
|
831
|
+
Revox::Models::AssistantListResponse::Assistant::CreatedBy
|
|
832
|
+
),
|
|
349
833
|
faq_items:
|
|
350
834
|
T::Array[
|
|
351
835
|
Revox::Models::AssistantListResponse::Assistant::FaqItem
|
|
352
836
|
],
|
|
837
|
+
is_realestate_assistant: T::Boolean,
|
|
353
838
|
pending_faq_count: Float
|
|
354
839
|
}
|
|
355
840
|
)
|
|
@@ -357,30 +842,63 @@ module Revox
|
|
|
357
842
|
def to_hash
|
|
358
843
|
end
|
|
359
844
|
|
|
360
|
-
|
|
361
|
-
# your AI agent is in an office.
|
|
362
|
-
module BackgroundSound
|
|
845
|
+
module AfterCallSMSOutcome
|
|
363
846
|
extend Revox::Internal::Type::Enum
|
|
364
847
|
|
|
365
848
|
TaggedSymbol =
|
|
366
849
|
T.type_alias do
|
|
367
850
|
T.all(
|
|
368
851
|
Symbol,
|
|
369
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
852
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome
|
|
370
853
|
)
|
|
371
854
|
end
|
|
372
855
|
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
373
856
|
|
|
374
|
-
|
|
857
|
+
NOT_INTERESTED =
|
|
375
858
|
T.let(
|
|
376
|
-
:
|
|
377
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
859
|
+
:not_interested,
|
|
860
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
861
|
+
)
|
|
862
|
+
INTERESTED =
|
|
863
|
+
T.let(
|
|
864
|
+
:interested,
|
|
865
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
866
|
+
)
|
|
867
|
+
COMPLETED =
|
|
868
|
+
T.let(
|
|
869
|
+
:completed,
|
|
870
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
871
|
+
)
|
|
872
|
+
REQUESTED_CALLBACK_LATER =
|
|
873
|
+
T.let(
|
|
874
|
+
:requested_callback_later,
|
|
875
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
876
|
+
)
|
|
877
|
+
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
878
|
+
T.let(
|
|
879
|
+
:requested_callback_new_number,
|
|
880
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
881
|
+
)
|
|
882
|
+
DO_NOT_CONTACT =
|
|
883
|
+
T.let(
|
|
884
|
+
:do_not_contact,
|
|
885
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
886
|
+
)
|
|
887
|
+
AI_AVERSE =
|
|
888
|
+
T.let(
|
|
889
|
+
:ai_averse,
|
|
890
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
891
|
+
)
|
|
892
|
+
NONE =
|
|
893
|
+
T.let(
|
|
894
|
+
:none,
|
|
895
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
378
896
|
)
|
|
379
897
|
|
|
380
898
|
sig do
|
|
381
899
|
override.returns(
|
|
382
900
|
T::Array[
|
|
383
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
901
|
+
Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
384
902
|
]
|
|
385
903
|
)
|
|
386
904
|
end
|
|
@@ -388,12 +906,42 @@ module Revox
|
|
|
388
906
|
end
|
|
389
907
|
end
|
|
390
908
|
|
|
391
|
-
|
|
392
|
-
|
|
909
|
+
# Ambient background sound to play during the call. null disables it.
|
|
910
|
+
module BackgroundSound
|
|
911
|
+
extend Revox::Internal::Type::Enum
|
|
912
|
+
|
|
913
|
+
TaggedSymbol =
|
|
393
914
|
T.type_alias do
|
|
394
|
-
T.
|
|
395
|
-
|
|
396
|
-
Revox::
|
|
915
|
+
T.all(
|
|
916
|
+
Symbol,
|
|
917
|
+
Revox::Models::AssistantListResponse::Assistant::BackgroundSound
|
|
918
|
+
)
|
|
919
|
+
end
|
|
920
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
921
|
+
|
|
922
|
+
AUDIO_OFFICE_OGG =
|
|
923
|
+
T.let(
|
|
924
|
+
:"audio/office.ogg",
|
|
925
|
+
Revox::Models::AssistantListResponse::Assistant::BackgroundSound::TaggedSymbol
|
|
926
|
+
)
|
|
927
|
+
|
|
928
|
+
sig do
|
|
929
|
+
override.returns(
|
|
930
|
+
T::Array[
|
|
931
|
+
Revox::Models::AssistantListResponse::Assistant::BackgroundSound::TaggedSymbol
|
|
932
|
+
]
|
|
933
|
+
)
|
|
934
|
+
end
|
|
935
|
+
def self.values
|
|
936
|
+
end
|
|
937
|
+
end
|
|
938
|
+
|
|
939
|
+
class Calendly < Revox::Internal::Type::BaseModel
|
|
940
|
+
OrHash =
|
|
941
|
+
T.type_alias do
|
|
942
|
+
T.any(
|
|
943
|
+
Revox::Models::AssistantListResponse::Assistant::Calendly,
|
|
944
|
+
Revox::Internal::AnyHash
|
|
397
945
|
)
|
|
398
946
|
end
|
|
399
947
|
|
|
@@ -436,6 +984,24 @@ module Revox
|
|
|
436
984
|
)
|
|
437
985
|
end
|
|
438
986
|
|
|
987
|
+
# Days of the week when calls are allowed, in the recipient's timezone. Default:
|
|
988
|
+
# Monday through Friday.
|
|
989
|
+
sig do
|
|
990
|
+
returns(
|
|
991
|
+
T::Array[
|
|
992
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
993
|
+
]
|
|
994
|
+
)
|
|
995
|
+
end
|
|
996
|
+
attr_accessor :allowed_days
|
|
997
|
+
|
|
998
|
+
# If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
|
|
999
|
+
# retry_delay_seconds) when attempt #1 didn't reach a human.
|
|
1000
|
+
# Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
|
|
1001
|
+
# Default: false.
|
|
1002
|
+
sig { returns(T::Boolean) }
|
|
1003
|
+
attr_accessor :call_twice_in_a_row
|
|
1004
|
+
|
|
439
1005
|
sig do
|
|
440
1006
|
returns(
|
|
441
1007
|
T::Array[
|
|
@@ -459,6 +1025,11 @@ module Revox
|
|
|
459
1025
|
# iterations. If not provided, defaults will be used.
|
|
460
1026
|
sig do
|
|
461
1027
|
params(
|
|
1028
|
+
allowed_days:
|
|
1029
|
+
T::Array[
|
|
1030
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::OrSymbol
|
|
1031
|
+
],
|
|
1032
|
+
call_twice_in_a_row: T::Boolean,
|
|
462
1033
|
calling_windows:
|
|
463
1034
|
T::Array[
|
|
464
1035
|
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::CallingWindow::OrHash
|
|
@@ -468,6 +1039,14 @@ module Revox
|
|
|
468
1039
|
).returns(T.attached_class)
|
|
469
1040
|
end
|
|
470
1041
|
def self.new(
|
|
1042
|
+
# Days of the week when calls are allowed, in the recipient's timezone. Default:
|
|
1043
|
+
# Monday through Friday.
|
|
1044
|
+
allowed_days:,
|
|
1045
|
+
# If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
|
|
1046
|
+
# retry_delay_seconds) when attempt #1 didn't reach a human.
|
|
1047
|
+
# Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
|
|
1048
|
+
# Default: false.
|
|
1049
|
+
call_twice_in_a_row:,
|
|
471
1050
|
calling_windows:,
|
|
472
1051
|
# Maximum number of call retry attempts. Default: 3.
|
|
473
1052
|
max_retry_attempts:,
|
|
@@ -481,6 +1060,11 @@ module Revox
|
|
|
481
1060
|
sig do
|
|
482
1061
|
override.returns(
|
|
483
1062
|
{
|
|
1063
|
+
allowed_days:
|
|
1064
|
+
T::Array[
|
|
1065
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1066
|
+
],
|
|
1067
|
+
call_twice_in_a_row: T::Boolean,
|
|
484
1068
|
calling_windows:
|
|
485
1069
|
T::Array[
|
|
486
1070
|
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::CallingWindow
|
|
@@ -493,6 +1077,65 @@ module Revox
|
|
|
493
1077
|
def to_hash
|
|
494
1078
|
end
|
|
495
1079
|
|
|
1080
|
+
module AllowedDay
|
|
1081
|
+
extend Revox::Internal::Type::Enum
|
|
1082
|
+
|
|
1083
|
+
TaggedSymbol =
|
|
1084
|
+
T.type_alias do
|
|
1085
|
+
T.all(
|
|
1086
|
+
Symbol,
|
|
1087
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay
|
|
1088
|
+
)
|
|
1089
|
+
end
|
|
1090
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1091
|
+
|
|
1092
|
+
MONDAY =
|
|
1093
|
+
T.let(
|
|
1094
|
+
:monday,
|
|
1095
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1096
|
+
)
|
|
1097
|
+
TUESDAY =
|
|
1098
|
+
T.let(
|
|
1099
|
+
:tuesday,
|
|
1100
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1101
|
+
)
|
|
1102
|
+
WEDNESDAY =
|
|
1103
|
+
T.let(
|
|
1104
|
+
:wednesday,
|
|
1105
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1106
|
+
)
|
|
1107
|
+
THURSDAY =
|
|
1108
|
+
T.let(
|
|
1109
|
+
:thursday,
|
|
1110
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1111
|
+
)
|
|
1112
|
+
FRIDAY =
|
|
1113
|
+
T.let(
|
|
1114
|
+
:friday,
|
|
1115
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1116
|
+
)
|
|
1117
|
+
SATURDAY =
|
|
1118
|
+
T.let(
|
|
1119
|
+
:saturday,
|
|
1120
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1121
|
+
)
|
|
1122
|
+
SUNDAY =
|
|
1123
|
+
T.let(
|
|
1124
|
+
:sunday,
|
|
1125
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1126
|
+
)
|
|
1127
|
+
|
|
1128
|
+
sig do
|
|
1129
|
+
override.returns(
|
|
1130
|
+
T::Array[
|
|
1131
|
+
Revox::Models::AssistantListResponse::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1132
|
+
]
|
|
1133
|
+
)
|
|
1134
|
+
end
|
|
1135
|
+
def self.values
|
|
1136
|
+
end
|
|
1137
|
+
end
|
|
1138
|
+
|
|
496
1139
|
class CallingWindow < Revox::Internal::Type::BaseModel
|
|
497
1140
|
OrHash =
|
|
498
1141
|
T.type_alias do
|
|
@@ -553,124 +1196,287 @@ module Revox
|
|
|
553
1196
|
end
|
|
554
1197
|
end
|
|
555
1198
|
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
TaggedSymbol =
|
|
1199
|
+
class CustomTool < Revox::Internal::Type::BaseModel
|
|
1200
|
+
OrHash =
|
|
560
1201
|
T.type_alias do
|
|
561
|
-
T.
|
|
562
|
-
|
|
563
|
-
Revox::
|
|
1202
|
+
T.any(
|
|
1203
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool,
|
|
1204
|
+
Revox::Internal::AnyHash
|
|
564
1205
|
)
|
|
565
1206
|
end
|
|
566
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
567
1207
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
1208
|
+
# JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
|
|
1209
|
+
# "{{name}}") for dynamic values
|
|
1210
|
+
sig { returns(T.nilable(String)) }
|
|
1211
|
+
attr_accessor :body_template
|
|
1212
|
+
|
|
1213
|
+
# Human-readable description of what the tool does, used by the LLM to decide when
|
|
1214
|
+
# to call it
|
|
1215
|
+
sig { returns(String) }
|
|
1216
|
+
attr_accessor :description
|
|
1217
|
+
|
|
1218
|
+
# HTTP headers to include in the request. Values support {{variable}} placeholders
|
|
1219
|
+
sig do
|
|
1220
|
+
returns(
|
|
1221
|
+
T::Array[
|
|
1222
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Header
|
|
1223
|
+
]
|
|
572
1224
|
)
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
1225
|
+
end
|
|
1226
|
+
attr_accessor :headers
|
|
1227
|
+
|
|
1228
|
+
# Schema defining the parameters the LLM should extract from the conversation to
|
|
1229
|
+
# pass to this tool
|
|
1230
|
+
sig do
|
|
1231
|
+
returns(
|
|
1232
|
+
T::Array[
|
|
1233
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema
|
|
1234
|
+
]
|
|
577
1235
|
)
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
1236
|
+
end
|
|
1237
|
+
attr_accessor :input_schema
|
|
1238
|
+
|
|
1239
|
+
# HTTP method to use when calling the API endpoint
|
|
1240
|
+
sig do
|
|
1241
|
+
returns(
|
|
1242
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Method::TaggedSymbol
|
|
582
1243
|
)
|
|
1244
|
+
end
|
|
1245
|
+
attr_accessor :method_
|
|
583
1246
|
|
|
1247
|
+
# Unique tool name in lowercase_snake_case (e.g. check_inventory)
|
|
1248
|
+
sig { returns(String) }
|
|
1249
|
+
attr_accessor :name
|
|
1250
|
+
|
|
1251
|
+
# Query string parameters appended to the URL. Values support {{variable}}
|
|
1252
|
+
# placeholders
|
|
584
1253
|
sig do
|
|
585
|
-
|
|
1254
|
+
returns(
|
|
586
1255
|
T::Array[
|
|
587
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
1256
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::QueryParam
|
|
588
1257
|
]
|
|
589
1258
|
)
|
|
590
1259
|
end
|
|
591
|
-
|
|
1260
|
+
attr_accessor :query_params
|
|
1261
|
+
|
|
1262
|
+
# Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
|
|
1263
|
+
# values
|
|
1264
|
+
sig { returns(String) }
|
|
1265
|
+
attr_accessor :url
|
|
1266
|
+
|
|
1267
|
+
sig do
|
|
1268
|
+
params(
|
|
1269
|
+
body_template: T.nilable(String),
|
|
1270
|
+
description: String,
|
|
1271
|
+
headers:
|
|
1272
|
+
T::Array[
|
|
1273
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Header::OrHash
|
|
1274
|
+
],
|
|
1275
|
+
input_schema:
|
|
1276
|
+
T::Array[
|
|
1277
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::OrHash
|
|
1278
|
+
],
|
|
1279
|
+
method_:
|
|
1280
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Method::OrSymbol,
|
|
1281
|
+
name: String,
|
|
1282
|
+
query_params:
|
|
1283
|
+
T::Array[
|
|
1284
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::QueryParam::OrHash
|
|
1285
|
+
],
|
|
1286
|
+
url: String
|
|
1287
|
+
).returns(T.attached_class)
|
|
1288
|
+
end
|
|
1289
|
+
def self.new(
|
|
1290
|
+
# JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
|
|
1291
|
+
# "{{name}}") for dynamic values
|
|
1292
|
+
body_template:,
|
|
1293
|
+
# Human-readable description of what the tool does, used by the LLM to decide when
|
|
1294
|
+
# to call it
|
|
1295
|
+
description:,
|
|
1296
|
+
# HTTP headers to include in the request. Values support {{variable}} placeholders
|
|
1297
|
+
headers:,
|
|
1298
|
+
# Schema defining the parameters the LLM should extract from the conversation to
|
|
1299
|
+
# pass to this tool
|
|
1300
|
+
input_schema:,
|
|
1301
|
+
# HTTP method to use when calling the API endpoint
|
|
1302
|
+
method_:,
|
|
1303
|
+
# Unique tool name in lowercase_snake_case (e.g. check_inventory)
|
|
1304
|
+
name:,
|
|
1305
|
+
# Query string parameters appended to the URL. Values support {{variable}}
|
|
1306
|
+
# placeholders
|
|
1307
|
+
query_params:,
|
|
1308
|
+
# Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
|
|
1309
|
+
# values
|
|
1310
|
+
url:
|
|
1311
|
+
)
|
|
592
1312
|
end
|
|
593
|
-
end
|
|
594
1313
|
|
|
595
|
-
|
|
596
|
-
|
|
1314
|
+
sig do
|
|
1315
|
+
override.returns(
|
|
1316
|
+
{
|
|
1317
|
+
body_template: T.nilable(String),
|
|
1318
|
+
description: String,
|
|
1319
|
+
headers:
|
|
1320
|
+
T::Array[
|
|
1321
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Header
|
|
1322
|
+
],
|
|
1323
|
+
input_schema:
|
|
1324
|
+
T::Array[
|
|
1325
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema
|
|
1326
|
+
],
|
|
1327
|
+
method_:
|
|
1328
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Method::TaggedSymbol,
|
|
1329
|
+
name: String,
|
|
1330
|
+
query_params:
|
|
1331
|
+
T::Array[
|
|
1332
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::QueryParam
|
|
1333
|
+
],
|
|
1334
|
+
url: String
|
|
1335
|
+
}
|
|
1336
|
+
)
|
|
1337
|
+
end
|
|
1338
|
+
def to_hash
|
|
1339
|
+
end
|
|
597
1340
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
T.
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
1341
|
+
class Header < Revox::Internal::Type::BaseModel
|
|
1342
|
+
OrHash =
|
|
1343
|
+
T.type_alias do
|
|
1344
|
+
T.any(
|
|
1345
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Header,
|
|
1346
|
+
Revox::Internal::AnyHash
|
|
1347
|
+
)
|
|
1348
|
+
end
|
|
1349
|
+
|
|
1350
|
+
sig { returns(String) }
|
|
1351
|
+
attr_accessor :key
|
|
1352
|
+
|
|
1353
|
+
sig { returns(String) }
|
|
1354
|
+
attr_accessor :value
|
|
1355
|
+
|
|
1356
|
+
sig { params(key: String, value: String).returns(T.attached_class) }
|
|
1357
|
+
def self.new(key:, value:)
|
|
604
1358
|
end
|
|
605
1359
|
|
|
606
|
-
|
|
1360
|
+
sig { override.returns({ key: String, value: String }) }
|
|
1361
|
+
def to_hash
|
|
1362
|
+
end
|
|
1363
|
+
end
|
|
1364
|
+
|
|
1365
|
+
class InputSchema < Revox::Internal::Type::BaseModel
|
|
607
1366
|
OrHash =
|
|
608
1367
|
T.type_alias do
|
|
609
1368
|
T.any(
|
|
610
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
1369
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema,
|
|
611
1370
|
Revox::Internal::AnyHash
|
|
612
1371
|
)
|
|
613
1372
|
end
|
|
614
1373
|
|
|
1374
|
+
sig { returns(String) }
|
|
1375
|
+
attr_accessor :name
|
|
1376
|
+
|
|
1377
|
+
sig { returns(T::Boolean) }
|
|
1378
|
+
attr_accessor :required
|
|
1379
|
+
|
|
615
1380
|
sig do
|
|
616
1381
|
returns(
|
|
617
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
1382
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
618
1383
|
)
|
|
619
1384
|
end
|
|
620
|
-
attr_accessor :name
|
|
621
|
-
|
|
622
|
-
sig { returns(Symbol) }
|
|
623
1385
|
attr_accessor :type
|
|
624
1386
|
|
|
1387
|
+
sig { returns(T.nilable(String)) }
|
|
1388
|
+
attr_reader :description
|
|
1389
|
+
|
|
1390
|
+
sig { params(description: String).void }
|
|
1391
|
+
attr_writer :description
|
|
1392
|
+
|
|
1393
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
1394
|
+
attr_reader :enum_options
|
|
1395
|
+
|
|
1396
|
+
sig { params(enum_options: T::Array[String]).void }
|
|
1397
|
+
attr_writer :enum_options
|
|
1398
|
+
|
|
625
1399
|
sig do
|
|
626
1400
|
params(
|
|
627
|
-
name:
|
|
628
|
-
|
|
629
|
-
type:
|
|
1401
|
+
name: String,
|
|
1402
|
+
required: T::Boolean,
|
|
1403
|
+
type:
|
|
1404
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type::OrSymbol,
|
|
1405
|
+
description: String,
|
|
1406
|
+
enum_options: T::Array[String]
|
|
630
1407
|
).returns(T.attached_class)
|
|
631
1408
|
end
|
|
632
|
-
def self.new(
|
|
1409
|
+
def self.new(
|
|
1410
|
+
name:,
|
|
1411
|
+
required:,
|
|
1412
|
+
type:,
|
|
1413
|
+
description: nil,
|
|
1414
|
+
enum_options: nil
|
|
1415
|
+
)
|
|
633
1416
|
end
|
|
634
1417
|
|
|
635
1418
|
sig do
|
|
636
1419
|
override.returns(
|
|
637
1420
|
{
|
|
638
|
-
name:
|
|
639
|
-
|
|
640
|
-
type:
|
|
1421
|
+
name: String,
|
|
1422
|
+
required: T::Boolean,
|
|
1423
|
+
type:
|
|
1424
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type::TaggedSymbol,
|
|
1425
|
+
description: String,
|
|
1426
|
+
enum_options: T::Array[String]
|
|
641
1427
|
}
|
|
642
1428
|
)
|
|
643
1429
|
end
|
|
644
1430
|
def to_hash
|
|
645
1431
|
end
|
|
646
1432
|
|
|
647
|
-
module
|
|
1433
|
+
module Type
|
|
648
1434
|
extend Revox::Internal::Type::Enum
|
|
649
1435
|
|
|
650
1436
|
TaggedSymbol =
|
|
651
1437
|
T.type_alias do
|
|
652
1438
|
T.all(
|
|
653
1439
|
Symbol,
|
|
654
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
1440
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type
|
|
655
1441
|
)
|
|
656
1442
|
end
|
|
657
1443
|
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
658
1444
|
|
|
659
|
-
|
|
1445
|
+
STRING =
|
|
660
1446
|
T.let(
|
|
661
|
-
:
|
|
662
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
1447
|
+
:string,
|
|
1448
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
663
1449
|
)
|
|
664
|
-
|
|
1450
|
+
NUMBER =
|
|
665
1451
|
T.let(
|
|
666
|
-
:
|
|
667
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
1452
|
+
:number,
|
|
1453
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
1454
|
+
)
|
|
1455
|
+
BOOLEAN =
|
|
1456
|
+
T.let(
|
|
1457
|
+
:boolean,
|
|
1458
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
1459
|
+
)
|
|
1460
|
+
ENUM =
|
|
1461
|
+
T.let(
|
|
1462
|
+
:enum,
|
|
1463
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
1464
|
+
)
|
|
1465
|
+
DATE =
|
|
1466
|
+
T.let(
|
|
1467
|
+
:date,
|
|
1468
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
1469
|
+
)
|
|
1470
|
+
DATETIME =
|
|
1471
|
+
T.let(
|
|
1472
|
+
:datetime,
|
|
1473
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
668
1474
|
)
|
|
669
1475
|
|
|
670
1476
|
sig do
|
|
671
1477
|
override.returns(
|
|
672
1478
|
T::Array[
|
|
673
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
1479
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
674
1480
|
]
|
|
675
1481
|
)
|
|
676
1482
|
end
|
|
@@ -679,183 +1485,1459 @@ module Revox
|
|
|
679
1485
|
end
|
|
680
1486
|
end
|
|
681
1487
|
|
|
682
|
-
|
|
683
|
-
|
|
1488
|
+
# HTTP method to use when calling the API endpoint
|
|
1489
|
+
module Method
|
|
1490
|
+
extend Revox::Internal::Type::Enum
|
|
1491
|
+
|
|
1492
|
+
TaggedSymbol =
|
|
684
1493
|
T.type_alias do
|
|
685
|
-
T.
|
|
686
|
-
|
|
687
|
-
Revox::
|
|
1494
|
+
T.all(
|
|
1495
|
+
Symbol,
|
|
1496
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Method
|
|
688
1497
|
)
|
|
689
1498
|
end
|
|
1499
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
690
1500
|
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
1501
|
+
GET =
|
|
1502
|
+
T.let(
|
|
1503
|
+
:GET,
|
|
1504
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Method::TaggedSymbol
|
|
1505
|
+
)
|
|
1506
|
+
POST =
|
|
1507
|
+
T.let(
|
|
1508
|
+
:POST,
|
|
1509
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Method::TaggedSymbol
|
|
1510
|
+
)
|
|
1511
|
+
PUT =
|
|
1512
|
+
T.let(
|
|
1513
|
+
:PUT,
|
|
1514
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Method::TaggedSymbol
|
|
1515
|
+
)
|
|
1516
|
+
PATCH =
|
|
1517
|
+
T.let(
|
|
1518
|
+
:PATCH,
|
|
1519
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Method::TaggedSymbol
|
|
1520
|
+
)
|
|
1521
|
+
DELETE =
|
|
1522
|
+
T.let(
|
|
1523
|
+
:DELETE,
|
|
1524
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Method::TaggedSymbol
|
|
1525
|
+
)
|
|
698
1526
|
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
1527
|
+
sig do
|
|
1528
|
+
override.returns(
|
|
1529
|
+
T::Array[
|
|
1530
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::Method::TaggedSymbol
|
|
1531
|
+
]
|
|
1532
|
+
)
|
|
1533
|
+
end
|
|
1534
|
+
def self.values
|
|
1535
|
+
end
|
|
1536
|
+
end
|
|
1537
|
+
|
|
1538
|
+
class QueryParam < Revox::Internal::Type::BaseModel
|
|
1539
|
+
OrHash =
|
|
1540
|
+
T.type_alias do
|
|
1541
|
+
T.any(
|
|
1542
|
+
Revox::Models::AssistantListResponse::Assistant::CustomTool::QueryParam,
|
|
1543
|
+
Revox::Internal::AnyHash
|
|
1544
|
+
)
|
|
1545
|
+
end
|
|
1546
|
+
|
|
1547
|
+
sig { returns(String) }
|
|
1548
|
+
attr_accessor :key
|
|
1549
|
+
|
|
1550
|
+
sig { returns(String) }
|
|
1551
|
+
attr_accessor :value
|
|
1552
|
+
|
|
1553
|
+
sig { params(key: String, value: String).returns(T.attached_class) }
|
|
1554
|
+
def self.new(key:, value:)
|
|
1555
|
+
end
|
|
1556
|
+
|
|
1557
|
+
sig { override.returns({ key: String, value: String }) }
|
|
1558
|
+
def to_hash
|
|
1559
|
+
end
|
|
1560
|
+
end
|
|
1561
|
+
end
|
|
1562
|
+
|
|
1563
|
+
# The language used for the notification email content. One of "en" or "fr".
|
|
1564
|
+
module EmailNotificationLanguage
|
|
1565
|
+
extend Revox::Internal::Type::Enum
|
|
1566
|
+
|
|
1567
|
+
TaggedSymbol =
|
|
1568
|
+
T.type_alias do
|
|
1569
|
+
T.all(
|
|
1570
|
+
Symbol,
|
|
1571
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage
|
|
1572
|
+
)
|
|
1573
|
+
end
|
|
1574
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1575
|
+
|
|
1576
|
+
EN =
|
|
1577
|
+
T.let(
|
|
1578
|
+
:en,
|
|
1579
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
1580
|
+
)
|
|
1581
|
+
FR =
|
|
1582
|
+
T.let(
|
|
1583
|
+
:fr,
|
|
1584
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
1585
|
+
)
|
|
1586
|
+
|
|
1587
|
+
sig do
|
|
1588
|
+
override.returns(
|
|
1589
|
+
T::Array[
|
|
1590
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
1591
|
+
]
|
|
1592
|
+
)
|
|
1593
|
+
end
|
|
1594
|
+
def self.values
|
|
1595
|
+
end
|
|
1596
|
+
end
|
|
1597
|
+
|
|
1598
|
+
module EmailNotificationOutcome
|
|
1599
|
+
extend Revox::Internal::Type::Enum
|
|
1600
|
+
|
|
1601
|
+
TaggedSymbol =
|
|
1602
|
+
T.type_alias do
|
|
1603
|
+
T.all(
|
|
1604
|
+
Symbol,
|
|
1605
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome
|
|
1606
|
+
)
|
|
1607
|
+
end
|
|
1608
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1609
|
+
|
|
1610
|
+
NOT_INTERESTED =
|
|
1611
|
+
T.let(
|
|
1612
|
+
:not_interested,
|
|
1613
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1614
|
+
)
|
|
1615
|
+
INTERESTED =
|
|
1616
|
+
T.let(
|
|
1617
|
+
:interested,
|
|
1618
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1619
|
+
)
|
|
1620
|
+
COMPLETED =
|
|
1621
|
+
T.let(
|
|
1622
|
+
:completed,
|
|
1623
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1624
|
+
)
|
|
1625
|
+
REQUESTED_CALLBACK_LATER =
|
|
1626
|
+
T.let(
|
|
1627
|
+
:requested_callback_later,
|
|
1628
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1629
|
+
)
|
|
1630
|
+
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
1631
|
+
T.let(
|
|
1632
|
+
:requested_callback_new_number,
|
|
1633
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1634
|
+
)
|
|
1635
|
+
DO_NOT_CONTACT =
|
|
1636
|
+
T.let(
|
|
1637
|
+
:do_not_contact,
|
|
1638
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1639
|
+
)
|
|
1640
|
+
AI_AVERSE =
|
|
1641
|
+
T.let(
|
|
1642
|
+
:ai_averse,
|
|
1643
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1644
|
+
)
|
|
1645
|
+
NONE =
|
|
1646
|
+
T.let(
|
|
1647
|
+
:none,
|
|
1648
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1649
|
+
)
|
|
1650
|
+
|
|
1651
|
+
sig do
|
|
1652
|
+
override.returns(
|
|
1653
|
+
T::Array[
|
|
1654
|
+
Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1655
|
+
]
|
|
1656
|
+
)
|
|
1657
|
+
end
|
|
1658
|
+
def self.values
|
|
1659
|
+
end
|
|
1660
|
+
end
|
|
1661
|
+
|
|
1662
|
+
module FirstSentenceMode
|
|
1663
|
+
extend Revox::Internal::Type::Enum
|
|
1664
|
+
|
|
1665
|
+
TaggedSymbol =
|
|
1666
|
+
T.type_alias do
|
|
1667
|
+
T.all(
|
|
1668
|
+
Symbol,
|
|
1669
|
+
Revox::Models::AssistantListResponse::Assistant::FirstSentenceMode
|
|
1670
|
+
)
|
|
1671
|
+
end
|
|
1672
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1673
|
+
|
|
1674
|
+
GENERATED =
|
|
1675
|
+
T.let(
|
|
1676
|
+
:generated,
|
|
1677
|
+
Revox::Models::AssistantListResponse::Assistant::FirstSentenceMode::TaggedSymbol
|
|
1678
|
+
)
|
|
1679
|
+
STATIC =
|
|
1680
|
+
T.let(
|
|
1681
|
+
:static,
|
|
1682
|
+
Revox::Models::AssistantListResponse::Assistant::FirstSentenceMode::TaggedSymbol
|
|
1683
|
+
)
|
|
1684
|
+
NONE =
|
|
1685
|
+
T.let(
|
|
1686
|
+
:none,
|
|
1687
|
+
Revox::Models::AssistantListResponse::Assistant::FirstSentenceMode::TaggedSymbol
|
|
1688
|
+
)
|
|
1689
|
+
|
|
1690
|
+
sig do
|
|
1691
|
+
override.returns(
|
|
1692
|
+
T::Array[
|
|
1693
|
+
Revox::Models::AssistantListResponse::Assistant::FirstSentenceMode::TaggedSymbol
|
|
1694
|
+
]
|
|
1695
|
+
)
|
|
1696
|
+
end
|
|
1697
|
+
def self.values
|
|
1698
|
+
end
|
|
1699
|
+
end
|
|
1700
|
+
|
|
1701
|
+
# Warm or cold transfer when transfer_phone_number is set; null when transfer is
|
|
1702
|
+
# not configured.
|
|
1703
|
+
module HumanTransferMode
|
|
1704
|
+
extend Revox::Internal::Type::Enum
|
|
1705
|
+
|
|
1706
|
+
TaggedSymbol =
|
|
1707
|
+
T.type_alias do
|
|
1708
|
+
T.all(
|
|
1709
|
+
Symbol,
|
|
1710
|
+
Revox::Models::AssistantListResponse::Assistant::HumanTransferMode
|
|
1711
|
+
)
|
|
1712
|
+
end
|
|
1713
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1714
|
+
|
|
1715
|
+
WARM =
|
|
1716
|
+
T.let(
|
|
1717
|
+
:warm,
|
|
1718
|
+
Revox::Models::AssistantListResponse::Assistant::HumanTransferMode::TaggedSymbol
|
|
1719
|
+
)
|
|
1720
|
+
COLD =
|
|
1721
|
+
T.let(
|
|
1722
|
+
:cold,
|
|
1723
|
+
Revox::Models::AssistantListResponse::Assistant::HumanTransferMode::TaggedSymbol
|
|
1724
|
+
)
|
|
1725
|
+
|
|
1726
|
+
sig do
|
|
1727
|
+
override.returns(
|
|
1728
|
+
T::Array[
|
|
1729
|
+
Revox::Models::AssistantListResponse::Assistant::HumanTransferMode::TaggedSymbol
|
|
1730
|
+
]
|
|
1731
|
+
)
|
|
1732
|
+
end
|
|
1733
|
+
def self.values
|
|
1734
|
+
end
|
|
1735
|
+
end
|
|
1736
|
+
|
|
1737
|
+
module LlmModel
|
|
1738
|
+
extend Revox::Internal::Type::Union
|
|
1739
|
+
|
|
1740
|
+
Variants =
|
|
1741
|
+
T.type_alias do
|
|
1742
|
+
T.any(
|
|
1743
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember0,
|
|
1744
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember1,
|
|
1745
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember2,
|
|
1746
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember3
|
|
1747
|
+
)
|
|
1748
|
+
end
|
|
1749
|
+
|
|
1750
|
+
class UnionMember0 < Revox::Internal::Type::BaseModel
|
|
1751
|
+
OrHash =
|
|
1752
|
+
T.type_alias do
|
|
1753
|
+
T.any(
|
|
1754
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember0,
|
|
1755
|
+
Revox::Internal::AnyHash
|
|
1756
|
+
)
|
|
1757
|
+
end
|
|
1758
|
+
|
|
1759
|
+
sig do
|
|
1760
|
+
returns(
|
|
1761
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
|
|
1762
|
+
)
|
|
1763
|
+
end
|
|
1764
|
+
attr_accessor :name
|
|
1765
|
+
|
|
1766
|
+
sig { returns(Symbol) }
|
|
1767
|
+
attr_accessor :type
|
|
702
1768
|
|
|
703
1769
|
sig do
|
|
704
1770
|
params(
|
|
705
|
-
|
|
706
|
-
|
|
1771
|
+
name:
|
|
1772
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember0::Name::OrSymbol,
|
|
707
1773
|
type: Symbol
|
|
708
1774
|
).returns(T.attached_class)
|
|
709
1775
|
end
|
|
710
|
-
def self.new(
|
|
711
|
-
# The model ID to use from OpenRouter. eg: openai/gpt-4.1
|
|
712
|
-
openrouter_model_id:,
|
|
713
|
-
# The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
|
|
714
|
-
openrouter_provider:,
|
|
715
|
-
# Use a model from OpenRouter.
|
|
716
|
-
type: :openrouter
|
|
717
|
-
)
|
|
1776
|
+
def self.new(name:, type: :"dedicated-instance")
|
|
718
1777
|
end
|
|
719
1778
|
|
|
720
1779
|
sig do
|
|
721
1780
|
override.returns(
|
|
722
1781
|
{
|
|
723
|
-
|
|
724
|
-
|
|
1782
|
+
name:
|
|
1783
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol,
|
|
725
1784
|
type: Symbol
|
|
726
1785
|
}
|
|
727
1786
|
)
|
|
728
1787
|
end
|
|
729
1788
|
def to_hash
|
|
730
1789
|
end
|
|
1790
|
+
|
|
1791
|
+
module Name
|
|
1792
|
+
extend Revox::Internal::Type::Enum
|
|
1793
|
+
|
|
1794
|
+
TaggedSymbol =
|
|
1795
|
+
T.type_alias do
|
|
1796
|
+
T.all(
|
|
1797
|
+
Symbol,
|
|
1798
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember0::Name
|
|
1799
|
+
)
|
|
1800
|
+
end
|
|
1801
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1802
|
+
|
|
1803
|
+
GPT_4_1 =
|
|
1804
|
+
T.let(
|
|
1805
|
+
:"gpt-4.1",
|
|
1806
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
|
|
1807
|
+
)
|
|
1808
|
+
MINISTRAL_3_8B_INSTRUCT =
|
|
1809
|
+
T.let(
|
|
1810
|
+
:"ministral-3-8b-instruct",
|
|
1811
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
|
|
1812
|
+
)
|
|
1813
|
+
|
|
1814
|
+
sig do
|
|
1815
|
+
override.returns(
|
|
1816
|
+
T::Array[
|
|
1817
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
|
|
1818
|
+
]
|
|
1819
|
+
)
|
|
1820
|
+
end
|
|
1821
|
+
def self.values
|
|
1822
|
+
end
|
|
1823
|
+
end
|
|
731
1824
|
end
|
|
732
1825
|
|
|
1826
|
+
class UnionMember1 < Revox::Internal::Type::BaseModel
|
|
1827
|
+
OrHash =
|
|
1828
|
+
T.type_alias do
|
|
1829
|
+
T.any(
|
|
1830
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember1,
|
|
1831
|
+
Revox::Internal::AnyHash
|
|
1832
|
+
)
|
|
1833
|
+
end
|
|
1834
|
+
|
|
1835
|
+
# The model ID to use from OpenRouter. eg: openai/gpt-4.1
|
|
1836
|
+
sig { returns(String) }
|
|
1837
|
+
attr_accessor :openrouter_model_id
|
|
1838
|
+
|
|
1839
|
+
# The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
|
|
1840
|
+
sig { returns(String) }
|
|
1841
|
+
attr_accessor :openrouter_provider
|
|
1842
|
+
|
|
1843
|
+
# Use a model from OpenRouter.
|
|
1844
|
+
sig { returns(Symbol) }
|
|
1845
|
+
attr_accessor :type
|
|
1846
|
+
|
|
1847
|
+
sig do
|
|
1848
|
+
params(
|
|
1849
|
+
openrouter_model_id: String,
|
|
1850
|
+
openrouter_provider: String,
|
|
1851
|
+
type: Symbol
|
|
1852
|
+
).returns(T.attached_class)
|
|
1853
|
+
end
|
|
1854
|
+
def self.new(
|
|
1855
|
+
# The model ID to use from OpenRouter. eg: openai/gpt-4.1
|
|
1856
|
+
openrouter_model_id:,
|
|
1857
|
+
# The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
|
|
1858
|
+
openrouter_provider:,
|
|
1859
|
+
# Use a model from OpenRouter.
|
|
1860
|
+
type: :openrouter
|
|
1861
|
+
)
|
|
1862
|
+
end
|
|
1863
|
+
|
|
1864
|
+
sig do
|
|
1865
|
+
override.returns(
|
|
1866
|
+
{
|
|
1867
|
+
openrouter_model_id: String,
|
|
1868
|
+
openrouter_provider: String,
|
|
1869
|
+
type: Symbol
|
|
1870
|
+
}
|
|
1871
|
+
)
|
|
1872
|
+
end
|
|
1873
|
+
def to_hash
|
|
1874
|
+
end
|
|
1875
|
+
end
|
|
1876
|
+
|
|
1877
|
+
class UnionMember2 < Revox::Internal::Type::BaseModel
|
|
1878
|
+
OrHash =
|
|
1879
|
+
T.type_alias do
|
|
1880
|
+
T.any(
|
|
1881
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember2,
|
|
1882
|
+
Revox::Internal::AnyHash
|
|
1883
|
+
)
|
|
1884
|
+
end
|
|
1885
|
+
|
|
1886
|
+
# API key sent as Bearer token to the custom endpoint.
|
|
1887
|
+
sig { returns(String) }
|
|
1888
|
+
attr_accessor :api_key
|
|
1889
|
+
|
|
1890
|
+
# Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
|
|
1891
|
+
sig { returns(String) }
|
|
1892
|
+
attr_accessor :api_url
|
|
1893
|
+
|
|
1894
|
+
# Model name as expected by the provider, e.g. meta-llama/llama-3-70b
|
|
1895
|
+
sig { returns(String) }
|
|
1896
|
+
attr_accessor :model_name
|
|
1897
|
+
|
|
1898
|
+
# OpenAI-compatible chat completions API (bring your own endpoint and key).
|
|
1899
|
+
sig { returns(Symbol) }
|
|
1900
|
+
attr_accessor :type
|
|
1901
|
+
|
|
1902
|
+
sig do
|
|
1903
|
+
params(
|
|
1904
|
+
api_key: String,
|
|
1905
|
+
api_url: String,
|
|
1906
|
+
model_name: String,
|
|
1907
|
+
type: Symbol
|
|
1908
|
+
).returns(T.attached_class)
|
|
1909
|
+
end
|
|
1910
|
+
def self.new(
|
|
1911
|
+
# API key sent as Bearer token to the custom endpoint.
|
|
1912
|
+
api_key:,
|
|
1913
|
+
# Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
|
|
1914
|
+
api_url:,
|
|
1915
|
+
# Model name as expected by the provider, e.g. meta-llama/llama-3-70b
|
|
1916
|
+
model_name:,
|
|
1917
|
+
# OpenAI-compatible chat completions API (bring your own endpoint and key).
|
|
1918
|
+
type: :custom
|
|
1919
|
+
)
|
|
1920
|
+
end
|
|
1921
|
+
|
|
1922
|
+
sig do
|
|
1923
|
+
override.returns(
|
|
1924
|
+
{
|
|
1925
|
+
api_key: String,
|
|
1926
|
+
api_url: String,
|
|
1927
|
+
model_name: String,
|
|
1928
|
+
type: Symbol
|
|
1929
|
+
}
|
|
1930
|
+
)
|
|
1931
|
+
end
|
|
1932
|
+
def to_hash
|
|
1933
|
+
end
|
|
1934
|
+
end
|
|
1935
|
+
|
|
1936
|
+
class UnionMember3 < Revox::Internal::Type::BaseModel
|
|
1937
|
+
OrHash =
|
|
1938
|
+
T.type_alias do
|
|
1939
|
+
T.any(
|
|
1940
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember3,
|
|
1941
|
+
Revox::Internal::AnyHash
|
|
1942
|
+
)
|
|
1943
|
+
end
|
|
1944
|
+
|
|
1945
|
+
# The provider to use from Realtime. eg: openai, google.
|
|
1946
|
+
sig do
|
|
1947
|
+
returns(
|
|
1948
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember3::Provider::TaggedSymbol
|
|
1949
|
+
)
|
|
1950
|
+
end
|
|
1951
|
+
attr_accessor :provider
|
|
1952
|
+
|
|
1953
|
+
# The model ID to use from Realtime. eg: gpt-4.1
|
|
1954
|
+
sig { returns(String) }
|
|
1955
|
+
attr_accessor :realtime_model_id
|
|
1956
|
+
|
|
1957
|
+
# Use a model from Realtime.
|
|
1958
|
+
sig { returns(Symbol) }
|
|
1959
|
+
attr_accessor :type
|
|
1960
|
+
|
|
1961
|
+
# Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
|
|
1962
|
+
sig { returns(T.nilable(String)) }
|
|
1963
|
+
attr_reader :realtime_voice_id
|
|
1964
|
+
|
|
1965
|
+
sig { params(realtime_voice_id: String).void }
|
|
1966
|
+
attr_writer :realtime_voice_id
|
|
1967
|
+
|
|
1968
|
+
sig do
|
|
1969
|
+
params(
|
|
1970
|
+
provider:
|
|
1971
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember3::Provider::OrSymbol,
|
|
1972
|
+
realtime_model_id: String,
|
|
1973
|
+
realtime_voice_id: String,
|
|
1974
|
+
type: Symbol
|
|
1975
|
+
).returns(T.attached_class)
|
|
1976
|
+
end
|
|
1977
|
+
def self.new(
|
|
1978
|
+
# The provider to use from Realtime. eg: openai, google.
|
|
1979
|
+
provider:,
|
|
1980
|
+
# The model ID to use from Realtime. eg: gpt-4.1
|
|
1981
|
+
realtime_model_id:,
|
|
1982
|
+
# Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
|
|
1983
|
+
realtime_voice_id: nil,
|
|
1984
|
+
# Use a model from Realtime.
|
|
1985
|
+
type: :realtime
|
|
1986
|
+
)
|
|
1987
|
+
end
|
|
1988
|
+
|
|
1989
|
+
sig do
|
|
1990
|
+
override.returns(
|
|
1991
|
+
{
|
|
1992
|
+
provider:
|
|
1993
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember3::Provider::TaggedSymbol,
|
|
1994
|
+
realtime_model_id: String,
|
|
1995
|
+
type: Symbol,
|
|
1996
|
+
realtime_voice_id: String
|
|
1997
|
+
}
|
|
1998
|
+
)
|
|
1999
|
+
end
|
|
2000
|
+
def to_hash
|
|
2001
|
+
end
|
|
2002
|
+
|
|
2003
|
+
# The provider to use from Realtime. eg: openai, google.
|
|
2004
|
+
module Provider
|
|
2005
|
+
extend Revox::Internal::Type::Enum
|
|
2006
|
+
|
|
2007
|
+
TaggedSymbol =
|
|
2008
|
+
T.type_alias do
|
|
2009
|
+
T.all(
|
|
2010
|
+
Symbol,
|
|
2011
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember3::Provider
|
|
2012
|
+
)
|
|
2013
|
+
end
|
|
2014
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2015
|
+
|
|
2016
|
+
OPENAI =
|
|
2017
|
+
T.let(
|
|
2018
|
+
:openai,
|
|
2019
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember3::Provider::TaggedSymbol
|
|
2020
|
+
)
|
|
2021
|
+
GOOGLE =
|
|
2022
|
+
T.let(
|
|
2023
|
+
:google,
|
|
2024
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember3::Provider::TaggedSymbol
|
|
2025
|
+
)
|
|
2026
|
+
|
|
2027
|
+
sig do
|
|
2028
|
+
override.returns(
|
|
2029
|
+
T::Array[
|
|
2030
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::UnionMember3::Provider::TaggedSymbol
|
|
2031
|
+
]
|
|
2032
|
+
)
|
|
2033
|
+
end
|
|
2034
|
+
def self.values
|
|
2035
|
+
end
|
|
2036
|
+
end
|
|
2037
|
+
end
|
|
2038
|
+
|
|
2039
|
+
sig do
|
|
2040
|
+
override.returns(
|
|
2041
|
+
T::Array[
|
|
2042
|
+
Revox::Models::AssistantListResponse::Assistant::LlmModel::Variants
|
|
2043
|
+
]
|
|
2044
|
+
)
|
|
2045
|
+
end
|
|
2046
|
+
def self.variants
|
|
2047
|
+
end
|
|
2048
|
+
end
|
|
2049
|
+
|
|
2050
|
+
class Position < Revox::Internal::Type::BaseModel
|
|
2051
|
+
OrHash =
|
|
2052
|
+
T.type_alias do
|
|
2053
|
+
T.any(
|
|
2054
|
+
Revox::Models::AssistantListResponse::Assistant::Position,
|
|
2055
|
+
Revox::Internal::AnyHash
|
|
2056
|
+
)
|
|
2057
|
+
end
|
|
2058
|
+
|
|
2059
|
+
sig { returns(Float) }
|
|
2060
|
+
attr_accessor :x
|
|
2061
|
+
|
|
2062
|
+
sig { returns(Float) }
|
|
2063
|
+
attr_accessor :y_
|
|
2064
|
+
|
|
2065
|
+
sig { params(x: Float, y_: Float).returns(T.attached_class) }
|
|
2066
|
+
def self.new(x:, y_:)
|
|
2067
|
+
end
|
|
2068
|
+
|
|
2069
|
+
sig { override.returns({ x: Float, y_: Float }) }
|
|
2070
|
+
def to_hash
|
|
2071
|
+
end
|
|
2072
|
+
end
|
|
2073
|
+
|
|
2074
|
+
class PromptFlow < Revox::Internal::Type::BaseModel
|
|
2075
|
+
OrHash =
|
|
2076
|
+
T.type_alias do
|
|
2077
|
+
T.any(
|
|
2078
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow,
|
|
2079
|
+
Revox::Internal::AnyHash
|
|
2080
|
+
)
|
|
2081
|
+
end
|
|
2082
|
+
|
|
2083
|
+
sig do
|
|
2084
|
+
returns(
|
|
2085
|
+
T::Array[
|
|
2086
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Edge
|
|
2087
|
+
]
|
|
2088
|
+
)
|
|
2089
|
+
end
|
|
2090
|
+
attr_accessor :edges
|
|
2091
|
+
|
|
2092
|
+
sig do
|
|
2093
|
+
returns(
|
|
2094
|
+
T::Array[
|
|
2095
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node
|
|
2096
|
+
]
|
|
2097
|
+
)
|
|
2098
|
+
end
|
|
2099
|
+
attr_accessor :nodes
|
|
2100
|
+
|
|
2101
|
+
sig do
|
|
2102
|
+
params(
|
|
2103
|
+
edges:
|
|
2104
|
+
T::Array[
|
|
2105
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Edge::OrHash
|
|
2106
|
+
],
|
|
2107
|
+
nodes:
|
|
2108
|
+
T::Array[
|
|
2109
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::OrHash
|
|
2110
|
+
]
|
|
2111
|
+
).returns(T.attached_class)
|
|
2112
|
+
end
|
|
2113
|
+
def self.new(edges:, nodes:)
|
|
2114
|
+
end
|
|
2115
|
+
|
|
2116
|
+
sig do
|
|
2117
|
+
override.returns(
|
|
2118
|
+
{
|
|
2119
|
+
edges:
|
|
2120
|
+
T::Array[
|
|
2121
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Edge
|
|
2122
|
+
],
|
|
2123
|
+
nodes:
|
|
2124
|
+
T::Array[
|
|
2125
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node
|
|
2126
|
+
]
|
|
2127
|
+
}
|
|
2128
|
+
)
|
|
2129
|
+
end
|
|
2130
|
+
def to_hash
|
|
2131
|
+
end
|
|
2132
|
+
|
|
2133
|
+
class Edge < Revox::Internal::Type::BaseModel
|
|
2134
|
+
OrHash =
|
|
2135
|
+
T.type_alias do
|
|
2136
|
+
T.any(
|
|
2137
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Edge,
|
|
2138
|
+
Revox::Internal::AnyHash
|
|
2139
|
+
)
|
|
2140
|
+
end
|
|
2141
|
+
|
|
2142
|
+
sig { returns(String) }
|
|
2143
|
+
attr_accessor :id
|
|
2144
|
+
|
|
2145
|
+
sig { returns(String) }
|
|
2146
|
+
attr_accessor :source
|
|
2147
|
+
|
|
2148
|
+
sig { returns(String) }
|
|
2149
|
+
attr_accessor :target
|
|
2150
|
+
|
|
2151
|
+
sig do
|
|
2152
|
+
params(id: String, source: String, target: String).returns(
|
|
2153
|
+
T.attached_class
|
|
2154
|
+
)
|
|
2155
|
+
end
|
|
2156
|
+
def self.new(id:, source:, target:)
|
|
2157
|
+
end
|
|
2158
|
+
|
|
2159
|
+
sig do
|
|
2160
|
+
override.returns({ id: String, source: String, target: String })
|
|
2161
|
+
end
|
|
2162
|
+
def to_hash
|
|
2163
|
+
end
|
|
2164
|
+
end
|
|
2165
|
+
|
|
2166
|
+
class Node < Revox::Internal::Type::BaseModel
|
|
2167
|
+
OrHash =
|
|
2168
|
+
T.type_alias do
|
|
2169
|
+
T.any(
|
|
2170
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node,
|
|
2171
|
+
Revox::Internal::AnyHash
|
|
2172
|
+
)
|
|
2173
|
+
end
|
|
2174
|
+
|
|
2175
|
+
sig { returns(String) }
|
|
2176
|
+
attr_accessor :id
|
|
2177
|
+
|
|
2178
|
+
sig do
|
|
2179
|
+
returns(
|
|
2180
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::Data
|
|
2181
|
+
)
|
|
2182
|
+
end
|
|
2183
|
+
attr_reader :data
|
|
2184
|
+
|
|
2185
|
+
sig do
|
|
2186
|
+
params(
|
|
2187
|
+
data:
|
|
2188
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::Data::OrHash
|
|
2189
|
+
).void
|
|
2190
|
+
end
|
|
2191
|
+
attr_writer :data
|
|
2192
|
+
|
|
2193
|
+
sig do
|
|
2194
|
+
returns(
|
|
2195
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::Position
|
|
2196
|
+
)
|
|
2197
|
+
end
|
|
2198
|
+
attr_reader :position
|
|
2199
|
+
|
|
2200
|
+
sig do
|
|
2201
|
+
params(
|
|
2202
|
+
position:
|
|
2203
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::Position::OrHash
|
|
2204
|
+
).void
|
|
2205
|
+
end
|
|
2206
|
+
attr_writer :position
|
|
2207
|
+
|
|
2208
|
+
sig { returns(Symbol) }
|
|
2209
|
+
attr_accessor :type
|
|
2210
|
+
|
|
2211
|
+
sig do
|
|
2212
|
+
params(
|
|
2213
|
+
id: String,
|
|
2214
|
+
data:
|
|
2215
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::Data::OrHash,
|
|
2216
|
+
position:
|
|
2217
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::Position::OrHash,
|
|
2218
|
+
type: Symbol
|
|
2219
|
+
).returns(T.attached_class)
|
|
2220
|
+
end
|
|
2221
|
+
def self.new(id:, data:, position:, type: :promptBlock)
|
|
2222
|
+
end
|
|
2223
|
+
|
|
2224
|
+
sig do
|
|
2225
|
+
override.returns(
|
|
2226
|
+
{
|
|
2227
|
+
id: String,
|
|
2228
|
+
data:
|
|
2229
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::Data,
|
|
2230
|
+
position:
|
|
2231
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::Position,
|
|
2232
|
+
type: Symbol
|
|
2233
|
+
}
|
|
2234
|
+
)
|
|
2235
|
+
end
|
|
2236
|
+
def to_hash
|
|
2237
|
+
end
|
|
2238
|
+
|
|
2239
|
+
class Data < Revox::Internal::Type::BaseModel
|
|
2240
|
+
OrHash =
|
|
2241
|
+
T.type_alias do
|
|
2242
|
+
T.any(
|
|
2243
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::Data,
|
|
2244
|
+
Revox::Internal::AnyHash
|
|
2245
|
+
)
|
|
2246
|
+
end
|
|
2247
|
+
|
|
2248
|
+
sig { returns(String) }
|
|
2249
|
+
attr_accessor :body
|
|
2250
|
+
|
|
2251
|
+
sig { returns(String) }
|
|
2252
|
+
attr_accessor :title
|
|
2253
|
+
|
|
2254
|
+
sig do
|
|
2255
|
+
params(body: String, title: String).returns(T.attached_class)
|
|
2256
|
+
end
|
|
2257
|
+
def self.new(body:, title:)
|
|
2258
|
+
end
|
|
2259
|
+
|
|
2260
|
+
sig { override.returns({ body: String, title: String }) }
|
|
2261
|
+
def to_hash
|
|
2262
|
+
end
|
|
2263
|
+
end
|
|
2264
|
+
|
|
2265
|
+
class Position < Revox::Internal::Type::BaseModel
|
|
2266
|
+
OrHash =
|
|
2267
|
+
T.type_alias do
|
|
2268
|
+
T.any(
|
|
2269
|
+
Revox::Models::AssistantListResponse::Assistant::PromptFlow::Node::Position,
|
|
2270
|
+
Revox::Internal::AnyHash
|
|
2271
|
+
)
|
|
2272
|
+
end
|
|
2273
|
+
|
|
2274
|
+
sig { returns(Float) }
|
|
2275
|
+
attr_accessor :x
|
|
2276
|
+
|
|
2277
|
+
sig { returns(Float) }
|
|
2278
|
+
attr_accessor :y_
|
|
2279
|
+
|
|
2280
|
+
sig { params(x: Float, y_: Float).returns(T.attached_class) }
|
|
2281
|
+
def self.new(x:, y_:)
|
|
2282
|
+
end
|
|
2283
|
+
|
|
2284
|
+
sig { override.returns({ x: Float, y_: Float }) }
|
|
2285
|
+
def to_hash
|
|
2286
|
+
end
|
|
2287
|
+
end
|
|
2288
|
+
end
|
|
2289
|
+
end
|
|
2290
|
+
|
|
2291
|
+
class Slack < Revox::Internal::Type::BaseModel
|
|
2292
|
+
OrHash =
|
|
2293
|
+
T.type_alias do
|
|
2294
|
+
T.any(
|
|
2295
|
+
Revox::Models::AssistantListResponse::Assistant::Slack,
|
|
2296
|
+
Revox::Internal::AnyHash
|
|
2297
|
+
)
|
|
2298
|
+
end
|
|
2299
|
+
|
|
2300
|
+
# The Slack channel ID where the notification will be posted.
|
|
2301
|
+
sig { returns(String) }
|
|
2302
|
+
attr_accessor :channel_id
|
|
2303
|
+
|
|
2304
|
+
# The Nango connection ID linking the org's Slack workspace to Revox.
|
|
2305
|
+
sig { returns(String) }
|
|
2306
|
+
attr_accessor :connection_id
|
|
2307
|
+
|
|
2308
|
+
# Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
|
|
2309
|
+
# Use 'none' to notify when outcome is null.
|
|
2310
|
+
sig do
|
|
2311
|
+
returns(
|
|
2312
|
+
T::Array[
|
|
2313
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2314
|
+
]
|
|
2315
|
+
)
|
|
2316
|
+
end
|
|
2317
|
+
attr_accessor :outcomes
|
|
2318
|
+
|
|
2319
|
+
# Human-readable Slack channel name, cached for display in the UI.
|
|
2320
|
+
sig { returns(T.nilable(String)) }
|
|
2321
|
+
attr_accessor :channel_name
|
|
2322
|
+
|
|
2323
|
+
# Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2324
|
+
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
|
|
2325
|
+
# {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
|
|
2326
|
+
# prompt_variables and structured_output keys. When null/empty a default template
|
|
2327
|
+
# is used.
|
|
2328
|
+
sig { returns(T.nilable(String)) }
|
|
2329
|
+
attr_accessor :template
|
|
2330
|
+
|
|
2331
|
+
sig do
|
|
2332
|
+
params(
|
|
2333
|
+
channel_id: String,
|
|
2334
|
+
connection_id: String,
|
|
2335
|
+
outcomes:
|
|
2336
|
+
T::Array[
|
|
2337
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::OrSymbol
|
|
2338
|
+
],
|
|
2339
|
+
channel_name: T.nilable(String),
|
|
2340
|
+
template: T.nilable(String)
|
|
2341
|
+
).returns(T.attached_class)
|
|
2342
|
+
end
|
|
2343
|
+
def self.new(
|
|
2344
|
+
# The Slack channel ID where the notification will be posted.
|
|
2345
|
+
channel_id:,
|
|
2346
|
+
# The Nango connection ID linking the org's Slack workspace to Revox.
|
|
2347
|
+
connection_id:,
|
|
2348
|
+
# Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
|
|
2349
|
+
# Use 'none' to notify when outcome is null.
|
|
2350
|
+
outcomes:,
|
|
2351
|
+
# Human-readable Slack channel name, cached for display in the UI.
|
|
2352
|
+
channel_name: nil,
|
|
2353
|
+
# Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2354
|
+
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
|
|
2355
|
+
# {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
|
|
2356
|
+
# prompt_variables and structured_output keys. When null/empty a default template
|
|
2357
|
+
# is used.
|
|
2358
|
+
template: nil
|
|
2359
|
+
)
|
|
2360
|
+
end
|
|
2361
|
+
|
|
2362
|
+
sig do
|
|
2363
|
+
override.returns(
|
|
2364
|
+
{
|
|
2365
|
+
channel_id: String,
|
|
2366
|
+
connection_id: String,
|
|
2367
|
+
outcomes:
|
|
2368
|
+
T::Array[
|
|
2369
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2370
|
+
],
|
|
2371
|
+
channel_name: T.nilable(String),
|
|
2372
|
+
template: T.nilable(String)
|
|
2373
|
+
}
|
|
2374
|
+
)
|
|
2375
|
+
end
|
|
2376
|
+
def to_hash
|
|
2377
|
+
end
|
|
2378
|
+
|
|
2379
|
+
module Outcome
|
|
2380
|
+
extend Revox::Internal::Type::Enum
|
|
2381
|
+
|
|
2382
|
+
TaggedSymbol =
|
|
2383
|
+
T.type_alias do
|
|
2384
|
+
T.all(
|
|
2385
|
+
Symbol,
|
|
2386
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome
|
|
2387
|
+
)
|
|
2388
|
+
end
|
|
2389
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2390
|
+
|
|
2391
|
+
NOT_INTERESTED =
|
|
2392
|
+
T.let(
|
|
2393
|
+
:not_interested,
|
|
2394
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2395
|
+
)
|
|
2396
|
+
INTERESTED =
|
|
2397
|
+
T.let(
|
|
2398
|
+
:interested,
|
|
2399
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2400
|
+
)
|
|
2401
|
+
COMPLETED =
|
|
2402
|
+
T.let(
|
|
2403
|
+
:completed,
|
|
2404
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2405
|
+
)
|
|
2406
|
+
REQUESTED_CALLBACK_LATER =
|
|
2407
|
+
T.let(
|
|
2408
|
+
:requested_callback_later,
|
|
2409
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2410
|
+
)
|
|
2411
|
+
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
2412
|
+
T.let(
|
|
2413
|
+
:requested_callback_new_number,
|
|
2414
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2415
|
+
)
|
|
2416
|
+
DO_NOT_CONTACT =
|
|
2417
|
+
T.let(
|
|
2418
|
+
:do_not_contact,
|
|
2419
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2420
|
+
)
|
|
2421
|
+
AI_AVERSE =
|
|
2422
|
+
T.let(
|
|
2423
|
+
:ai_averse,
|
|
2424
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2425
|
+
)
|
|
2426
|
+
NONE =
|
|
2427
|
+
T.let(
|
|
2428
|
+
:none,
|
|
2429
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2430
|
+
)
|
|
2431
|
+
|
|
2432
|
+
sig do
|
|
2433
|
+
override.returns(
|
|
2434
|
+
T::Array[
|
|
2435
|
+
Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
|
|
2436
|
+
]
|
|
2437
|
+
)
|
|
2438
|
+
end
|
|
2439
|
+
def self.values
|
|
2440
|
+
end
|
|
2441
|
+
end
|
|
2442
|
+
end
|
|
2443
|
+
|
|
2444
|
+
class StructuredOutputConfig < Revox::Internal::Type::BaseModel
|
|
2445
|
+
OrHash =
|
|
2446
|
+
T.type_alias do
|
|
2447
|
+
T.any(
|
|
2448
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig,
|
|
2449
|
+
Revox::Internal::AnyHash
|
|
2450
|
+
)
|
|
2451
|
+
end
|
|
2452
|
+
|
|
2453
|
+
sig { returns(String) }
|
|
2454
|
+
attr_accessor :name
|
|
2455
|
+
|
|
2456
|
+
sig { returns(T::Boolean) }
|
|
2457
|
+
attr_accessor :required
|
|
2458
|
+
|
|
2459
|
+
sig do
|
|
2460
|
+
returns(
|
|
2461
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2462
|
+
)
|
|
2463
|
+
end
|
|
2464
|
+
attr_accessor :type
|
|
2465
|
+
|
|
2466
|
+
sig { returns(T.nilable(String)) }
|
|
2467
|
+
attr_reader :description
|
|
2468
|
+
|
|
2469
|
+
sig { params(description: String).void }
|
|
2470
|
+
attr_writer :description
|
|
2471
|
+
|
|
2472
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
2473
|
+
attr_reader :enum_options
|
|
2474
|
+
|
|
2475
|
+
sig { params(enum_options: T::Array[String]).void }
|
|
2476
|
+
attr_writer :enum_options
|
|
2477
|
+
|
|
2478
|
+
sig do
|
|
2479
|
+
params(
|
|
2480
|
+
name: String,
|
|
2481
|
+
required: T::Boolean,
|
|
2482
|
+
type:
|
|
2483
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::OrSymbol,
|
|
2484
|
+
description: String,
|
|
2485
|
+
enum_options: T::Array[String]
|
|
2486
|
+
).returns(T.attached_class)
|
|
2487
|
+
end
|
|
2488
|
+
def self.new(
|
|
2489
|
+
name:,
|
|
2490
|
+
required:,
|
|
2491
|
+
type:,
|
|
2492
|
+
description: nil,
|
|
2493
|
+
enum_options: nil
|
|
2494
|
+
)
|
|
2495
|
+
end
|
|
2496
|
+
|
|
2497
|
+
sig do
|
|
2498
|
+
override.returns(
|
|
2499
|
+
{
|
|
2500
|
+
name: String,
|
|
2501
|
+
required: T::Boolean,
|
|
2502
|
+
type:
|
|
2503
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::TaggedSymbol,
|
|
2504
|
+
description: String,
|
|
2505
|
+
enum_options: T::Array[String]
|
|
2506
|
+
}
|
|
2507
|
+
)
|
|
2508
|
+
end
|
|
2509
|
+
def to_hash
|
|
2510
|
+
end
|
|
2511
|
+
|
|
2512
|
+
module Type
|
|
2513
|
+
extend Revox::Internal::Type::Enum
|
|
2514
|
+
|
|
2515
|
+
TaggedSymbol =
|
|
2516
|
+
T.type_alias do
|
|
2517
|
+
T.all(
|
|
2518
|
+
Symbol,
|
|
2519
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type
|
|
2520
|
+
)
|
|
2521
|
+
end
|
|
2522
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2523
|
+
|
|
2524
|
+
STRING =
|
|
2525
|
+
T.let(
|
|
2526
|
+
:string,
|
|
2527
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2528
|
+
)
|
|
2529
|
+
NUMBER =
|
|
2530
|
+
T.let(
|
|
2531
|
+
:number,
|
|
2532
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2533
|
+
)
|
|
2534
|
+
BOOLEAN =
|
|
2535
|
+
T.let(
|
|
2536
|
+
:boolean,
|
|
2537
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2538
|
+
)
|
|
2539
|
+
ENUM =
|
|
2540
|
+
T.let(
|
|
2541
|
+
:enum,
|
|
2542
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2543
|
+
)
|
|
2544
|
+
DATE =
|
|
2545
|
+
T.let(
|
|
2546
|
+
:date,
|
|
2547
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2548
|
+
)
|
|
2549
|
+
DATETIME =
|
|
2550
|
+
T.let(
|
|
2551
|
+
:datetime,
|
|
2552
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2553
|
+
)
|
|
2554
|
+
|
|
2555
|
+
sig do
|
|
2556
|
+
override.returns(
|
|
2557
|
+
T::Array[
|
|
2558
|
+
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2559
|
+
]
|
|
2560
|
+
)
|
|
2561
|
+
end
|
|
2562
|
+
def self.values
|
|
2563
|
+
end
|
|
2564
|
+
end
|
|
2565
|
+
end
|
|
2566
|
+
|
|
2567
|
+
class SttContext < Revox::Internal::Type::BaseModel
|
|
2568
|
+
OrHash =
|
|
2569
|
+
T.type_alias do
|
|
2570
|
+
T.any(
|
|
2571
|
+
Revox::Models::AssistantListResponse::Assistant::SttContext,
|
|
2572
|
+
Revox::Internal::AnyHash
|
|
2573
|
+
)
|
|
2574
|
+
end
|
|
2575
|
+
|
|
2576
|
+
sig do
|
|
2577
|
+
returns(
|
|
2578
|
+
T::Array[
|
|
2579
|
+
Revox::Models::AssistantListResponse::Assistant::SttContext::General
|
|
2580
|
+
]
|
|
2581
|
+
)
|
|
2582
|
+
end
|
|
2583
|
+
attr_accessor :general
|
|
2584
|
+
|
|
2585
|
+
sig { returns(T::Array[String]) }
|
|
2586
|
+
attr_accessor :terms
|
|
2587
|
+
|
|
2588
|
+
# Assistant-level speech-to-text context: structured `general` key/value pairs
|
|
2589
|
+
# plus a list of domain `terms`. Prompt-derived context is merged in without
|
|
2590
|
+
# replacing existing entries.
|
|
2591
|
+
sig do
|
|
2592
|
+
params(
|
|
2593
|
+
general:
|
|
2594
|
+
T::Array[
|
|
2595
|
+
Revox::Models::AssistantListResponse::Assistant::SttContext::General::OrHash
|
|
2596
|
+
],
|
|
2597
|
+
terms: T::Array[String]
|
|
2598
|
+
).returns(T.attached_class)
|
|
2599
|
+
end
|
|
2600
|
+
def self.new(general:, terms:)
|
|
2601
|
+
end
|
|
2602
|
+
|
|
2603
|
+
sig do
|
|
2604
|
+
override.returns(
|
|
2605
|
+
{
|
|
2606
|
+
general:
|
|
2607
|
+
T::Array[
|
|
2608
|
+
Revox::Models::AssistantListResponse::Assistant::SttContext::General
|
|
2609
|
+
],
|
|
2610
|
+
terms: T::Array[String]
|
|
2611
|
+
}
|
|
2612
|
+
)
|
|
2613
|
+
end
|
|
2614
|
+
def to_hash
|
|
2615
|
+
end
|
|
2616
|
+
|
|
2617
|
+
class General < Revox::Internal::Type::BaseModel
|
|
2618
|
+
OrHash =
|
|
2619
|
+
T.type_alias do
|
|
2620
|
+
T.any(
|
|
2621
|
+
Revox::Models::AssistantListResponse::Assistant::SttContext::General,
|
|
2622
|
+
Revox::Internal::AnyHash
|
|
2623
|
+
)
|
|
2624
|
+
end
|
|
2625
|
+
|
|
2626
|
+
sig { returns(String) }
|
|
2627
|
+
attr_accessor :key
|
|
2628
|
+
|
|
2629
|
+
sig { returns(String) }
|
|
2630
|
+
attr_accessor :value
|
|
2631
|
+
|
|
2632
|
+
sig { params(key: String, value: String).returns(T.attached_class) }
|
|
2633
|
+
def self.new(key:, value:)
|
|
2634
|
+
end
|
|
2635
|
+
|
|
2636
|
+
sig { override.returns({ key: String, value: String }) }
|
|
2637
|
+
def to_hash
|
|
2638
|
+
end
|
|
2639
|
+
end
|
|
2640
|
+
end
|
|
2641
|
+
|
|
2642
|
+
# Transcriber (speech-to-text) model used for the assistant.
|
|
2643
|
+
module SttModel
|
|
2644
|
+
extend Revox::Internal::Type::Enum
|
|
2645
|
+
|
|
2646
|
+
TaggedSymbol =
|
|
2647
|
+
T.type_alias do
|
|
2648
|
+
T.all(
|
|
2649
|
+
Symbol,
|
|
2650
|
+
Revox::Models::AssistantListResponse::Assistant::SttModel
|
|
2651
|
+
)
|
|
2652
|
+
end
|
|
2653
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2654
|
+
|
|
2655
|
+
STT_RT_V4 =
|
|
2656
|
+
T.let(
|
|
2657
|
+
:"stt-rt-v4",
|
|
2658
|
+
Revox::Models::AssistantListResponse::Assistant::SttModel::TaggedSymbol
|
|
2659
|
+
)
|
|
2660
|
+
STT_RT_V5 =
|
|
2661
|
+
T.let(
|
|
2662
|
+
:"stt-rt-v5",
|
|
2663
|
+
Revox::Models::AssistantListResponse::Assistant::SttModel::TaggedSymbol
|
|
2664
|
+
)
|
|
2665
|
+
|
|
2666
|
+
sig do
|
|
2667
|
+
override.returns(
|
|
2668
|
+
T::Array[
|
|
2669
|
+
Revox::Models::AssistantListResponse::Assistant::SttModel::TaggedSymbol
|
|
2670
|
+
]
|
|
2671
|
+
)
|
|
2672
|
+
end
|
|
2673
|
+
def self.values
|
|
2674
|
+
end
|
|
2675
|
+
end
|
|
2676
|
+
|
|
2677
|
+
# Audio clip to play while the agent is processing a response. One of the built-in
|
|
2678
|
+
# LiveKit audio clips; null disables it.
|
|
2679
|
+
module ThinkingSound
|
|
2680
|
+
extend Revox::Internal::Type::Enum
|
|
2681
|
+
|
|
2682
|
+
TaggedSymbol =
|
|
2683
|
+
T.type_alias do
|
|
2684
|
+
T.all(
|
|
2685
|
+
Symbol,
|
|
2686
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound
|
|
2687
|
+
)
|
|
2688
|
+
end
|
|
2689
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2690
|
+
|
|
2691
|
+
CITY_AMBIENCE_OGG =
|
|
2692
|
+
T.let(
|
|
2693
|
+
:"city-ambience.ogg",
|
|
2694
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::TaggedSymbol
|
|
2695
|
+
)
|
|
2696
|
+
FOREST_AMBIENCE_OGG =
|
|
2697
|
+
T.let(
|
|
2698
|
+
:"forest-ambience.ogg",
|
|
2699
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::TaggedSymbol
|
|
2700
|
+
)
|
|
2701
|
+
OFFICE_AMBIENCE_OGG =
|
|
2702
|
+
T.let(
|
|
2703
|
+
:"office-ambience.ogg",
|
|
2704
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::TaggedSymbol
|
|
2705
|
+
)
|
|
2706
|
+
CROWDED_ROOM_OGG =
|
|
2707
|
+
T.let(
|
|
2708
|
+
:"crowded-room.ogg",
|
|
2709
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::TaggedSymbol
|
|
2710
|
+
)
|
|
2711
|
+
KEYBOARD_TYPING_OGG =
|
|
2712
|
+
T.let(
|
|
2713
|
+
:"keyboard-typing.ogg",
|
|
2714
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::TaggedSymbol
|
|
2715
|
+
)
|
|
2716
|
+
KEYBOARD_TYPING2_OGG =
|
|
2717
|
+
T.let(
|
|
2718
|
+
:"keyboard-typing2.ogg",
|
|
2719
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::TaggedSymbol
|
|
2720
|
+
)
|
|
2721
|
+
HOLD_MUSIC_OGG =
|
|
2722
|
+
T.let(
|
|
2723
|
+
:"hold_music.ogg",
|
|
2724
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::TaggedSymbol
|
|
2725
|
+
)
|
|
2726
|
+
|
|
2727
|
+
sig do
|
|
2728
|
+
override.returns(
|
|
2729
|
+
T::Array[
|
|
2730
|
+
Revox::Models::AssistantListResponse::Assistant::ThinkingSound::TaggedSymbol
|
|
2731
|
+
]
|
|
2732
|
+
)
|
|
2733
|
+
end
|
|
2734
|
+
def self.values
|
|
2735
|
+
end
|
|
2736
|
+
end
|
|
2737
|
+
|
|
2738
|
+
module Type
|
|
2739
|
+
extend Revox::Internal::Type::Enum
|
|
2740
|
+
|
|
2741
|
+
TaggedSymbol =
|
|
2742
|
+
T.type_alias do
|
|
2743
|
+
T.all(
|
|
2744
|
+
Symbol,
|
|
2745
|
+
Revox::Models::AssistantListResponse::Assistant::Type
|
|
2746
|
+
)
|
|
2747
|
+
end
|
|
2748
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2749
|
+
|
|
2750
|
+
STANDALONE =
|
|
2751
|
+
T.let(
|
|
2752
|
+
:standalone,
|
|
2753
|
+
Revox::Models::AssistantListResponse::Assistant::Type::TaggedSymbol
|
|
2754
|
+
)
|
|
2755
|
+
MULTI_STEP =
|
|
2756
|
+
T.let(
|
|
2757
|
+
:"multi-step",
|
|
2758
|
+
Revox::Models::AssistantListResponse::Assistant::Type::TaggedSymbol
|
|
2759
|
+
)
|
|
2760
|
+
SUB_ASSISTANT =
|
|
2761
|
+
T.let(
|
|
2762
|
+
:"sub-assistant",
|
|
2763
|
+
Revox::Models::AssistantListResponse::Assistant::Type::TaggedSymbol
|
|
2764
|
+
)
|
|
2765
|
+
|
|
733
2766
|
sig do
|
|
734
2767
|
override.returns(
|
|
735
2768
|
T::Array[
|
|
736
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
2769
|
+
Revox::Models::AssistantListResponse::Assistant::Type::TaggedSymbol
|
|
737
2770
|
]
|
|
738
2771
|
)
|
|
739
2772
|
end
|
|
740
|
-
def self.
|
|
2773
|
+
def self.values
|
|
741
2774
|
end
|
|
742
2775
|
end
|
|
743
2776
|
|
|
744
|
-
class
|
|
2777
|
+
class Voice < Revox::Internal::Type::BaseModel
|
|
745
2778
|
OrHash =
|
|
746
2779
|
T.type_alias do
|
|
747
2780
|
T.any(
|
|
748
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
2781
|
+
Revox::Models::AssistantListResponse::Assistant::Voice,
|
|
749
2782
|
Revox::Internal::AnyHash
|
|
750
2783
|
)
|
|
751
2784
|
end
|
|
752
2785
|
|
|
2786
|
+
# The ID of the voice.
|
|
753
2787
|
sig { returns(String) }
|
|
754
|
-
attr_accessor :
|
|
2788
|
+
attr_accessor :id
|
|
755
2789
|
|
|
756
|
-
|
|
757
|
-
|
|
2790
|
+
# The provider of the voice.
|
|
2791
|
+
sig do
|
|
2792
|
+
returns(
|
|
2793
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Provider::TaggedSymbol
|
|
2794
|
+
)
|
|
2795
|
+
end
|
|
2796
|
+
attr_accessor :provider
|
|
758
2797
|
|
|
2798
|
+
# Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
|
|
2799
|
+
# for other providers.
|
|
759
2800
|
sig do
|
|
760
2801
|
returns(
|
|
761
|
-
|
|
2802
|
+
T.nilable(
|
|
2803
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Model::TaggedSymbol
|
|
2804
|
+
)
|
|
762
2805
|
)
|
|
763
2806
|
end
|
|
764
|
-
|
|
2807
|
+
attr_reader :model
|
|
765
2808
|
|
|
766
|
-
sig
|
|
767
|
-
|
|
2809
|
+
sig do
|
|
2810
|
+
params(
|
|
2811
|
+
model:
|
|
2812
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Model::OrSymbol
|
|
2813
|
+
).void
|
|
2814
|
+
end
|
|
2815
|
+
attr_writer :model
|
|
768
2816
|
|
|
769
|
-
|
|
770
|
-
|
|
2817
|
+
# The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
|
|
2818
|
+
# 0.7–1.2. Default is 1.0.
|
|
2819
|
+
sig { returns(T.nilable(Float)) }
|
|
2820
|
+
attr_reader :speed
|
|
771
2821
|
|
|
772
|
-
sig {
|
|
773
|
-
|
|
2822
|
+
sig { params(speed: Float).void }
|
|
2823
|
+
attr_writer :speed
|
|
774
2824
|
|
|
775
|
-
|
|
776
|
-
|
|
2825
|
+
# Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
|
|
2826
|
+
# providers.
|
|
2827
|
+
sig { returns(T.nilable(Float)) }
|
|
2828
|
+
attr_reader :volume
|
|
2829
|
+
|
|
2830
|
+
sig { params(volume: Float).void }
|
|
2831
|
+
attr_writer :volume
|
|
777
2832
|
|
|
778
2833
|
sig do
|
|
779
2834
|
params(
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
2835
|
+
id: String,
|
|
2836
|
+
provider:
|
|
2837
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Provider::OrSymbol,
|
|
2838
|
+
model:
|
|
2839
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Model::OrSymbol,
|
|
2840
|
+
speed: Float,
|
|
2841
|
+
volume: Float
|
|
786
2842
|
).returns(T.attached_class)
|
|
787
2843
|
end
|
|
788
2844
|
def self.new(
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
2845
|
+
# The ID of the voice.
|
|
2846
|
+
id:,
|
|
2847
|
+
# The provider of the voice.
|
|
2848
|
+
provider:,
|
|
2849
|
+
# Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
|
|
2850
|
+
# for other providers.
|
|
2851
|
+
model: nil,
|
|
2852
|
+
# The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
|
|
2853
|
+
# 0.7–1.2. Default is 1.0.
|
|
2854
|
+
speed: nil,
|
|
2855
|
+
# Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
|
|
2856
|
+
# providers.
|
|
2857
|
+
volume: nil
|
|
794
2858
|
)
|
|
795
2859
|
end
|
|
796
2860
|
|
|
797
2861
|
sig do
|
|
798
2862
|
override.returns(
|
|
799
2863
|
{
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
2864
|
+
id: String,
|
|
2865
|
+
provider:
|
|
2866
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Provider::TaggedSymbol,
|
|
2867
|
+
model:
|
|
2868
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Model::TaggedSymbol,
|
|
2869
|
+
speed: Float,
|
|
2870
|
+
volume: Float
|
|
806
2871
|
}
|
|
807
2872
|
)
|
|
808
2873
|
end
|
|
809
2874
|
def to_hash
|
|
810
2875
|
end
|
|
811
2876
|
|
|
812
|
-
|
|
2877
|
+
# The provider of the voice.
|
|
2878
|
+
module Provider
|
|
813
2879
|
extend Revox::Internal::Type::Enum
|
|
814
2880
|
|
|
815
2881
|
TaggedSymbol =
|
|
816
2882
|
T.type_alias do
|
|
817
2883
|
T.all(
|
|
818
2884
|
Symbol,
|
|
819
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
2885
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Provider
|
|
820
2886
|
)
|
|
821
2887
|
end
|
|
822
2888
|
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
823
2889
|
|
|
824
|
-
|
|
825
|
-
T.let(
|
|
826
|
-
:string,
|
|
827
|
-
Revox::Models::AssistantListResponse::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
828
|
-
)
|
|
829
|
-
NUMBER =
|
|
2890
|
+
CARTESIA =
|
|
830
2891
|
T.let(
|
|
831
|
-
:
|
|
832
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
2892
|
+
:cartesia,
|
|
2893
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Provider::TaggedSymbol
|
|
833
2894
|
)
|
|
834
|
-
|
|
2895
|
+
ELEVENLABS =
|
|
835
2896
|
T.let(
|
|
836
|
-
:
|
|
837
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
2897
|
+
:elevenlabs,
|
|
2898
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Provider::TaggedSymbol
|
|
838
2899
|
)
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
2900
|
+
|
|
2901
|
+
sig do
|
|
2902
|
+
override.returns(
|
|
2903
|
+
T::Array[
|
|
2904
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Provider::TaggedSymbol
|
|
2905
|
+
]
|
|
843
2906
|
)
|
|
844
|
-
|
|
2907
|
+
end
|
|
2908
|
+
def self.values
|
|
2909
|
+
end
|
|
2910
|
+
end
|
|
2911
|
+
|
|
2912
|
+
# Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
|
|
2913
|
+
# for other providers.
|
|
2914
|
+
module Model
|
|
2915
|
+
extend Revox::Internal::Type::Enum
|
|
2916
|
+
|
|
2917
|
+
TaggedSymbol =
|
|
2918
|
+
T.type_alias do
|
|
2919
|
+
T.all(
|
|
2920
|
+
Symbol,
|
|
2921
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Model
|
|
2922
|
+
)
|
|
2923
|
+
end
|
|
2924
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2925
|
+
|
|
2926
|
+
SONIC_3 =
|
|
845
2927
|
T.let(
|
|
846
|
-
:
|
|
847
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
2928
|
+
:"sonic-3",
|
|
2929
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Model::TaggedSymbol
|
|
848
2930
|
)
|
|
849
|
-
|
|
2931
|
+
SONIC_3_5 =
|
|
850
2932
|
T.let(
|
|
851
|
-
:
|
|
852
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
2933
|
+
:"sonic-3.5",
|
|
2934
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Model::TaggedSymbol
|
|
853
2935
|
)
|
|
854
2936
|
|
|
855
2937
|
sig do
|
|
856
2938
|
override.returns(
|
|
857
2939
|
T::Array[
|
|
858
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
2940
|
+
Revox::Models::AssistantListResponse::Assistant::Voice::Model::TaggedSymbol
|
|
859
2941
|
]
|
|
860
2942
|
)
|
|
861
2943
|
end
|
|
@@ -864,95 +2946,212 @@ module Revox
|
|
|
864
2946
|
end
|
|
865
2947
|
end
|
|
866
2948
|
|
|
867
|
-
class
|
|
2949
|
+
class Zoho < Revox::Internal::Type::BaseModel
|
|
868
2950
|
OrHash =
|
|
869
2951
|
T.type_alias do
|
|
870
2952
|
T.any(
|
|
871
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
2953
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho,
|
|
872
2954
|
Revox::Internal::AnyHash
|
|
873
2955
|
)
|
|
874
2956
|
end
|
|
875
2957
|
|
|
876
|
-
# The ID
|
|
2958
|
+
# The Nango connection ID linking the org's Zoho CRM account to Revox.
|
|
877
2959
|
sig { returns(String) }
|
|
878
|
-
attr_accessor :
|
|
2960
|
+
attr_accessor :connection_id
|
|
879
2961
|
|
|
880
|
-
#
|
|
2962
|
+
# Maps extracted call fields (structured_output / prompt variables) onto Zoho
|
|
2963
|
+
# field API names on the upserted record.
|
|
881
2964
|
sig do
|
|
882
2965
|
returns(
|
|
883
|
-
|
|
2966
|
+
T::Array[
|
|
2967
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::FieldMapping
|
|
2968
|
+
]
|
|
884
2969
|
)
|
|
885
2970
|
end
|
|
886
|
-
attr_accessor :
|
|
2971
|
+
attr_accessor :field_mapping
|
|
887
2972
|
|
|
888
|
-
#
|
|
889
|
-
#
|
|
890
|
-
sig { returns(T
|
|
891
|
-
|
|
2973
|
+
# When true, also log the call as a record in Zoho's Calls module (related to the
|
|
2974
|
+
# upserted prospect via Who_Id).
|
|
2975
|
+
sig { returns(T::Boolean) }
|
|
2976
|
+
attr_accessor :log_call_activity
|
|
892
2977
|
|
|
893
|
-
|
|
894
|
-
|
|
2978
|
+
# Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
|
|
2979
|
+
sig { returns(String) }
|
|
2980
|
+
attr_accessor :module_
|
|
2981
|
+
|
|
2982
|
+
# Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
|
|
2983
|
+
# 'none' to push when outcome is null.
|
|
2984
|
+
sig do
|
|
2985
|
+
returns(
|
|
2986
|
+
T::Array[
|
|
2987
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
2988
|
+
]
|
|
2989
|
+
)
|
|
2990
|
+
end
|
|
2991
|
+
attr_accessor :outcomes
|
|
2992
|
+
|
|
2993
|
+
# Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2994
|
+
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
|
|
2995
|
+
# prompt_variables and structured_output keys. When null/empty a default note
|
|
2996
|
+
# (outcome + summary + auto-listed extracted fields) is used.
|
|
2997
|
+
sig { returns(T.nilable(String)) }
|
|
2998
|
+
attr_accessor :template
|
|
895
2999
|
|
|
896
3000
|
sig do
|
|
897
3001
|
params(
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
3002
|
+
connection_id: String,
|
|
3003
|
+
field_mapping:
|
|
3004
|
+
T::Array[
|
|
3005
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::FieldMapping::OrHash
|
|
3006
|
+
],
|
|
3007
|
+
log_call_activity: T::Boolean,
|
|
3008
|
+
module_: String,
|
|
3009
|
+
outcomes:
|
|
3010
|
+
T::Array[
|
|
3011
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::OrSymbol
|
|
3012
|
+
],
|
|
3013
|
+
template: T.nilable(String)
|
|
902
3014
|
).returns(T.attached_class)
|
|
903
3015
|
end
|
|
904
3016
|
def self.new(
|
|
905
|
-
# The ID
|
|
906
|
-
|
|
907
|
-
#
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
#
|
|
911
|
-
|
|
3017
|
+
# The Nango connection ID linking the org's Zoho CRM account to Revox.
|
|
3018
|
+
connection_id:,
|
|
3019
|
+
# Maps extracted call fields (structured_output / prompt variables) onto Zoho
|
|
3020
|
+
# field API names on the upserted record.
|
|
3021
|
+
field_mapping:,
|
|
3022
|
+
# When true, also log the call as a record in Zoho's Calls module (related to the
|
|
3023
|
+
# upserted prospect via Who_Id).
|
|
3024
|
+
log_call_activity:,
|
|
3025
|
+
# Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
|
|
3026
|
+
module_:,
|
|
3027
|
+
# Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
|
|
3028
|
+
# 'none' to push when outcome is null.
|
|
3029
|
+
outcomes:,
|
|
3030
|
+
# Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
3031
|
+
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
|
|
3032
|
+
# prompt_variables and structured_output keys. When null/empty a default note
|
|
3033
|
+
# (outcome + summary + auto-listed extracted fields) is used.
|
|
3034
|
+
template: nil
|
|
912
3035
|
)
|
|
913
3036
|
end
|
|
914
3037
|
|
|
915
3038
|
sig do
|
|
916
3039
|
override.returns(
|
|
917
3040
|
{
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
3041
|
+
connection_id: String,
|
|
3042
|
+
field_mapping:
|
|
3043
|
+
T::Array[
|
|
3044
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::FieldMapping
|
|
3045
|
+
],
|
|
3046
|
+
log_call_activity: T::Boolean,
|
|
3047
|
+
module_: String,
|
|
3048
|
+
outcomes:
|
|
3049
|
+
T::Array[
|
|
3050
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3051
|
+
],
|
|
3052
|
+
template: T.nilable(String)
|
|
922
3053
|
}
|
|
923
3054
|
)
|
|
924
3055
|
end
|
|
925
3056
|
def to_hash
|
|
926
3057
|
end
|
|
927
3058
|
|
|
928
|
-
|
|
929
|
-
|
|
3059
|
+
class FieldMapping < Revox::Internal::Type::BaseModel
|
|
3060
|
+
OrHash =
|
|
3061
|
+
T.type_alias do
|
|
3062
|
+
T.any(
|
|
3063
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::FieldMapping,
|
|
3064
|
+
Revox::Internal::AnyHash
|
|
3065
|
+
)
|
|
3066
|
+
end
|
|
3067
|
+
|
|
3068
|
+
# Source key to read from the call: a structured_output field name, falling back
|
|
3069
|
+
# to a prompt variable of the same name.
|
|
3070
|
+
sig { returns(String) }
|
|
3071
|
+
attr_accessor :source
|
|
3072
|
+
|
|
3073
|
+
# Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
|
|
3074
|
+
# or a custom 'Budget\_\_c').
|
|
3075
|
+
sig { returns(String) }
|
|
3076
|
+
attr_accessor :zoho_field
|
|
3077
|
+
|
|
3078
|
+
sig do
|
|
3079
|
+
params(source: String, zoho_field: String).returns(
|
|
3080
|
+
T.attached_class
|
|
3081
|
+
)
|
|
3082
|
+
end
|
|
3083
|
+
def self.new(
|
|
3084
|
+
# Source key to read from the call: a structured_output field name, falling back
|
|
3085
|
+
# to a prompt variable of the same name.
|
|
3086
|
+
source:,
|
|
3087
|
+
# Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
|
|
3088
|
+
# or a custom 'Budget\_\_c').
|
|
3089
|
+
zoho_field:
|
|
3090
|
+
)
|
|
3091
|
+
end
|
|
3092
|
+
|
|
3093
|
+
sig { override.returns({ source: String, zoho_field: String }) }
|
|
3094
|
+
def to_hash
|
|
3095
|
+
end
|
|
3096
|
+
end
|
|
3097
|
+
|
|
3098
|
+
module Outcome
|
|
930
3099
|
extend Revox::Internal::Type::Enum
|
|
931
3100
|
|
|
932
3101
|
TaggedSymbol =
|
|
933
3102
|
T.type_alias do
|
|
934
3103
|
T.all(
|
|
935
3104
|
Symbol,
|
|
936
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
3105
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome
|
|
937
3106
|
)
|
|
938
3107
|
end
|
|
939
3108
|
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
940
3109
|
|
|
941
|
-
|
|
3110
|
+
NOT_INTERESTED =
|
|
942
3111
|
T.let(
|
|
943
|
-
:
|
|
944
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
3112
|
+
:not_interested,
|
|
3113
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
945
3114
|
)
|
|
946
|
-
|
|
3115
|
+
INTERESTED =
|
|
947
3116
|
T.let(
|
|
948
|
-
:
|
|
949
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
3117
|
+
:interested,
|
|
3118
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3119
|
+
)
|
|
3120
|
+
COMPLETED =
|
|
3121
|
+
T.let(
|
|
3122
|
+
:completed,
|
|
3123
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3124
|
+
)
|
|
3125
|
+
REQUESTED_CALLBACK_LATER =
|
|
3126
|
+
T.let(
|
|
3127
|
+
:requested_callback_later,
|
|
3128
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3129
|
+
)
|
|
3130
|
+
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
3131
|
+
T.let(
|
|
3132
|
+
:requested_callback_new_number,
|
|
3133
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3134
|
+
)
|
|
3135
|
+
DO_NOT_CONTACT =
|
|
3136
|
+
T.let(
|
|
3137
|
+
:do_not_contact,
|
|
3138
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3139
|
+
)
|
|
3140
|
+
AI_AVERSE =
|
|
3141
|
+
T.let(
|
|
3142
|
+
:ai_averse,
|
|
3143
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3144
|
+
)
|
|
3145
|
+
NONE =
|
|
3146
|
+
T.let(
|
|
3147
|
+
:none,
|
|
3148
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
950
3149
|
)
|
|
951
3150
|
|
|
952
3151
|
sig do
|
|
953
3152
|
override.returns(
|
|
954
3153
|
T::Array[
|
|
955
|
-
Revox::Models::AssistantListResponse::Assistant::
|
|
3154
|
+
Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
|
|
956
3155
|
]
|
|
957
3156
|
)
|
|
958
3157
|
end
|
|
@@ -961,6 +3160,60 @@ module Revox
|
|
|
961
3160
|
end
|
|
962
3161
|
end
|
|
963
3162
|
|
|
3163
|
+
class CreatedBy < Revox::Internal::Type::BaseModel
|
|
3164
|
+
OrHash =
|
|
3165
|
+
T.type_alias do
|
|
3166
|
+
T.any(
|
|
3167
|
+
Revox::Models::AssistantListResponse::Assistant::CreatedBy,
|
|
3168
|
+
Revox::Internal::AnyHash
|
|
3169
|
+
)
|
|
3170
|
+
end
|
|
3171
|
+
|
|
3172
|
+
# The database user id of the creator.
|
|
3173
|
+
sig { returns(String) }
|
|
3174
|
+
attr_accessor :id
|
|
3175
|
+
|
|
3176
|
+
sig { returns(String) }
|
|
3177
|
+
attr_accessor :email
|
|
3178
|
+
|
|
3179
|
+
sig { returns(T.nilable(String)) }
|
|
3180
|
+
attr_accessor :first_name
|
|
3181
|
+
|
|
3182
|
+
sig { returns(T.nilable(String)) }
|
|
3183
|
+
attr_accessor :last_name
|
|
3184
|
+
|
|
3185
|
+
# The user who created the assistant.
|
|
3186
|
+
sig do
|
|
3187
|
+
params(
|
|
3188
|
+
id: String,
|
|
3189
|
+
email: String,
|
|
3190
|
+
first_name: T.nilable(String),
|
|
3191
|
+
last_name: T.nilable(String)
|
|
3192
|
+
).returns(T.attached_class)
|
|
3193
|
+
end
|
|
3194
|
+
def self.new(
|
|
3195
|
+
# The database user id of the creator.
|
|
3196
|
+
id:,
|
|
3197
|
+
email:,
|
|
3198
|
+
first_name:,
|
|
3199
|
+
last_name:
|
|
3200
|
+
)
|
|
3201
|
+
end
|
|
3202
|
+
|
|
3203
|
+
sig do
|
|
3204
|
+
override.returns(
|
|
3205
|
+
{
|
|
3206
|
+
id: String,
|
|
3207
|
+
email: String,
|
|
3208
|
+
first_name: T.nilable(String),
|
|
3209
|
+
last_name: T.nilable(String)
|
|
3210
|
+
}
|
|
3211
|
+
)
|
|
3212
|
+
end
|
|
3213
|
+
def to_hash
|
|
3214
|
+
end
|
|
3215
|
+
end
|
|
3216
|
+
|
|
964
3217
|
class FaqItem < Revox::Internal::Type::BaseModel
|
|
965
3218
|
OrHash =
|
|
966
3219
|
T.type_alias do
|