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