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
|
@@ -12,32 +12,81 @@ module Revox
|
|
|
12
12
|
params(
|
|
13
13
|
name: String,
|
|
14
14
|
prompt: String,
|
|
15
|
+
after_call_sms_outcomes:
|
|
16
|
+
T.nilable(
|
|
17
|
+
T::Array[
|
|
18
|
+
Revox::AssistantCreateParams::AfterCallSMSOutcome::OrSymbol
|
|
19
|
+
]
|
|
20
|
+
),
|
|
21
|
+
after_call_sms_prompt: T.nilable(String),
|
|
15
22
|
background_sound:
|
|
16
23
|
T.nilable(Revox::AssistantCreateParams::BackgroundSound::OrSymbol),
|
|
17
|
-
|
|
24
|
+
background_sound_volume: Float,
|
|
25
|
+
calendly: T.nilable(Revox::AssistantCreateParams::Calendly::OrHash),
|
|
18
26
|
call_retry_config:
|
|
19
27
|
Revox::AssistantCreateParams::CallRetryConfig::OrHash,
|
|
28
|
+
cartesia_dictionary_pronunciation_id: T.nilable(String),
|
|
29
|
+
custom_tools:
|
|
30
|
+
T.nilable(
|
|
31
|
+
T::Array[Revox::AssistantCreateParams::CustomTool::OrHash]
|
|
32
|
+
),
|
|
33
|
+
email_notification_address: T.nilable(String),
|
|
34
|
+
email_notification_language:
|
|
35
|
+
Revox::AssistantCreateParams::EmailNotificationLanguage::OrSymbol,
|
|
36
|
+
email_notification_outcomes:
|
|
37
|
+
T.nilable(
|
|
38
|
+
T::Array[
|
|
39
|
+
Revox::AssistantCreateParams::EmailNotificationOutcome::OrSymbol
|
|
40
|
+
]
|
|
41
|
+
),
|
|
20
42
|
end_of_call_sentence: String,
|
|
21
43
|
faq_items: T::Array[Revox::AssistantCreateParams::FaqItem::OrHash],
|
|
22
44
|
first_sentence: String,
|
|
23
45
|
first_sentence_delay_ms: Integer,
|
|
24
46
|
first_sentence_mode:
|
|
25
47
|
Revox::AssistantCreateParams::FirstSentenceMode::OrSymbol,
|
|
48
|
+
from_phone_number: T.nilable(String),
|
|
49
|
+
human_transfer_mode:
|
|
50
|
+
T.nilable(
|
|
51
|
+
Revox::AssistantCreateParams::HumanTransferMode::OrSymbol
|
|
52
|
+
),
|
|
26
53
|
ivr_navigation_enabled: T::Boolean,
|
|
27
54
|
llm_model:
|
|
28
55
|
T.any(
|
|
29
56
|
Revox::AssistantCreateParams::LlmModel::UnionMember0::OrHash,
|
|
30
|
-
Revox::AssistantCreateParams::LlmModel::UnionMember1::OrHash
|
|
57
|
+
Revox::AssistantCreateParams::LlmModel::UnionMember1::OrHash,
|
|
58
|
+
Revox::AssistantCreateParams::LlmModel::UnionMember2::OrHash,
|
|
59
|
+
Revox::AssistantCreateParams::LlmModel::UnionMember3::OrHash
|
|
31
60
|
),
|
|
61
|
+
logo_url: T.nilable(String),
|
|
32
62
|
max_call_duration_secs: Float,
|
|
63
|
+
max_duration_end_message: T.nilable(String),
|
|
64
|
+
position: T.nilable(Revox::AssistantCreateParams::Position::OrHash),
|
|
65
|
+
prompt_flow:
|
|
66
|
+
T.nilable(Revox::AssistantCreateParams::PromptFlow::OrHash),
|
|
67
|
+
slack: T.nilable(Revox::AssistantCreateParams::Slack::OrHash),
|
|
68
|
+
sms_enabled: T::Boolean,
|
|
69
|
+
sms_template: T.nilable(String),
|
|
33
70
|
structured_output_config:
|
|
34
71
|
T::Array[
|
|
35
72
|
Revox::AssistantCreateParams::StructuredOutputConfig::OrHash
|
|
36
73
|
],
|
|
74
|
+
structured_output_prompt: T.nilable(String),
|
|
75
|
+
stt_context:
|
|
76
|
+
T.nilable(Revox::AssistantCreateParams::SttContext::OrHash),
|
|
77
|
+
stt_model: Revox::AssistantCreateParams::SttModel::OrSymbol,
|
|
78
|
+
thinking_sound:
|
|
79
|
+
T.nilable(Revox::AssistantCreateParams::ThinkingSound::OrSymbol),
|
|
80
|
+
thinking_sound_probability: Float,
|
|
81
|
+
thinking_sound_volume: Float,
|
|
37
82
|
transfer_phone_number: T.nilable(String),
|
|
83
|
+
type: Revox::AssistantCreateParams::Type::OrSymbol,
|
|
38
84
|
voice: Revox::AssistantCreateParams::Voice::OrHash,
|
|
39
85
|
voicemail_message: T.nilable(String),
|
|
86
|
+
voicemail_sms_prompt: T.nilable(String),
|
|
87
|
+
warm_transfer_summary_instructions: T.nilable(String),
|
|
40
88
|
webhook_url: String,
|
|
89
|
+
zoho: T.nilable(Revox::AssistantCreateParams::Zoho::OrHash),
|
|
41
90
|
request_options: Revox::RequestOptions::OrHash
|
|
42
91
|
).returns(Revox::Models::AssistantCreateResponse)
|
|
43
92
|
end
|
|
@@ -45,13 +94,37 @@ module Revox
|
|
|
45
94
|
name:,
|
|
46
95
|
# The prompt to use for the call. This will be given to the LLM (gpt-4.1)
|
|
47
96
|
prompt:,
|
|
48
|
-
#
|
|
49
|
-
#
|
|
97
|
+
# Which call outcomes trigger the after-call SMS. When empty or null, no
|
|
98
|
+
# after-call SMS is sent. E.g. ["interested", "completed", "none"]. Use "none"
|
|
99
|
+
# when outcome is null.
|
|
100
|
+
after_call_sms_outcomes: nil,
|
|
101
|
+
# Prompt / instructions for the after-call SMS. Supports {{variable}}
|
|
102
|
+
# placeholders. When null, no after-call SMS is sent.
|
|
103
|
+
after_call_sms_prompt: nil,
|
|
104
|
+
# Ambient background sound to play during the call. null/omitted disables it.
|
|
50
105
|
background_sound: nil,
|
|
106
|
+
# Volume of the ambient background sound (0 = silent, 1 = max).
|
|
107
|
+
background_sound_volume: nil,
|
|
51
108
|
calendly: nil,
|
|
52
109
|
# Configuration for call retry behavior including time windows, delays, and max
|
|
53
110
|
# iterations. If not provided, defaults will be used.
|
|
54
111
|
call_retry_config: nil,
|
|
112
|
+
# Optional Cartesia pronunciation dictionary ID to use for this assistant's calls.
|
|
113
|
+
# Set null to unlink it.
|
|
114
|
+
cartesia_dictionary_pronunciation_id: nil,
|
|
115
|
+
# Custom API tools the assistant can call during conversations. Each tool defines
|
|
116
|
+
# an HTTP endpoint with variable substitution.
|
|
117
|
+
custom_tools: nil,
|
|
118
|
+
# Email address(es) to receive notifications when a call ends with a matching
|
|
119
|
+
# outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
|
|
120
|
+
# bob@y.com").
|
|
121
|
+
email_notification_address: nil,
|
|
122
|
+
# The language used for the notification email content. One of "en" or "fr".
|
|
123
|
+
# Defaults to "en".
|
|
124
|
+
email_notification_language: nil,
|
|
125
|
+
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
126
|
+
# "completed", "none"]. Use "none" when outcome is null.
|
|
127
|
+
email_notification_outcomes: nil,
|
|
55
128
|
# Optional message to say when the agent decides to end the call.
|
|
56
129
|
end_of_call_sentence: nil,
|
|
57
130
|
# FAQ items to associate with this assistant. When provided, replaces all existing
|
|
@@ -66,27 +139,92 @@ module Revox
|
|
|
66
139
|
# first_sentence will be spoken exactly as provided. "none" means the agent will
|
|
67
140
|
# not speak first and will wait for the user.
|
|
68
141
|
first_sentence_mode: nil,
|
|
142
|
+
# Override the default outbound phone number for calls placed with this assistant.
|
|
143
|
+
# Must be a phone number owned by the organization in E.164 format (e.g.
|
|
144
|
+
# +1234567890). When null, the organization's default phone number is used.
|
|
145
|
+
from_phone_number: nil,
|
|
146
|
+
# When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER;
|
|
147
|
+
# trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
|
|
148
|
+
human_transfer_mode: nil,
|
|
69
149
|
# Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
70
150
|
# skip turns to navigate phone menus.
|
|
71
151
|
ivr_navigation_enabled: nil,
|
|
72
152
|
llm_model: nil,
|
|
153
|
+
# Public URL of the brand logo shown on the assistant's demo page. Upload a new
|
|
154
|
+
# logo via POST /assistants/:id/logo. Set explicitly to null to clear it.
|
|
155
|
+
logo_url: nil,
|
|
73
156
|
# The maximum duration of the call in seconds. This is the maximum time the call
|
|
74
157
|
# will be allowed to run.
|
|
75
158
|
max_call_duration_secs: nil,
|
|
159
|
+
# Optional message the agent will say, without being interruptible, when the call
|
|
160
|
+
# reaches its max duration. Kept short so it fits inside the farewell buffer. If
|
|
161
|
+
# not set, the call ends silently.
|
|
162
|
+
max_duration_end_message: nil,
|
|
163
|
+
# Canvas position of this assistant's node in its multi-step flow editor.
|
|
164
|
+
position: nil,
|
|
165
|
+
# Visual prompt constructor data (nodes, edges, positions). Used by the UI to
|
|
166
|
+
# re-open the visual editor. Does not affect call behavior — the flattened prompt
|
|
167
|
+
# field is what the LLM receives.
|
|
168
|
+
prompt_flow: nil,
|
|
169
|
+
# Slack notification config. When set, posts a message to the chosen channel after
|
|
170
|
+
# a call ends with one of the configured outcomes.
|
|
171
|
+
slack: nil,
|
|
172
|
+
# Enable SMS tool during calls. When enabled, the agent can send SMS messages to
|
|
173
|
+
# the user on the call.
|
|
174
|
+
sms_enabled: nil,
|
|
175
|
+
# Hardcoded SMS template to send during calls. When set, this exact text is sent
|
|
176
|
+
# instead of letting the agent generate the message. Supports {{variable}}
|
|
177
|
+
# placeholders.
|
|
178
|
+
sms_template: nil,
|
|
76
179
|
# The structured output config to use for the call. This is used to extract the
|
|
77
180
|
# data from the call (like email, name, company name, etc.).
|
|
78
181
|
structured_output_config: nil,
|
|
182
|
+
# Custom prompt for structured data extraction. If not provided, a default prompt
|
|
183
|
+
# is used. Available variables: {{transcript}}, {{call_direction}},
|
|
184
|
+
# {{user_phone_number}}, {{agent_phone_number}}.
|
|
185
|
+
structured_output_prompt: nil,
|
|
186
|
+
# Assistant-level speech-to-text context: structured `general` key/value pairs
|
|
187
|
+
# plus a list of domain `terms`. Prompt-derived context is merged in without
|
|
188
|
+
# replacing existing entries.
|
|
189
|
+
stt_context: nil,
|
|
190
|
+
# Transcriber (speech-to-text) model. Defaults to the newest Soniox realtime model
|
|
191
|
+
# when omitted.
|
|
192
|
+
stt_model: nil,
|
|
193
|
+
# Audio clip to play while the agent is processing a response. One of the built-in
|
|
194
|
+
# LiveKit audio clips; null/omitted disables it.
|
|
195
|
+
thinking_sound: nil,
|
|
196
|
+
# Probability [0..1] that the thinking sound plays on any given turn; otherwise
|
|
197
|
+
# the agent is silent while thinking.
|
|
198
|
+
thinking_sound_probability: nil,
|
|
199
|
+
# Volume of the thinking sound (0 = silent, 1 = max).
|
|
200
|
+
thinking_sound_volume: nil,
|
|
79
201
|
# Phone number to transfer calls to when users request to speak to a human agent
|
|
80
202
|
# in E.164 format (e.g. +1234567890).
|
|
81
203
|
transfer_phone_number: nil,
|
|
204
|
+
# Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step'
|
|
205
|
+
# orchestrates a flow of sub-assistants, 'sub-assistant' is a step inside a
|
|
206
|
+
# multi-step flow (hidden from the assistants list). Flow transitions are managed
|
|
207
|
+
# via the /assistants/:id/edges endpoints, not on the assistant itself.
|
|
208
|
+
type: nil,
|
|
82
209
|
# The voice to use for the call. You can get the list of voices using the /voices
|
|
83
210
|
# endpoint
|
|
84
211
|
voice: nil,
|
|
85
212
|
# If set, when voicemail is detected the agent will speak this message then hang
|
|
86
213
|
# up; if null, hang up immediately.
|
|
87
214
|
voicemail_message: nil,
|
|
215
|
+
# SMS message to send when the call reaches voicemail. Supports {{variable}}
|
|
216
|
+
# placeholders. When null, no SMS is sent on voicemail.
|
|
217
|
+
voicemail_sms_prompt: nil,
|
|
218
|
+
# When using warm transfer: extra instructions for the supervisor handoff summary.
|
|
219
|
+
# If null or empty, the API uses the product default briefing when the call is
|
|
220
|
+
# loaded for the agent.
|
|
221
|
+
warm_transfer_summary_instructions: nil,
|
|
88
222
|
# The webhook URL to call when the call is completed.
|
|
89
223
|
webhook_url: nil,
|
|
224
|
+
# Zoho CRM integration config. When set, upserts the prospect (keyed on phone)
|
|
225
|
+
# into the chosen module and attaches a Note with the call summary after a call
|
|
226
|
+
# ends with one of the configured outcomes.
|
|
227
|
+
zoho: nil,
|
|
90
228
|
request_options: {}
|
|
91
229
|
)
|
|
92
230
|
end
|
|
@@ -111,46 +249,119 @@ module Revox
|
|
|
111
249
|
sig do
|
|
112
250
|
params(
|
|
113
251
|
id: String,
|
|
252
|
+
after_call_sms_outcomes:
|
|
253
|
+
T.nilable(
|
|
254
|
+
T::Array[
|
|
255
|
+
Revox::AssistantUpdateParams::AfterCallSMSOutcome::OrSymbol
|
|
256
|
+
]
|
|
257
|
+
),
|
|
258
|
+
after_call_sms_prompt: T.nilable(String),
|
|
114
259
|
background_sound:
|
|
115
260
|
T.nilable(Revox::AssistantUpdateParams::BackgroundSound::OrSymbol),
|
|
116
|
-
|
|
261
|
+
background_sound_volume: Float,
|
|
262
|
+
calendly: T.nilable(Revox::AssistantUpdateParams::Calendly::OrHash),
|
|
117
263
|
call_retry_config:
|
|
118
264
|
Revox::AssistantUpdateParams::CallRetryConfig::OrHash,
|
|
265
|
+
cartesia_dictionary_pronunciation_id: T.nilable(String),
|
|
266
|
+
custom_tools:
|
|
267
|
+
T.nilable(
|
|
268
|
+
T::Array[Revox::AssistantUpdateParams::CustomTool::OrHash]
|
|
269
|
+
),
|
|
270
|
+
email_notification_address: T.nilable(String),
|
|
271
|
+
email_notification_language:
|
|
272
|
+
Revox::AssistantUpdateParams::EmailNotificationLanguage::OrSymbol,
|
|
273
|
+
email_notification_outcomes:
|
|
274
|
+
T.nilable(
|
|
275
|
+
T::Array[
|
|
276
|
+
Revox::AssistantUpdateParams::EmailNotificationOutcome::OrSymbol
|
|
277
|
+
]
|
|
278
|
+
),
|
|
119
279
|
end_of_call_sentence: String,
|
|
120
280
|
faq_items: T::Array[Revox::AssistantUpdateParams::FaqItem::OrHash],
|
|
121
281
|
first_sentence: String,
|
|
122
282
|
first_sentence_delay_ms: Integer,
|
|
123
283
|
first_sentence_mode:
|
|
124
284
|
Revox::AssistantUpdateParams::FirstSentenceMode::OrSymbol,
|
|
285
|
+
from_phone_number: T.nilable(String),
|
|
286
|
+
human_transfer_mode:
|
|
287
|
+
T.nilable(
|
|
288
|
+
Revox::AssistantUpdateParams::HumanTransferMode::OrSymbol
|
|
289
|
+
),
|
|
125
290
|
ivr_navigation_enabled: T::Boolean,
|
|
126
291
|
llm_model:
|
|
127
292
|
T.any(
|
|
128
293
|
Revox::AssistantUpdateParams::LlmModel::UnionMember0::OrHash,
|
|
129
|
-
Revox::AssistantUpdateParams::LlmModel::UnionMember1::OrHash
|
|
294
|
+
Revox::AssistantUpdateParams::LlmModel::UnionMember1::OrHash,
|
|
295
|
+
Revox::AssistantUpdateParams::LlmModel::UnionMember2::OrHash,
|
|
296
|
+
Revox::AssistantUpdateParams::LlmModel::UnionMember3::OrHash
|
|
130
297
|
),
|
|
298
|
+
logo_url: T.nilable(String),
|
|
131
299
|
max_call_duration_secs: Float,
|
|
300
|
+
max_duration_end_message: T.nilable(String),
|
|
132
301
|
name: String,
|
|
302
|
+
position: T.nilable(Revox::AssistantUpdateParams::Position::OrHash),
|
|
133
303
|
prompt: String,
|
|
304
|
+
prompt_flow:
|
|
305
|
+
T.nilable(Revox::AssistantUpdateParams::PromptFlow::OrHash),
|
|
306
|
+
slack: T.nilable(Revox::AssistantUpdateParams::Slack::OrHash),
|
|
307
|
+
sms_enabled: T::Boolean,
|
|
308
|
+
sms_template: T.nilable(String),
|
|
134
309
|
structured_output_config:
|
|
135
310
|
T::Array[
|
|
136
311
|
Revox::AssistantUpdateParams::StructuredOutputConfig::OrHash
|
|
137
312
|
],
|
|
313
|
+
structured_output_prompt: T.nilable(String),
|
|
314
|
+
stt_context:
|
|
315
|
+
T.nilable(Revox::AssistantUpdateParams::SttContext::OrHash),
|
|
316
|
+
stt_model: Revox::AssistantUpdateParams::SttModel::OrSymbol,
|
|
317
|
+
thinking_sound:
|
|
318
|
+
T.nilable(Revox::AssistantUpdateParams::ThinkingSound::OrSymbol),
|
|
319
|
+
thinking_sound_probability: Float,
|
|
320
|
+
thinking_sound_volume: Float,
|
|
138
321
|
transfer_phone_number: T.nilable(String),
|
|
322
|
+
type: Revox::AssistantUpdateParams::Type::OrSymbol,
|
|
139
323
|
voice: Revox::AssistantUpdateParams::Voice::OrHash,
|
|
140
324
|
voicemail_message: T.nilable(String),
|
|
325
|
+
voicemail_sms_prompt: T.nilable(String),
|
|
326
|
+
warm_transfer_summary_instructions: T.nilable(String),
|
|
141
327
|
webhook_url: String,
|
|
328
|
+
zoho: T.nilable(Revox::AssistantUpdateParams::Zoho::OrHash),
|
|
142
329
|
request_options: Revox::RequestOptions::OrHash
|
|
143
330
|
).returns(Revox::Models::AssistantUpdateResponse)
|
|
144
331
|
end
|
|
145
332
|
def update(
|
|
146
333
|
id,
|
|
147
|
-
#
|
|
148
|
-
#
|
|
334
|
+
# Which call outcomes trigger the after-call SMS. When empty or null, no
|
|
335
|
+
# after-call SMS is sent. E.g. ["interested", "completed", "none"]. Use "none"
|
|
336
|
+
# when outcome is null.
|
|
337
|
+
after_call_sms_outcomes: nil,
|
|
338
|
+
# Prompt / instructions for the after-call SMS. Supports {{variable}}
|
|
339
|
+
# placeholders. When null, no after-call SMS is sent.
|
|
340
|
+
after_call_sms_prompt: nil,
|
|
341
|
+
# Ambient background sound to play during the call. null/omitted disables it.
|
|
149
342
|
background_sound: nil,
|
|
343
|
+
# Volume of the ambient background sound (0 = silent, 1 = max).
|
|
344
|
+
background_sound_volume: nil,
|
|
150
345
|
calendly: nil,
|
|
151
346
|
# Configuration for call retry behavior including time windows, delays, and max
|
|
152
347
|
# iterations. If not provided, defaults will be used.
|
|
153
348
|
call_retry_config: nil,
|
|
349
|
+
# Optional Cartesia pronunciation dictionary ID to use for this assistant's calls.
|
|
350
|
+
# Set null to unlink it.
|
|
351
|
+
cartesia_dictionary_pronunciation_id: nil,
|
|
352
|
+
# Custom API tools the assistant can call during conversations. Each tool defines
|
|
353
|
+
# an HTTP endpoint with variable substitution.
|
|
354
|
+
custom_tools: nil,
|
|
355
|
+
# Email address(es) to receive notifications when a call ends with a matching
|
|
356
|
+
# outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
|
|
357
|
+
# bob@y.com").
|
|
358
|
+
email_notification_address: nil,
|
|
359
|
+
# The language used for the notification email content. One of "en" or "fr".
|
|
360
|
+
# Defaults to "en".
|
|
361
|
+
email_notification_language: nil,
|
|
362
|
+
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
363
|
+
# "completed", "none"]. Use "none" when outcome is null.
|
|
364
|
+
email_notification_outcomes: nil,
|
|
154
365
|
# Optional message to say when the agent decides to end the call.
|
|
155
366
|
end_of_call_sentence: nil,
|
|
156
367
|
# FAQ items to associate with this assistant. When provided, replaces all existing
|
|
@@ -165,30 +376,95 @@ module Revox
|
|
|
165
376
|
# first_sentence will be spoken exactly as provided. "none" means the agent will
|
|
166
377
|
# not speak first and will wait for the user.
|
|
167
378
|
first_sentence_mode: nil,
|
|
379
|
+
# Override the default outbound phone number for calls placed with this assistant.
|
|
380
|
+
# Must be a phone number owned by the organization in E.164 format (e.g.
|
|
381
|
+
# +1234567890). When null, the organization's default phone number is used.
|
|
382
|
+
from_phone_number: nil,
|
|
383
|
+
# When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER;
|
|
384
|
+
# trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
|
|
385
|
+
human_transfer_mode: nil,
|
|
168
386
|
# Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
169
387
|
# skip turns to navigate phone menus.
|
|
170
388
|
ivr_navigation_enabled: nil,
|
|
171
389
|
llm_model: nil,
|
|
390
|
+
# Public URL of the brand logo shown on the assistant's demo page. Upload a new
|
|
391
|
+
# logo via POST /assistants/:id/logo. Set explicitly to null to clear it.
|
|
392
|
+
logo_url: nil,
|
|
172
393
|
# The maximum duration of the call in seconds. This is the maximum time the call
|
|
173
394
|
# will be allowed to run.
|
|
174
395
|
max_call_duration_secs: nil,
|
|
396
|
+
# Optional message the agent will say, without being interruptible, when the call
|
|
397
|
+
# reaches its max duration. Kept short so it fits inside the farewell buffer. If
|
|
398
|
+
# not set, the call ends silently.
|
|
399
|
+
max_duration_end_message: nil,
|
|
175
400
|
name: nil,
|
|
401
|
+
# Canvas position of this assistant's node in its multi-step flow editor.
|
|
402
|
+
position: nil,
|
|
176
403
|
# The prompt to use for the call. This will be given to the LLM (gpt-4.1)
|
|
177
404
|
prompt: nil,
|
|
405
|
+
# Visual prompt constructor data (nodes, edges, positions). Used by the UI to
|
|
406
|
+
# re-open the visual editor. Does not affect call behavior — the flattened prompt
|
|
407
|
+
# field is what the LLM receives.
|
|
408
|
+
prompt_flow: nil,
|
|
409
|
+
# Slack notification config. When set, posts a message to the chosen channel after
|
|
410
|
+
# a call ends with one of the configured outcomes.
|
|
411
|
+
slack: nil,
|
|
412
|
+
# Enable SMS tool during calls. When enabled, the agent can send SMS messages to
|
|
413
|
+
# the user on the call.
|
|
414
|
+
sms_enabled: nil,
|
|
415
|
+
# Hardcoded SMS template to send during calls. When set, this exact text is sent
|
|
416
|
+
# instead of letting the agent generate the message. Supports {{variable}}
|
|
417
|
+
# placeholders.
|
|
418
|
+
sms_template: nil,
|
|
178
419
|
# The structured output config to use for the call. This is used to extract the
|
|
179
420
|
# data from the call (like email, name, company name, etc.).
|
|
180
421
|
structured_output_config: nil,
|
|
422
|
+
# Custom prompt for structured data extraction. If not provided, a default prompt
|
|
423
|
+
# is used. Available variables: {{transcript}}, {{call_direction}},
|
|
424
|
+
# {{user_phone_number}}, {{agent_phone_number}}.
|
|
425
|
+
structured_output_prompt: nil,
|
|
426
|
+
# Assistant-level speech-to-text context: structured `general` key/value pairs
|
|
427
|
+
# plus a list of domain `terms`. Prompt-derived context is merged in without
|
|
428
|
+
# replacing existing entries.
|
|
429
|
+
stt_context: nil,
|
|
430
|
+
# Transcriber (speech-to-text) model. Defaults to the newest Soniox realtime model
|
|
431
|
+
# when omitted.
|
|
432
|
+
stt_model: nil,
|
|
433
|
+
# Audio clip to play while the agent is processing a response. One of the built-in
|
|
434
|
+
# LiveKit audio clips; null/omitted disables it.
|
|
435
|
+
thinking_sound: nil,
|
|
436
|
+
# Probability [0..1] that the thinking sound plays on any given turn; otherwise
|
|
437
|
+
# the agent is silent while thinking.
|
|
438
|
+
thinking_sound_probability: nil,
|
|
439
|
+
# Volume of the thinking sound (0 = silent, 1 = max).
|
|
440
|
+
thinking_sound_volume: nil,
|
|
181
441
|
# Phone number to transfer calls to when users request to speak to a human agent
|
|
182
442
|
# in E.164 format (e.g. +1234567890).
|
|
183
443
|
transfer_phone_number: nil,
|
|
444
|
+
# Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step'
|
|
445
|
+
# orchestrates a flow of sub-assistants, 'sub-assistant' is a step inside a
|
|
446
|
+
# multi-step flow (hidden from the assistants list). Flow transitions are managed
|
|
447
|
+
# via the /assistants/:id/edges endpoints, not on the assistant itself.
|
|
448
|
+
type: nil,
|
|
184
449
|
# The voice to use for the call. You can get the list of voices using the /voices
|
|
185
450
|
# endpoint
|
|
186
451
|
voice: nil,
|
|
187
452
|
# If set, when voicemail is detected the agent will speak this message then hang
|
|
188
453
|
# up; if null, hang up immediately.
|
|
189
454
|
voicemail_message: nil,
|
|
455
|
+
# SMS message to send when the call reaches voicemail. Supports {{variable}}
|
|
456
|
+
# placeholders. When null, no SMS is sent on voicemail.
|
|
457
|
+
voicemail_sms_prompt: nil,
|
|
458
|
+
# When using warm transfer: extra instructions for the supervisor handoff summary.
|
|
459
|
+
# If null or empty, the API uses the product default briefing when the call is
|
|
460
|
+
# loaded for the agent.
|
|
461
|
+
warm_transfer_summary_instructions: nil,
|
|
190
462
|
# The webhook URL to call when the call is completed.
|
|
191
463
|
webhook_url: nil,
|
|
464
|
+
# Zoho CRM integration config. When set, upserts the prospect (keyed on phone)
|
|
465
|
+
# into the chosen module and attaches a Note with the call summary after a call
|
|
466
|
+
# ends with one of the configured outcomes.
|
|
467
|
+
zoho: nil,
|
|
192
468
|
request_options: {}
|
|
193
469
|
)
|
|
194
470
|
end
|
|
@@ -68,27 +68,6 @@ module Revox
|
|
|
68
68
|
)
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
# Retrieve a paginated list of call attempts. Each entry includes the call status,
|
|
72
|
-
# phone number, assistant used, transcript, and timestamps. Use the page and
|
|
73
|
-
# page_size query parameters to navigate through results.
|
|
74
|
-
sig do
|
|
75
|
-
params(
|
|
76
|
-
page: Integer,
|
|
77
|
-
page_size: Integer,
|
|
78
|
-
statuses: T::Array[Revox::CallListParams::Status::OrSymbol],
|
|
79
|
-
request_options: Revox::RequestOptions::OrHash
|
|
80
|
-
).returns(Revox::Models::CallListResponse)
|
|
81
|
-
end
|
|
82
|
-
def list(
|
|
83
|
-
# The page number you want to get. Starting at 0.
|
|
84
|
-
page:,
|
|
85
|
-
# The number of calls to return per page.
|
|
86
|
-
page_size:,
|
|
87
|
-
statuses: nil,
|
|
88
|
-
request_options: {}
|
|
89
|
-
)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
71
|
# @api private
|
|
93
72
|
sig { params(client: Revox::Client).returns(T.attached_class) }
|
|
94
73
|
def self.new(client:)
|
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
module Revox
|
|
4
4
|
module Resources
|
|
5
5
|
class Campaigns
|
|
6
|
-
# Create a new outbound calling campaign
|
|
7
|
-
#
|
|
8
|
-
# of starting right away.
|
|
6
|
+
# Create a new outbound calling campaign. By default the campaign launches
|
|
7
|
+
# immediately. Set launch to false to save as a draft for later review.
|
|
9
8
|
sig do
|
|
10
9
|
params(
|
|
11
10
|
assistant_id: String,
|
|
12
11
|
contacts: T::Array[Revox::CampaignCreateParams::Contact::OrHash],
|
|
12
|
+
launch: T::Boolean,
|
|
13
13
|
name: String,
|
|
14
|
+
type: Revox::CampaignCreateParams::Type::OrSymbol,
|
|
14
15
|
call_retry_config:
|
|
15
16
|
Revox::CampaignCreateParams::CallRetryConfig::OrHash,
|
|
16
17
|
from_phone_number: String,
|
|
@@ -24,8 +25,13 @@ module Revox
|
|
|
24
25
|
assistant_id:,
|
|
25
26
|
# The list of contacts to call
|
|
26
27
|
contacts:,
|
|
28
|
+
# Whether to launch the campaign immediately. Set to false to save as a draft.
|
|
29
|
+
launch:,
|
|
27
30
|
# The name of the campaign
|
|
28
31
|
name:,
|
|
32
|
+
# Campaign type. 'jump_in' campaigns only dial while someone is on the campaign
|
|
33
|
+
# page and auto-pause when unattended.
|
|
34
|
+
type:,
|
|
29
35
|
# Override retry configuration for calls in this campaign. If not provided, uses
|
|
30
36
|
# the assistant's retry config.
|
|
31
37
|
call_retry_config: nil,
|
|
@@ -95,28 +101,15 @@ module Revox
|
|
|
95
101
|
def export_rows(id, request_options: {})
|
|
96
102
|
end
|
|
97
103
|
|
|
98
|
-
# Retrieve
|
|
99
|
-
#
|
|
104
|
+
# Retrieve all contact rows for a campaign. Useful for loading draft campaign data
|
|
105
|
+
# for editing.
|
|
100
106
|
sig do
|
|
101
107
|
params(
|
|
102
108
|
id: String,
|
|
103
|
-
page: Float,
|
|
104
|
-
page_size: Float,
|
|
105
|
-
query: String,
|
|
106
|
-
result: Revox::CampaignGetRowsParams::Result::OrSymbol,
|
|
107
|
-
statuses: String,
|
|
108
109
|
request_options: Revox::RequestOptions::OrHash
|
|
109
110
|
).returns(Revox::Models::CampaignGetRowsResponse)
|
|
110
111
|
end
|
|
111
|
-
def get_rows(
|
|
112
|
-
id,
|
|
113
|
-
page:,
|
|
114
|
-
page_size:,
|
|
115
|
-
query: nil,
|
|
116
|
-
result: nil,
|
|
117
|
-
statuses: nil,
|
|
118
|
-
request_options: {}
|
|
119
|
-
)
|
|
112
|
+
def get_rows(id, request_options: {})
|
|
120
113
|
end
|
|
121
114
|
|
|
122
115
|
# @api private
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
module Revox
|
|
4
4
|
module Resources
|
|
5
5
|
class Voices
|
|
6
|
-
# Retrieve details for a single voice by its unique ID and provider.
|
|
7
|
-
# voice name, description, and provider metadata.
|
|
6
|
+
# Retrieve details for a single voice by its unique ID and provider.
|
|
8
7
|
sig do
|
|
9
8
|
params(
|
|
10
9
|
id: String,
|
|
@@ -20,10 +19,8 @@ module Revox
|
|
|
20
19
|
)
|
|
21
20
|
end
|
|
22
21
|
|
|
23
|
-
# Retrieve
|
|
24
|
-
#
|
|
25
|
-
# provider-specific ID. Use this endpoint to browse voices before assigning one to
|
|
26
|
-
# an assistant or a call.
|
|
22
|
+
# Retrieve all voices available for AI calls, including preset voices from
|
|
23
|
+
# Cartesia/ElevenLabs and your organization's cloned voices.
|
|
27
24
|
sig do
|
|
28
25
|
params(request_options: Revox::RequestOptions::OrHash).returns(
|
|
29
26
|
Revox::Models::VoiceListResponse
|
|
@@ -32,13 +29,15 @@ module Revox
|
|
|
32
29
|
def list(request_options: {})
|
|
33
30
|
end
|
|
34
31
|
|
|
35
|
-
# Generate a short audio preview for a given voice.
|
|
36
|
-
# provider, and the API returns an audio/mpeg stream you can play back to hear how
|
|
37
|
-
# the voice sounds before assigning it to an assistant.
|
|
32
|
+
# Generate a short audio preview for a given voice.
|
|
38
33
|
sig do
|
|
39
34
|
params(
|
|
40
35
|
provider: Revox::VoicePreviewParams::Provider::OrSymbol,
|
|
41
36
|
voice_id: String,
|
|
37
|
+
model: Revox::VoicePreviewParams::Model::OrSymbol,
|
|
38
|
+
speed: Float,
|
|
39
|
+
text: String,
|
|
40
|
+
volume: Float,
|
|
42
41
|
request_options: Revox::RequestOptions::OrHash
|
|
43
42
|
).void
|
|
44
43
|
end
|
|
@@ -47,6 +46,15 @@ module Revox
|
|
|
47
46
|
provider:,
|
|
48
47
|
# The voice ID to generate a preview for.
|
|
49
48
|
voice_id:,
|
|
49
|
+
# Cartesia model for the preview. Defaults to sonic-3. Ignored for other
|
|
50
|
+
# providers.
|
|
51
|
+
model: nil,
|
|
52
|
+
# Speed for preview. Cartesia 0.6–1.5, ElevenLabs 0.7–1.2. Default 1.0.
|
|
53
|
+
speed: nil,
|
|
54
|
+
# Custom text for the preview. If omitted, a short default is used.
|
|
55
|
+
text: nil,
|
|
56
|
+
# Volume for Cartesia preview (0.5–2.0). Ignored for other providers.
|
|
57
|
+
volume: nil,
|
|
50
58
|
request_options: {}
|
|
51
59
|
)
|
|
52
60
|
end
|
data/sig/revox/internal/util.rbs
CHANGED
|
@@ -45,8 +45,12 @@ module Revox
|
|
|
45
45
|
-> top?
|
|
46
46
|
} -> top?
|
|
47
47
|
|
|
48
|
+
RFC_3986_NOT_PCHARS: Regexp
|
|
49
|
+
|
|
48
50
|
def self?.uri_origin: (URI::Generic uri) -> String
|
|
49
51
|
|
|
52
|
+
def self?.encode_path: (String | Integer path) -> String
|
|
53
|
+
|
|
50
54
|
def self?.interpolate_path: (String | ::Array[String] path) -> String
|
|
51
55
|
|
|
52
56
|
def self?.decode_query: (String? query) -> ::Hash[String, ::Array[String]]
|