revox 0.1.0 → 0.3.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 +81 -0
- data/README.md +39 -14
- data/lib/revox/client.rb +23 -1
- data/lib/revox/internal/transport/base_client.rb +5 -0
- data/lib/revox/internal/type/base_model.rb +3 -3
- data/lib/revox/internal/util.rb +22 -7
- data/lib/revox/models/assistant_clone_params.rb +20 -0
- data/lib/revox/models/assistant_clone_response.rb +1594 -0
- 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/auth_status_retrieve_params.rb +14 -0
- data/lib/revox/models/auth_status_retrieve_response.rb +17 -0
- data/lib/revox/models/call_cancel_params.rb +20 -0
- data/lib/revox/models/call_cancel_response.rb +16 -0
- data/lib/revox/models/call_create_params.rb +1065 -13
- data/lib/revox/models/call_create_response.rb +1820 -98
- data/lib/revox/models/call_export_params.rb +205 -0
- data/lib/revox/models/call_export_response.rb +22 -0
- data/lib/revox/models/call_pause_params.rb +20 -0
- data/lib/revox/models/call_pause_response.rb +16 -0
- data/lib/revox/models/call_phone_history_params.rb +14 -0
- data/lib/revox/models/call_phone_history_response.rb +98 -0
- data/lib/revox/models/call_resume_params.rb +20 -0
- data/lib/revox/models/call_resume_response.rb +16 -0
- data/lib/revox/models/call_retrieve_response.rb +1822 -98
- data/lib/revox/models/call_search_params.rb +171 -0
- data/lib/revox/models/call_search_response.rb +3114 -0
- 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 +1833 -115
- data/lib/revox/models/campaign_launch_params.rb +20 -0
- data/lib/revox/models/campaign_launch_response.rb +2030 -0
- data/lib/revox/models/campaign_list_response.rb +1312 -59
- data/lib/revox/models/campaign_pause_params.rb +20 -0
- data/lib/revox/models/campaign_pause_response.rb +16 -0
- data/lib/revox/models/campaign_resume_params.rb +20 -0
- data/lib/revox/models/campaign_resume_response.rb +16 -0
- data/lib/revox/models/campaign_retrieve_response.rb +1312 -56
- data/lib/revox/models/campaign_statistics_params.rb +20 -0
- data/lib/revox/models/campaign_statistics_response.rb +486 -0
- data/lib/revox/models/campaign_update_params.rb +234 -0
- data/lib/revox/models/campaign_update_response.rb +2030 -0
- data/lib/revox/models/phone_number_delete_params.rb +20 -0
- data/lib/revox/models/phone_number_delete_response.rb +16 -0
- data/lib/revox/models/phone_number_list_params.rb +14 -0
- data/lib/revox/models/phone_number_list_response.rb +1777 -0
- data/lib/revox/models/phone_number_update_params.rb +32 -0
- data/lib/revox/models/phone_number_update_response.rb +1777 -0
- data/lib/revox/models/user_retrieve_params.rb +14 -0
- data/lib/revox/models/user_retrieve_response.rb +99 -0
- data/lib/revox/models/voice_clone_params.rb +78 -0
- data/lib/revox/models/voice_clone_response.rb +40 -0
- data/lib/revox/models/voice_delete_params.rb +20 -0
- data/lib/revox/models/voice_delete_response.rb +16 -0
- 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 +36 -2
- data/lib/revox/resources/assistants.rb +137 -8
- data/lib/revox/resources/auth_status.rb +32 -0
- data/lib/revox/resources/call.rb +131 -15
- data/lib/revox/resources/campaigns.rb +143 -17
- data/lib/revox/resources/phone_numbers.rb +74 -0
- data/lib/revox/resources/users.rb +17 -3
- data/lib/revox/resources/voices.rb +66 -10
- data/lib/revox/version.rb +1 -1
- data/lib/revox.rb +40 -7
- data/rbi/revox/client.rbi +6 -0
- data/rbi/revox/internal/util.rbi +8 -0
- data/rbi/revox/models/assistant_clone_params.rbi +33 -0
- data/rbi/revox/models/assistant_clone_response.rbi +3341 -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/auth_status_retrieve_params.rbi +27 -0
- data/rbi/revox/models/auth_status_retrieve_response.rbi +30 -0
- data/rbi/revox/models/call_cancel_params.rbi +33 -0
- data/rbi/revox/models/call_cancel_response.rbi +23 -0
- data/rbi/revox/models/call_create_params.rbi +2382 -225
- data/rbi/revox/models/call_create_response.rbi +4116 -384
- data/rbi/revox/models/call_export_params.rbi +456 -0
- data/rbi/revox/models/call_export_response.rbi +26 -0
- data/rbi/revox/models/call_pause_params.rbi +31 -0
- data/rbi/revox/models/call_pause_response.rbi +23 -0
- data/rbi/revox/models/call_phone_history_params.rbi +27 -0
- data/rbi/revox/models/call_phone_history_response.rbi +224 -0
- data/rbi/revox/models/call_resume_params.rbi +33 -0
- data/rbi/revox/models/call_resume_response.rbi +23 -0
- data/rbi/revox/models/call_retrieve_response.rbi +4133 -399
- data/rbi/revox/models/call_search_params.rbi +288 -0
- data/rbi/revox/models/call_search_response.rbi +6593 -0
- 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 +4146 -409
- data/rbi/revox/models/campaign_launch_params.rbi +33 -0
- data/rbi/revox/models/campaign_launch_response.rbi +4170 -0
- data/rbi/revox/models/campaign_list_response.rbi +2904 -230
- data/rbi/revox/models/campaign_pause_params.rbi +33 -0
- data/rbi/revox/models/campaign_pause_response.rbi +23 -0
- data/rbi/revox/models/campaign_resume_params.rbi +33 -0
- data/rbi/revox/models/campaign_resume_response.rbi +23 -0
- data/rbi/revox/models/campaign_retrieve_response.rbi +2911 -231
- data/rbi/revox/models/campaign_statistics_params.rbi +33 -0
- data/rbi/revox/models/campaign_statistics_response.rbi +1011 -0
- data/rbi/revox/models/campaign_update_params.rbi +431 -0
- data/rbi/revox/models/campaign_update_response.rbi +4170 -0
- data/rbi/revox/models/phone_number_delete_params.rbi +33 -0
- data/rbi/revox/models/phone_number_delete_response.rbi +26 -0
- data/rbi/revox/models/phone_number_list_params.rbi +27 -0
- data/rbi/revox/models/phone_number_list_response.rbi +3680 -0
- data/rbi/revox/models/phone_number_update_params.rbi +53 -0
- data/rbi/revox/models/phone_number_update_response.rbi +3683 -0
- data/rbi/revox/models/user_retrieve_params.rbi +27 -0
- data/rbi/revox/models/user_retrieve_response.rbi +140 -0
- data/rbi/revox/models/voice_clone_params.rbi +141 -0
- data/rbi/revox/models/voice_clone_response.rbi +53 -0
- data/rbi/revox/models/voice_delete_params.rbi +33 -0
- data/rbi/revox/models/voice_delete_response.rbi +23 -0
- 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 +36 -2
- data/rbi/revox/resources/assistants.rbi +296 -8
- data/rbi/revox/resources/auth_status.rbi +21 -0
- data/rbi/revox/resources/call.rbi +92 -6
- data/rbi/revox/resources/campaigns.rbi +106 -19
- data/rbi/revox/resources/phone_numbers.rbi +43 -0
- data/rbi/revox/resources/users.rbi +8 -2
- data/rbi/revox/resources/voices.rbi +56 -9
- data/sig/revox/client.rbs +4 -0
- data/sig/revox/internal/util.rbs +4 -0
- data/sig/revox/models/assistant_clone_params.rbs +20 -0
- data/sig/revox/models/assistant_clone_response.rbs +1318 -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/auth_status_retrieve_params.rbs +15 -0
- data/sig/revox/models/auth_status_retrieve_response.rbs +13 -0
- data/sig/revox/models/call_cancel_params.rbs +20 -0
- data/sig/revox/models/call_cancel_response.rbs +13 -0
- data/sig/revox/models/call_create_params.rbs +847 -13
- data/sig/revox/models/call_create_response.rbs +1519 -34
- data/sig/revox/models/call_export_params.rbs +234 -0
- data/sig/revox/models/call_export_response.rbs +15 -0
- data/sig/revox/models/call_pause_params.rbs +20 -0
- data/sig/revox/models/call_pause_response.rbs +13 -0
- data/sig/revox/models/call_phone_history_params.rbs +15 -0
- data/sig/revox/models/call_phone_history_response.rbs +102 -0
- data/sig/revox/models/call_resume_params.rbs +20 -0
- data/sig/revox/models/call_resume_response.rbs +13 -0
- data/sig/revox/models/call_retrieve_response.rbs +1519 -34
- data/sig/revox/models/call_search_params.rbs +198 -0
- data/sig/revox/models/call_search_response.rbs +2654 -0
- 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 +1527 -54
- data/sig/revox/models/campaign_launch_params.rbs +20 -0
- data/sig/revox/models/campaign_launch_response.rbs +1694 -0
- data/sig/revox/models/campaign_list_response.rbs +1034 -6
- data/sig/revox/models/campaign_pause_params.rbs +20 -0
- data/sig/revox/models/campaign_pause_response.rbs +13 -0
- data/sig/revox/models/campaign_resume_params.rbs +20 -0
- data/sig/revox/models/campaign_resume_response.rbs +13 -0
- data/sig/revox/models/campaign_retrieve_response.rbs +1034 -6
- data/sig/revox/models/campaign_statistics_params.rbs +20 -0
- data/sig/revox/models/campaign_statistics_response.rbs +458 -0
- data/sig/revox/models/campaign_update_params.rbs +203 -0
- data/sig/revox/models/campaign_update_response.rbs +1694 -0
- data/sig/revox/models/phone_number_delete_params.rbs +20 -0
- data/sig/revox/models/phone_number_delete_response.rbs +13 -0
- data/sig/revox/models/phone_number_list_params.rbs +15 -0
- data/sig/revox/models/phone_number_list_response.rbs +1462 -0
- data/sig/revox/models/phone_number_update_params.rbs +32 -0
- data/sig/revox/models/phone_number_update_response.rbs +1460 -0
- data/sig/revox/models/user_retrieve_params.rbs +14 -0
- data/sig/revox/models/user_retrieve_response.rbs +71 -0
- data/sig/revox/models/voice_clone_params.rbs +79 -0
- data/sig/revox/models/voice_clone_response.rbs +40 -0
- data/sig/revox/models/voice_delete_params.rbs +20 -0
- data/sig/revox/models/voice_delete_response.rbs +13 -0
- 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 +36 -2
- data/sig/revox/resources/assistants.rbs +61 -2
- data/sig/revox/resources/auth_status.rbs +11 -0
- data/sig/revox/resources/call.rbs +41 -3
- data/sig/revox/resources/campaigns.rbs +35 -5
- data/sig/revox/resources/phone_numbers.rbs +23 -0
- data/sig/revox/resources/users.rbs +3 -1
- data/sig/revox/resources/voices.rbs +17 -0
- metadata +122 -23
- data/lib/revox/models/call_list_params.rb +0 -52
- data/lib/revox/models/call_list_response.rb +0 -259
- data/lib/revox/models/users/me_retrieve_params.rb +0 -16
- data/lib/revox/models/users/me_retrieve_response.rb +0 -89
- data/lib/revox/models/users/me_update_params.rb +0 -22
- data/lib/revox/models/users/me_update_response.rb +0 -89
- data/lib/revox/resources/users/me.rb +0 -55
- data/rbi/revox/models/call_list_params.rbi +0 -94
- data/rbi/revox/models/call_list_response.rbi +0 -563
- data/rbi/revox/models/users/me_retrieve_params.rbi +0 -29
- data/rbi/revox/models/users/me_retrieve_response.rbi +0 -139
- data/rbi/revox/models/users/me_update_params.rbi +0 -43
- data/rbi/revox/models/users/me_update_response.rbi +0 -139
- data/rbi/revox/resources/users/me.rbi +0 -33
- data/sig/revox/models/call_list_params.rbs +0 -63
- data/sig/revox/models/call_list_response.rbs +0 -226
- data/sig/revox/models/users/me_retrieve_params.rbs +0 -16
- data/sig/revox/models/users/me_retrieve_response.rbs +0 -70
- data/sig/revox/models/users/me_update_params.rbs +0 -28
- data/sig/revox/models/users/me_update_response.rbs +0 -70
- data/sig/revox/resources/users/me.rbs +0 -18
|
@@ -62,9 +62,19 @@ module Revox
|
|
|
62
62
|
end
|
|
63
63
|
attr_accessor :status
|
|
64
64
|
|
|
65
|
+
sig do
|
|
66
|
+
returns(
|
|
67
|
+
Revox::Models::CampaignListResponse::Campaign::Type::TaggedSymbol
|
|
68
|
+
)
|
|
69
|
+
end
|
|
70
|
+
attr_accessor :type
|
|
71
|
+
|
|
65
72
|
sig { returns(T.anything) }
|
|
66
73
|
attr_accessor :updated_at
|
|
67
74
|
|
|
75
|
+
sig { returns(T.nilable(String)) }
|
|
76
|
+
attr_accessor :active_takeover_call_id
|
|
77
|
+
|
|
68
78
|
sig do
|
|
69
79
|
returns(
|
|
70
80
|
T.nilable(Revox::Models::CampaignListResponse::Campaign::Assistant)
|
|
@@ -101,12 +111,62 @@ module Revox
|
|
|
101
111
|
end
|
|
102
112
|
attr_writer :call_retry_config
|
|
103
113
|
|
|
114
|
+
# A member of the current organization.
|
|
115
|
+
sig do
|
|
116
|
+
returns(
|
|
117
|
+
T.nilable(Revox::Models::CampaignListResponse::Campaign::CreatedBy)
|
|
118
|
+
)
|
|
119
|
+
end
|
|
120
|
+
attr_reader :created_by
|
|
121
|
+
|
|
122
|
+
sig do
|
|
123
|
+
params(
|
|
124
|
+
created_by:
|
|
125
|
+
T.nilable(
|
|
126
|
+
Revox::Models::CampaignListResponse::Campaign::CreatedBy::OrHash
|
|
127
|
+
)
|
|
128
|
+
).void
|
|
129
|
+
end
|
|
130
|
+
attr_writer :created_by
|
|
131
|
+
|
|
104
132
|
sig { returns(T.nilable(String)) }
|
|
105
133
|
attr_accessor :from_phone_number
|
|
106
134
|
|
|
135
|
+
sig do
|
|
136
|
+
returns(
|
|
137
|
+
T.nilable(
|
|
138
|
+
Revox::Models::CampaignListResponse::Campaign::FunnelStats
|
|
139
|
+
)
|
|
140
|
+
)
|
|
141
|
+
end
|
|
142
|
+
attr_reader :funnel_stats
|
|
143
|
+
|
|
144
|
+
sig do
|
|
145
|
+
params(
|
|
146
|
+
funnel_stats:
|
|
147
|
+
Revox::Models::CampaignListResponse::Campaign::FunnelStats::OrHash
|
|
148
|
+
).void
|
|
149
|
+
end
|
|
150
|
+
attr_writer :funnel_stats
|
|
151
|
+
|
|
107
152
|
sig { returns(T.nilable(Float)) }
|
|
108
153
|
attr_accessor :max_concurrent_calls
|
|
109
154
|
|
|
155
|
+
sig do
|
|
156
|
+
returns(
|
|
157
|
+
T.nilable(
|
|
158
|
+
Revox::Models::CampaignListResponse::Campaign::PausedReason::TaggedSymbol
|
|
159
|
+
)
|
|
160
|
+
)
|
|
161
|
+
end
|
|
162
|
+
attr_accessor :paused_reason
|
|
163
|
+
|
|
164
|
+
sig { returns(T.nilable(Float)) }
|
|
165
|
+
attr_reader :present_count
|
|
166
|
+
|
|
167
|
+
sig { params(present_count: Float).void }
|
|
168
|
+
attr_writer :present_count
|
|
169
|
+
|
|
110
170
|
sig do
|
|
111
171
|
returns(
|
|
112
172
|
T.nilable(Revox::Models::CampaignListResponse::Campaign::RowStats)
|
|
@@ -128,6 +188,24 @@ module Revox
|
|
|
128
188
|
sig { params(scheduled_at: T.anything).void }
|
|
129
189
|
attr_writer :scheduled_at
|
|
130
190
|
|
|
191
|
+
# The status of the structured output extraction.
|
|
192
|
+
sig do
|
|
193
|
+
returns(
|
|
194
|
+
T.nilable(
|
|
195
|
+
Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction::TaggedSymbol
|
|
196
|
+
)
|
|
197
|
+
)
|
|
198
|
+
end
|
|
199
|
+
attr_reader :structured_output_extraction
|
|
200
|
+
|
|
201
|
+
sig do
|
|
202
|
+
params(
|
|
203
|
+
structured_output_extraction:
|
|
204
|
+
Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction::OrSymbol
|
|
205
|
+
).void
|
|
206
|
+
end
|
|
207
|
+
attr_writer :structured_output_extraction
|
|
208
|
+
|
|
131
209
|
sig do
|
|
132
210
|
params(
|
|
133
211
|
id: String,
|
|
@@ -138,18 +216,33 @@ module Revox
|
|
|
138
216
|
organization_id: String,
|
|
139
217
|
status:
|
|
140
218
|
Revox::Models::CampaignListResponse::Campaign::Status::OrSymbol,
|
|
219
|
+
type: Revox::Models::CampaignListResponse::Campaign::Type::OrSymbol,
|
|
141
220
|
updated_at: T.anything,
|
|
221
|
+
active_takeover_call_id: T.nilable(String),
|
|
142
222
|
assistant:
|
|
143
223
|
Revox::Models::CampaignListResponse::Campaign::Assistant::OrHash,
|
|
144
224
|
call_retry_config:
|
|
145
225
|
T.nilable(
|
|
146
226
|
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::OrHash
|
|
147
227
|
),
|
|
228
|
+
created_by:
|
|
229
|
+
T.nilable(
|
|
230
|
+
Revox::Models::CampaignListResponse::Campaign::CreatedBy::OrHash
|
|
231
|
+
),
|
|
148
232
|
from_phone_number: T.nilable(String),
|
|
233
|
+
funnel_stats:
|
|
234
|
+
Revox::Models::CampaignListResponse::Campaign::FunnelStats::OrHash,
|
|
149
235
|
max_concurrent_calls: T.nilable(Float),
|
|
236
|
+
paused_reason:
|
|
237
|
+
T.nilable(
|
|
238
|
+
Revox::Models::CampaignListResponse::Campaign::PausedReason::OrSymbol
|
|
239
|
+
),
|
|
240
|
+
present_count: Float,
|
|
150
241
|
row_stats:
|
|
151
242
|
Revox::Models::CampaignListResponse::Campaign::RowStats::OrHash,
|
|
152
|
-
scheduled_at: T.anything
|
|
243
|
+
scheduled_at: T.anything,
|
|
244
|
+
structured_output_extraction:
|
|
245
|
+
Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction::OrSymbol
|
|
153
246
|
).returns(T.attached_class)
|
|
154
247
|
end
|
|
155
248
|
def self.new(
|
|
@@ -160,15 +253,24 @@ module Revox
|
|
|
160
253
|
name:,
|
|
161
254
|
organization_id:,
|
|
162
255
|
status:,
|
|
256
|
+
type:,
|
|
163
257
|
updated_at:,
|
|
258
|
+
active_takeover_call_id: nil,
|
|
164
259
|
assistant: nil,
|
|
165
260
|
# Configuration for call retry behavior including time windows, delays, and max
|
|
166
261
|
# iterations. If not provided, defaults will be used.
|
|
167
262
|
call_retry_config: nil,
|
|
263
|
+
# A member of the current organization.
|
|
264
|
+
created_by: nil,
|
|
168
265
|
from_phone_number: nil,
|
|
266
|
+
funnel_stats: nil,
|
|
169
267
|
max_concurrent_calls: nil,
|
|
268
|
+
paused_reason: nil,
|
|
269
|
+
present_count: nil,
|
|
170
270
|
row_stats: nil,
|
|
171
|
-
scheduled_at: nil
|
|
271
|
+
scheduled_at: nil,
|
|
272
|
+
# The status of the structured output extraction.
|
|
273
|
+
structured_output_extraction: nil
|
|
172
274
|
)
|
|
173
275
|
end
|
|
174
276
|
|
|
@@ -183,18 +285,34 @@ module Revox
|
|
|
183
285
|
organization_id: String,
|
|
184
286
|
status:
|
|
185
287
|
Revox::Models::CampaignListResponse::Campaign::Status::TaggedSymbol,
|
|
288
|
+
type:
|
|
289
|
+
Revox::Models::CampaignListResponse::Campaign::Type::TaggedSymbol,
|
|
186
290
|
updated_at: T.anything,
|
|
291
|
+
active_takeover_call_id: T.nilable(String),
|
|
187
292
|
assistant:
|
|
188
293
|
Revox::Models::CampaignListResponse::Campaign::Assistant,
|
|
189
294
|
call_retry_config:
|
|
190
295
|
T.nilable(
|
|
191
296
|
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig
|
|
192
297
|
),
|
|
298
|
+
created_by:
|
|
299
|
+
T.nilable(
|
|
300
|
+
Revox::Models::CampaignListResponse::Campaign::CreatedBy
|
|
301
|
+
),
|
|
193
302
|
from_phone_number: T.nilable(String),
|
|
303
|
+
funnel_stats:
|
|
304
|
+
Revox::Models::CampaignListResponse::Campaign::FunnelStats,
|
|
194
305
|
max_concurrent_calls: T.nilable(Float),
|
|
306
|
+
paused_reason:
|
|
307
|
+
T.nilable(
|
|
308
|
+
Revox::Models::CampaignListResponse::Campaign::PausedReason::TaggedSymbol
|
|
309
|
+
),
|
|
310
|
+
present_count: Float,
|
|
195
311
|
row_stats:
|
|
196
312
|
Revox::Models::CampaignListResponse::Campaign::RowStats,
|
|
197
|
-
scheduled_at: T.anything
|
|
313
|
+
scheduled_at: T.anything,
|
|
314
|
+
structured_output_extraction:
|
|
315
|
+
Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction::TaggedSymbol
|
|
198
316
|
}
|
|
199
317
|
)
|
|
200
318
|
end
|
|
@@ -245,6 +363,37 @@ module Revox
|
|
|
245
363
|
end
|
|
246
364
|
end
|
|
247
365
|
|
|
366
|
+
module Type
|
|
367
|
+
extend Revox::Internal::Type::Enum
|
|
368
|
+
|
|
369
|
+
TaggedSymbol =
|
|
370
|
+
T.type_alias do
|
|
371
|
+
T.all(Symbol, Revox::Models::CampaignListResponse::Campaign::Type)
|
|
372
|
+
end
|
|
373
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
374
|
+
|
|
375
|
+
REGULAR =
|
|
376
|
+
T.let(
|
|
377
|
+
:regular,
|
|
378
|
+
Revox::Models::CampaignListResponse::Campaign::Type::TaggedSymbol
|
|
379
|
+
)
|
|
380
|
+
JUMP_IN =
|
|
381
|
+
T.let(
|
|
382
|
+
:jump_in,
|
|
383
|
+
Revox::Models::CampaignListResponse::Campaign::Type::TaggedSymbol
|
|
384
|
+
)
|
|
385
|
+
|
|
386
|
+
sig do
|
|
387
|
+
override.returns(
|
|
388
|
+
T::Array[
|
|
389
|
+
Revox::Models::CampaignListResponse::Campaign::Type::TaggedSymbol
|
|
390
|
+
]
|
|
391
|
+
)
|
|
392
|
+
end
|
|
393
|
+
def self.values
|
|
394
|
+
end
|
|
395
|
+
end
|
|
396
|
+
|
|
248
397
|
class Assistant < Revox::Internal::Type::BaseModel
|
|
249
398
|
OrHash =
|
|
250
399
|
T.type_alias do
|
|
@@ -257,8 +406,25 @@ module Revox
|
|
|
257
406
|
sig { returns(String) }
|
|
258
407
|
attr_accessor :id
|
|
259
408
|
|
|
260
|
-
#
|
|
261
|
-
#
|
|
409
|
+
# Which call outcomes trigger the after-call SMS. When empty or null, no
|
|
410
|
+
# after-call SMS is sent. Use "none" when outcome is null.
|
|
411
|
+
sig do
|
|
412
|
+
returns(
|
|
413
|
+
T.nilable(
|
|
414
|
+
T::Array[
|
|
415
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
416
|
+
]
|
|
417
|
+
)
|
|
418
|
+
)
|
|
419
|
+
end
|
|
420
|
+
attr_accessor :after_call_sms_outcomes
|
|
421
|
+
|
|
422
|
+
# Prompt / instructions for the after-call SMS. Supports {{variable}}
|
|
423
|
+
# placeholders. When null, no after-call SMS is sent.
|
|
424
|
+
sig { returns(T.nilable(String)) }
|
|
425
|
+
attr_accessor :after_call_sms_prompt
|
|
426
|
+
|
|
427
|
+
# Ambient background sound to play during the call. null disables it.
|
|
262
428
|
sig do
|
|
263
429
|
returns(
|
|
264
430
|
T.nilable(
|
|
@@ -268,6 +434,10 @@ module Revox
|
|
|
268
434
|
end
|
|
269
435
|
attr_accessor :background_sound
|
|
270
436
|
|
|
437
|
+
# Volume of the ambient background sound (0 = silent, 1 = max).
|
|
438
|
+
sig { returns(Float) }
|
|
439
|
+
attr_accessor :background_sound_volume
|
|
440
|
+
|
|
271
441
|
sig do
|
|
272
442
|
returns(
|
|
273
443
|
T.nilable(
|
|
@@ -308,9 +478,51 @@ module Revox
|
|
|
308
478
|
end
|
|
309
479
|
attr_writer :call_retry_config
|
|
310
480
|
|
|
481
|
+
# Optional Cartesia pronunciation dictionary ID linked to this assistant.
|
|
482
|
+
sig { returns(T.nilable(String)) }
|
|
483
|
+
attr_accessor :cartesia_dictionary_pronunciation_id
|
|
484
|
+
|
|
311
485
|
sig { returns(T.anything) }
|
|
312
486
|
attr_accessor :created_at
|
|
313
487
|
|
|
488
|
+
sig do
|
|
489
|
+
returns(
|
|
490
|
+
T.nilable(
|
|
491
|
+
T::Array[
|
|
492
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool
|
|
493
|
+
]
|
|
494
|
+
)
|
|
495
|
+
)
|
|
496
|
+
end
|
|
497
|
+
attr_accessor :custom_tools
|
|
498
|
+
|
|
499
|
+
# Email address(es) to receive notifications when a call ends with a matching
|
|
500
|
+
# outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
|
|
501
|
+
# bob@y.com").
|
|
502
|
+
sig { returns(T.nilable(String)) }
|
|
503
|
+
attr_accessor :email_notification_address
|
|
504
|
+
|
|
505
|
+
# The language used for the notification email content. One of "en" or "fr".
|
|
506
|
+
sig do
|
|
507
|
+
returns(
|
|
508
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
509
|
+
)
|
|
510
|
+
end
|
|
511
|
+
attr_accessor :email_notification_language
|
|
512
|
+
|
|
513
|
+
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
514
|
+
# "completed", "none"]. Use "none" when outcome is null.
|
|
515
|
+
sig do
|
|
516
|
+
returns(
|
|
517
|
+
T.nilable(
|
|
518
|
+
T::Array[
|
|
519
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
520
|
+
]
|
|
521
|
+
)
|
|
522
|
+
)
|
|
523
|
+
end
|
|
524
|
+
attr_accessor :email_notification_outcomes
|
|
525
|
+
|
|
314
526
|
sig { returns(T.nilable(String)) }
|
|
315
527
|
attr_accessor :end_of_call_sentence
|
|
316
528
|
|
|
@@ -328,6 +540,22 @@ module Revox
|
|
|
328
540
|
end
|
|
329
541
|
attr_accessor :first_sentence_mode
|
|
330
542
|
|
|
543
|
+
# Override the default outbound phone number for calls placed with this assistant.
|
|
544
|
+
# When null, the organization's default phone number is used.
|
|
545
|
+
sig { returns(T.nilable(String)) }
|
|
546
|
+
attr_accessor :from_phone_number
|
|
547
|
+
|
|
548
|
+
# Warm or cold transfer when transfer_phone_number is set; null when transfer is
|
|
549
|
+
# not configured.
|
|
550
|
+
sig do
|
|
551
|
+
returns(
|
|
552
|
+
T.nilable(
|
|
553
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::HumanTransferMode::TaggedSymbol
|
|
554
|
+
)
|
|
555
|
+
)
|
|
556
|
+
end
|
|
557
|
+
attr_accessor :human_transfer_mode
|
|
558
|
+
|
|
331
559
|
# Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
332
560
|
# skip turns to navigate phone menus.
|
|
333
561
|
sig { returns(T::Boolean) }
|
|
@@ -340,20 +568,99 @@ module Revox
|
|
|
340
568
|
end
|
|
341
569
|
attr_accessor :llm_model
|
|
342
570
|
|
|
571
|
+
# Public URL of the brand logo shown on the assistant's demo page. Null when
|
|
572
|
+
# unset.
|
|
573
|
+
sig { returns(T.nilable(String)) }
|
|
574
|
+
attr_accessor :logo_url
|
|
575
|
+
|
|
343
576
|
# The maximum duration of the call in seconds. This is the maximum time the call
|
|
344
577
|
# will be allowed to run.
|
|
345
578
|
sig { returns(Float) }
|
|
346
579
|
attr_accessor :max_call_duration_secs
|
|
347
580
|
|
|
581
|
+
# Optional message the agent will say, without being interruptible, when the call
|
|
582
|
+
# reaches its max duration. Kept short so it fits inside the farewell buffer. If
|
|
583
|
+
# null, the call ends silently.
|
|
584
|
+
sig { returns(T.nilable(String)) }
|
|
585
|
+
attr_accessor :max_duration_end_message
|
|
586
|
+
|
|
348
587
|
sig { returns(String) }
|
|
349
588
|
attr_accessor :name
|
|
350
589
|
|
|
351
590
|
sig { returns(String) }
|
|
352
591
|
attr_accessor :organization_id
|
|
353
592
|
|
|
593
|
+
sig do
|
|
594
|
+
returns(
|
|
595
|
+
T.nilable(
|
|
596
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Position
|
|
597
|
+
)
|
|
598
|
+
)
|
|
599
|
+
end
|
|
600
|
+
attr_reader :position
|
|
601
|
+
|
|
602
|
+
sig do
|
|
603
|
+
params(
|
|
604
|
+
position:
|
|
605
|
+
T.nilable(
|
|
606
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Position::OrHash
|
|
607
|
+
)
|
|
608
|
+
).void
|
|
609
|
+
end
|
|
610
|
+
attr_writer :position
|
|
611
|
+
|
|
354
612
|
sig { returns(String) }
|
|
355
613
|
attr_accessor :prompt
|
|
356
614
|
|
|
615
|
+
sig do
|
|
616
|
+
returns(
|
|
617
|
+
T.nilable(
|
|
618
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow
|
|
619
|
+
)
|
|
620
|
+
)
|
|
621
|
+
end
|
|
622
|
+
attr_reader :prompt_flow
|
|
623
|
+
|
|
624
|
+
sig do
|
|
625
|
+
params(
|
|
626
|
+
prompt_flow:
|
|
627
|
+
T.nilable(
|
|
628
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::OrHash
|
|
629
|
+
)
|
|
630
|
+
).void
|
|
631
|
+
end
|
|
632
|
+
attr_writer :prompt_flow
|
|
633
|
+
|
|
634
|
+
sig do
|
|
635
|
+
returns(
|
|
636
|
+
T.nilable(
|
|
637
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack
|
|
638
|
+
)
|
|
639
|
+
)
|
|
640
|
+
end
|
|
641
|
+
attr_reader :slack
|
|
642
|
+
|
|
643
|
+
sig do
|
|
644
|
+
params(
|
|
645
|
+
slack:
|
|
646
|
+
T.nilable(
|
|
647
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::OrHash
|
|
648
|
+
)
|
|
649
|
+
).void
|
|
650
|
+
end
|
|
651
|
+
attr_writer :slack
|
|
652
|
+
|
|
653
|
+
# Enable SMS tool during calls. When enabled, the agent can send SMS messages to
|
|
654
|
+
# the user on the call.
|
|
655
|
+
sig { returns(T::Boolean) }
|
|
656
|
+
attr_accessor :sms_enabled
|
|
657
|
+
|
|
658
|
+
# Hardcoded SMS template to send during calls. When set, this exact text is sent
|
|
659
|
+
# instead of letting the agent generate the message. Supports {{variable}}
|
|
660
|
+
# placeholders.
|
|
661
|
+
sig { returns(T.nilable(String)) }
|
|
662
|
+
attr_accessor :sms_template
|
|
663
|
+
|
|
357
664
|
# The structured output config to use for the call. This is used to extract the
|
|
358
665
|
# data from the call (like email, name, company name, etc.).
|
|
359
666
|
sig do
|
|
@@ -367,10 +674,73 @@ module Revox
|
|
|
367
674
|
end
|
|
368
675
|
attr_accessor :structured_output_config
|
|
369
676
|
|
|
677
|
+
# Custom prompt for structured data extraction. If not provided, a default prompt
|
|
678
|
+
# is used. Available variables: {{transcript}}, {{call_direction}},
|
|
679
|
+
# {{user_phone_number}}, {{agent_phone_number}}.
|
|
680
|
+
sig { returns(T.nilable(String)) }
|
|
681
|
+
attr_accessor :structured_output_prompt
|
|
682
|
+
|
|
683
|
+
# Assistant-level speech-to-text context: structured `general` key/value pairs
|
|
684
|
+
# plus a list of domain `terms`. Prompt-derived context is merged in without
|
|
685
|
+
# replacing existing entries.
|
|
686
|
+
sig do
|
|
687
|
+
returns(
|
|
688
|
+
T.nilable(
|
|
689
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext
|
|
690
|
+
)
|
|
691
|
+
)
|
|
692
|
+
end
|
|
693
|
+
attr_reader :stt_context
|
|
694
|
+
|
|
695
|
+
sig do
|
|
696
|
+
params(
|
|
697
|
+
stt_context:
|
|
698
|
+
T.nilable(
|
|
699
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext::OrHash
|
|
700
|
+
)
|
|
701
|
+
).void
|
|
702
|
+
end
|
|
703
|
+
attr_writer :stt_context
|
|
704
|
+
|
|
705
|
+
# Transcriber (speech-to-text) model used for the assistant.
|
|
706
|
+
sig do
|
|
707
|
+
returns(
|
|
708
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttModel::TaggedSymbol
|
|
709
|
+
)
|
|
710
|
+
end
|
|
711
|
+
attr_accessor :stt_model
|
|
712
|
+
|
|
713
|
+
# Audio clip to play while the agent is processing a response. One of the built-in
|
|
714
|
+
# LiveKit audio clips; null disables it.
|
|
715
|
+
sig do
|
|
716
|
+
returns(
|
|
717
|
+
T.nilable(
|
|
718
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::TaggedSymbol
|
|
719
|
+
)
|
|
720
|
+
)
|
|
721
|
+
end
|
|
722
|
+
attr_accessor :thinking_sound
|
|
723
|
+
|
|
724
|
+
# Probability [0..1] that the thinking sound plays on any given turn; otherwise
|
|
725
|
+
# the agent is silent while thinking.
|
|
726
|
+
sig { returns(Float) }
|
|
727
|
+
attr_accessor :thinking_sound_probability
|
|
728
|
+
|
|
729
|
+
# Volume of the thinking sound (0 = silent, 1 = max).
|
|
730
|
+
sig { returns(Float) }
|
|
731
|
+
attr_accessor :thinking_sound_volume
|
|
732
|
+
|
|
370
733
|
# Phone number to transfer calls to when users request to speak to a human agent.
|
|
371
734
|
sig { returns(T.nilable(String)) }
|
|
372
735
|
attr_accessor :transfer_phone_number
|
|
373
736
|
|
|
737
|
+
sig do
|
|
738
|
+
returns(
|
|
739
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Type::TaggedSymbol
|
|
740
|
+
)
|
|
741
|
+
end
|
|
742
|
+
attr_accessor :type
|
|
743
|
+
|
|
374
744
|
sig { returns(T.anything) }
|
|
375
745
|
attr_accessor :updated_at
|
|
376
746
|
|
|
@@ -398,10 +768,59 @@ module Revox
|
|
|
398
768
|
sig { returns(T.nilable(String)) }
|
|
399
769
|
attr_accessor :voicemail_message
|
|
400
770
|
|
|
771
|
+
# Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
|
|
772
|
+
# When null, no SMS is sent on voicemail.
|
|
773
|
+
sig { returns(T.nilable(String)) }
|
|
774
|
+
attr_accessor :voicemail_sms_prompt
|
|
775
|
+
|
|
776
|
+
# Warm transfer only: instructions for the supervisor handoff summary; null when
|
|
777
|
+
# not configured or cold transfer.
|
|
778
|
+
sig { returns(T.nilable(String)) }
|
|
779
|
+
attr_accessor :warm_transfer_summary_instructions
|
|
780
|
+
|
|
401
781
|
# The webhook URL to call when the call is completed.
|
|
402
782
|
sig { returns(T.nilable(String)) }
|
|
403
783
|
attr_accessor :webhook_url
|
|
404
784
|
|
|
785
|
+
sig do
|
|
786
|
+
returns(
|
|
787
|
+
T.nilable(
|
|
788
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho
|
|
789
|
+
)
|
|
790
|
+
)
|
|
791
|
+
end
|
|
792
|
+
attr_reader :zoho
|
|
793
|
+
|
|
794
|
+
sig do
|
|
795
|
+
params(
|
|
796
|
+
zoho:
|
|
797
|
+
T.nilable(
|
|
798
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::OrHash
|
|
799
|
+
)
|
|
800
|
+
).void
|
|
801
|
+
end
|
|
802
|
+
attr_writer :zoho
|
|
803
|
+
|
|
804
|
+
# The user who created the assistant.
|
|
805
|
+
sig do
|
|
806
|
+
returns(
|
|
807
|
+
T.nilable(
|
|
808
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CreatedBy
|
|
809
|
+
)
|
|
810
|
+
)
|
|
811
|
+
end
|
|
812
|
+
attr_reader :created_by
|
|
813
|
+
|
|
814
|
+
sig do
|
|
815
|
+
params(
|
|
816
|
+
created_by:
|
|
817
|
+
T.nilable(
|
|
818
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CreatedBy::OrHash
|
|
819
|
+
)
|
|
820
|
+
).void
|
|
821
|
+
end
|
|
822
|
+
attr_writer :created_by
|
|
823
|
+
|
|
405
824
|
sig do
|
|
406
825
|
returns(
|
|
407
826
|
T.nilable(
|
|
@@ -423,6 +842,12 @@ module Revox
|
|
|
423
842
|
end
|
|
424
843
|
attr_writer :faq_items
|
|
425
844
|
|
|
845
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
846
|
+
attr_reader :is_realestate_assistant
|
|
847
|
+
|
|
848
|
+
sig { params(is_realestate_assistant: T::Boolean).void }
|
|
849
|
+
attr_writer :is_realestate_assistant
|
|
850
|
+
|
|
426
851
|
sig { returns(T.nilable(Float)) }
|
|
427
852
|
attr_reader :pending_faq_count
|
|
428
853
|
|
|
@@ -432,10 +857,18 @@ module Revox
|
|
|
432
857
|
sig do
|
|
433
858
|
params(
|
|
434
859
|
id: String,
|
|
435
|
-
|
|
860
|
+
after_call_sms_outcomes:
|
|
436
861
|
T.nilable(
|
|
437
|
-
|
|
438
|
-
|
|
862
|
+
T::Array[
|
|
863
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::OrSymbol
|
|
864
|
+
]
|
|
865
|
+
),
|
|
866
|
+
after_call_sms_prompt: T.nilable(String),
|
|
867
|
+
background_sound:
|
|
868
|
+
T.nilable(
|
|
869
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::BackgroundSound::OrSymbol
|
|
870
|
+
),
|
|
871
|
+
background_sound_volume: Float,
|
|
439
872
|
calendly:
|
|
440
873
|
T.nilable(
|
|
441
874
|
Revox::Models::CampaignListResponse::Campaign::Assistant::Calendly::OrHash
|
|
@@ -444,81 +877,217 @@ module Revox
|
|
|
444
877
|
T.nilable(
|
|
445
878
|
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::OrHash
|
|
446
879
|
),
|
|
880
|
+
cartesia_dictionary_pronunciation_id: T.nilable(String),
|
|
447
881
|
created_at: T.anything,
|
|
882
|
+
custom_tools:
|
|
883
|
+
T.nilable(
|
|
884
|
+
T::Array[
|
|
885
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::OrHash
|
|
886
|
+
]
|
|
887
|
+
),
|
|
888
|
+
email_notification_address: T.nilable(String),
|
|
889
|
+
email_notification_language:
|
|
890
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationLanguage::OrSymbol,
|
|
891
|
+
email_notification_outcomes:
|
|
892
|
+
T.nilable(
|
|
893
|
+
T::Array[
|
|
894
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::OrSymbol
|
|
895
|
+
]
|
|
896
|
+
),
|
|
448
897
|
end_of_call_sentence: T.nilable(String),
|
|
449
898
|
first_sentence: T.nilable(String),
|
|
450
899
|
first_sentence_delay_ms: Integer,
|
|
451
900
|
first_sentence_mode:
|
|
452
901
|
Revox::Models::CampaignListResponse::Campaign::Assistant::FirstSentenceMode::OrSymbol,
|
|
902
|
+
from_phone_number: T.nilable(String),
|
|
903
|
+
human_transfer_mode:
|
|
904
|
+
T.nilable(
|
|
905
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::HumanTransferMode::OrSymbol
|
|
906
|
+
),
|
|
453
907
|
ivr_navigation_enabled: T::Boolean,
|
|
454
908
|
llm_model:
|
|
455
909
|
T.any(
|
|
456
910
|
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::OrHash,
|
|
457
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1::OrHash
|
|
911
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1::OrHash,
|
|
912
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember2::OrHash,
|
|
913
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::OrHash
|
|
458
914
|
),
|
|
915
|
+
logo_url: T.nilable(String),
|
|
459
916
|
max_call_duration_secs: Float,
|
|
917
|
+
max_duration_end_message: T.nilable(String),
|
|
460
918
|
name: String,
|
|
461
919
|
organization_id: String,
|
|
920
|
+
position:
|
|
921
|
+
T.nilable(
|
|
922
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Position::OrHash
|
|
923
|
+
),
|
|
462
924
|
prompt: String,
|
|
925
|
+
prompt_flow:
|
|
926
|
+
T.nilable(
|
|
927
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::OrHash
|
|
928
|
+
),
|
|
929
|
+
slack:
|
|
930
|
+
T.nilable(
|
|
931
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::OrHash
|
|
932
|
+
),
|
|
933
|
+
sms_enabled: T::Boolean,
|
|
934
|
+
sms_template: T.nilable(String),
|
|
463
935
|
structured_output_config:
|
|
464
936
|
T.nilable(
|
|
465
937
|
T::Array[
|
|
466
938
|
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::OrHash
|
|
467
939
|
]
|
|
468
940
|
),
|
|
941
|
+
structured_output_prompt: T.nilable(String),
|
|
942
|
+
stt_context:
|
|
943
|
+
T.nilable(
|
|
944
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext::OrHash
|
|
945
|
+
),
|
|
946
|
+
stt_model:
|
|
947
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttModel::OrSymbol,
|
|
948
|
+
thinking_sound:
|
|
949
|
+
T.nilable(
|
|
950
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::OrSymbol
|
|
951
|
+
),
|
|
952
|
+
thinking_sound_probability: Float,
|
|
953
|
+
thinking_sound_volume: Float,
|
|
469
954
|
transfer_phone_number: T.nilable(String),
|
|
955
|
+
type:
|
|
956
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Type::OrSymbol,
|
|
470
957
|
updated_at: T.anything,
|
|
471
958
|
voice:
|
|
472
959
|
T.nilable(
|
|
473
960
|
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::OrHash
|
|
474
961
|
),
|
|
475
962
|
voicemail_message: T.nilable(String),
|
|
963
|
+
voicemail_sms_prompt: T.nilable(String),
|
|
964
|
+
warm_transfer_summary_instructions: T.nilable(String),
|
|
476
965
|
webhook_url: T.nilable(String),
|
|
966
|
+
zoho:
|
|
967
|
+
T.nilable(
|
|
968
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::OrHash
|
|
969
|
+
),
|
|
970
|
+
created_by:
|
|
971
|
+
T.nilable(
|
|
972
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CreatedBy::OrHash
|
|
973
|
+
),
|
|
477
974
|
faq_items:
|
|
478
975
|
T::Array[
|
|
479
976
|
Revox::Models::CampaignListResponse::Campaign::Assistant::FaqItem::OrHash
|
|
480
977
|
],
|
|
978
|
+
is_realestate_assistant: T::Boolean,
|
|
481
979
|
pending_faq_count: Float
|
|
482
980
|
).returns(T.attached_class)
|
|
483
981
|
end
|
|
484
982
|
def self.new(
|
|
485
983
|
id:,
|
|
486
|
-
#
|
|
487
|
-
#
|
|
984
|
+
# Which call outcomes trigger the after-call SMS. When empty or null, no
|
|
985
|
+
# after-call SMS is sent. Use "none" when outcome is null.
|
|
986
|
+
after_call_sms_outcomes:,
|
|
987
|
+
# Prompt / instructions for the after-call SMS. Supports {{variable}}
|
|
988
|
+
# placeholders. When null, no after-call SMS is sent.
|
|
989
|
+
after_call_sms_prompt:,
|
|
990
|
+
# Ambient background sound to play during the call. null disables it.
|
|
488
991
|
background_sound:,
|
|
992
|
+
# Volume of the ambient background sound (0 = silent, 1 = max).
|
|
993
|
+
background_sound_volume:,
|
|
489
994
|
calendly:,
|
|
490
995
|
# Configuration for call retry behavior including time windows, delays, and max
|
|
491
996
|
# iterations. If not provided, defaults will be used.
|
|
492
997
|
call_retry_config:,
|
|
998
|
+
# Optional Cartesia pronunciation dictionary ID linked to this assistant.
|
|
999
|
+
cartesia_dictionary_pronunciation_id:,
|
|
493
1000
|
created_at:,
|
|
1001
|
+
custom_tools:,
|
|
1002
|
+
# Email address(es) to receive notifications when a call ends with a matching
|
|
1003
|
+
# outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
|
|
1004
|
+
# bob@y.com").
|
|
1005
|
+
email_notification_address:,
|
|
1006
|
+
# The language used for the notification email content. One of "en" or "fr".
|
|
1007
|
+
email_notification_language:,
|
|
1008
|
+
# Which call outcomes trigger an email notification. E.g. ["interested",
|
|
1009
|
+
# "completed", "none"]. Use "none" when outcome is null.
|
|
1010
|
+
email_notification_outcomes:,
|
|
494
1011
|
end_of_call_sentence:,
|
|
495
1012
|
first_sentence:,
|
|
496
1013
|
# Delay in milliseconds before speaking the first sentence. Default: 400.
|
|
497
1014
|
first_sentence_delay_ms:,
|
|
498
1015
|
first_sentence_mode:,
|
|
1016
|
+
# Override the default outbound phone number for calls placed with this assistant.
|
|
1017
|
+
# When null, the organization's default phone number is used.
|
|
1018
|
+
from_phone_number:,
|
|
1019
|
+
# Warm or cold transfer when transfer_phone_number is set; null when transfer is
|
|
1020
|
+
# not configured.
|
|
1021
|
+
human_transfer_mode:,
|
|
499
1022
|
# Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
500
1023
|
# skip turns to navigate phone menus.
|
|
501
1024
|
ivr_navigation_enabled:,
|
|
502
1025
|
llm_model:,
|
|
1026
|
+
# Public URL of the brand logo shown on the assistant's demo page. Null when
|
|
1027
|
+
# unset.
|
|
1028
|
+
logo_url:,
|
|
503
1029
|
# The maximum duration of the call in seconds. This is the maximum time the call
|
|
504
1030
|
# will be allowed to run.
|
|
505
1031
|
max_call_duration_secs:,
|
|
1032
|
+
# Optional message the agent will say, without being interruptible, when the call
|
|
1033
|
+
# reaches its max duration. Kept short so it fits inside the farewell buffer. If
|
|
1034
|
+
# null, the call ends silently.
|
|
1035
|
+
max_duration_end_message:,
|
|
506
1036
|
name:,
|
|
507
1037
|
organization_id:,
|
|
1038
|
+
position:,
|
|
508
1039
|
prompt:,
|
|
1040
|
+
prompt_flow:,
|
|
1041
|
+
slack:,
|
|
1042
|
+
# Enable SMS tool during calls. When enabled, the agent can send SMS messages to
|
|
1043
|
+
# the user on the call.
|
|
1044
|
+
sms_enabled:,
|
|
1045
|
+
# Hardcoded SMS template to send during calls. When set, this exact text is sent
|
|
1046
|
+
# instead of letting the agent generate the message. Supports {{variable}}
|
|
1047
|
+
# placeholders.
|
|
1048
|
+
sms_template:,
|
|
509
1049
|
# The structured output config to use for the call. This is used to extract the
|
|
510
1050
|
# data from the call (like email, name, company name, etc.).
|
|
511
1051
|
structured_output_config:,
|
|
1052
|
+
# Custom prompt for structured data extraction. If not provided, a default prompt
|
|
1053
|
+
# is used. Available variables: {{transcript}}, {{call_direction}},
|
|
1054
|
+
# {{user_phone_number}}, {{agent_phone_number}}.
|
|
1055
|
+
structured_output_prompt:,
|
|
1056
|
+
# Assistant-level speech-to-text context: structured `general` key/value pairs
|
|
1057
|
+
# plus a list of domain `terms`. Prompt-derived context is merged in without
|
|
1058
|
+
# replacing existing entries.
|
|
1059
|
+
stt_context:,
|
|
1060
|
+
# Transcriber (speech-to-text) model used for the assistant.
|
|
1061
|
+
stt_model:,
|
|
1062
|
+
# Audio clip to play while the agent is processing a response. One of the built-in
|
|
1063
|
+
# LiveKit audio clips; null disables it.
|
|
1064
|
+
thinking_sound:,
|
|
1065
|
+
# Probability [0..1] that the thinking sound plays on any given turn; otherwise
|
|
1066
|
+
# the agent is silent while thinking.
|
|
1067
|
+
thinking_sound_probability:,
|
|
1068
|
+
# Volume of the thinking sound (0 = silent, 1 = max).
|
|
1069
|
+
thinking_sound_volume:,
|
|
512
1070
|
# Phone number to transfer calls to when users request to speak to a human agent.
|
|
513
1071
|
transfer_phone_number:,
|
|
1072
|
+
type:,
|
|
514
1073
|
updated_at:,
|
|
515
1074
|
voice:,
|
|
516
1075
|
# If set, when voicemail is detected the agent will speak this message then hang
|
|
517
1076
|
# up; if null, hang up immediately.
|
|
518
1077
|
voicemail_message:,
|
|
1078
|
+
# Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
|
|
1079
|
+
# When null, no SMS is sent on voicemail.
|
|
1080
|
+
voicemail_sms_prompt:,
|
|
1081
|
+
# Warm transfer only: instructions for the supervisor handoff summary; null when
|
|
1082
|
+
# not configured or cold transfer.
|
|
1083
|
+
warm_transfer_summary_instructions:,
|
|
519
1084
|
# The webhook URL to call when the call is completed.
|
|
520
1085
|
webhook_url:,
|
|
1086
|
+
zoho:,
|
|
1087
|
+
# The user who created the assistant.
|
|
1088
|
+
created_by: nil,
|
|
521
1089
|
faq_items: nil,
|
|
1090
|
+
is_realestate_assistant: nil,
|
|
522
1091
|
pending_faq_count: nil
|
|
523
1092
|
)
|
|
524
1093
|
end
|
|
@@ -527,10 +1096,18 @@ module Revox
|
|
|
527
1096
|
override.returns(
|
|
528
1097
|
{
|
|
529
1098
|
id: String,
|
|
1099
|
+
after_call_sms_outcomes:
|
|
1100
|
+
T.nilable(
|
|
1101
|
+
T::Array[
|
|
1102
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1103
|
+
]
|
|
1104
|
+
),
|
|
1105
|
+
after_call_sms_prompt: T.nilable(String),
|
|
530
1106
|
background_sound:
|
|
531
1107
|
T.nilable(
|
|
532
1108
|
Revox::Models::CampaignListResponse::Campaign::Assistant::BackgroundSound::TaggedSymbol
|
|
533
1109
|
),
|
|
1110
|
+
background_sound_volume: Float,
|
|
534
1111
|
calendly:
|
|
535
1112
|
T.nilable(
|
|
536
1113
|
Revox::Models::CampaignListResponse::Campaign::Assistant::Calendly
|
|
@@ -539,37 +1116,100 @@ module Revox
|
|
|
539
1116
|
T.nilable(
|
|
540
1117
|
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig
|
|
541
1118
|
),
|
|
1119
|
+
cartesia_dictionary_pronunciation_id: T.nilable(String),
|
|
542
1120
|
created_at: T.anything,
|
|
1121
|
+
custom_tools:
|
|
1122
|
+
T.nilable(
|
|
1123
|
+
T::Array[
|
|
1124
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool
|
|
1125
|
+
]
|
|
1126
|
+
),
|
|
1127
|
+
email_notification_address: T.nilable(String),
|
|
1128
|
+
email_notification_language:
|
|
1129
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationLanguage::TaggedSymbol,
|
|
1130
|
+
email_notification_outcomes:
|
|
1131
|
+
T.nilable(
|
|
1132
|
+
T::Array[
|
|
1133
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1134
|
+
]
|
|
1135
|
+
),
|
|
543
1136
|
end_of_call_sentence: T.nilable(String),
|
|
544
1137
|
first_sentence: T.nilable(String),
|
|
545
1138
|
first_sentence_delay_ms: Integer,
|
|
546
1139
|
first_sentence_mode:
|
|
547
1140
|
Revox::Models::CampaignListResponse::Campaign::Assistant::FirstSentenceMode::TaggedSymbol,
|
|
1141
|
+
from_phone_number: T.nilable(String),
|
|
1142
|
+
human_transfer_mode:
|
|
1143
|
+
T.nilable(
|
|
1144
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::HumanTransferMode::TaggedSymbol
|
|
1145
|
+
),
|
|
548
1146
|
ivr_navigation_enabled: T::Boolean,
|
|
549
1147
|
llm_model:
|
|
550
1148
|
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::Variants,
|
|
1149
|
+
logo_url: T.nilable(String),
|
|
551
1150
|
max_call_duration_secs: Float,
|
|
1151
|
+
max_duration_end_message: T.nilable(String),
|
|
552
1152
|
name: String,
|
|
553
1153
|
organization_id: String,
|
|
1154
|
+
position:
|
|
1155
|
+
T.nilable(
|
|
1156
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Position
|
|
1157
|
+
),
|
|
554
1158
|
prompt: String,
|
|
1159
|
+
prompt_flow:
|
|
1160
|
+
T.nilable(
|
|
1161
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow
|
|
1162
|
+
),
|
|
1163
|
+
slack:
|
|
1164
|
+
T.nilable(
|
|
1165
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack
|
|
1166
|
+
),
|
|
1167
|
+
sms_enabled: T::Boolean,
|
|
1168
|
+
sms_template: T.nilable(String),
|
|
555
1169
|
structured_output_config:
|
|
556
1170
|
T.nilable(
|
|
557
1171
|
T::Array[
|
|
558
1172
|
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig
|
|
559
1173
|
]
|
|
560
1174
|
),
|
|
1175
|
+
structured_output_prompt: T.nilable(String),
|
|
1176
|
+
stt_context:
|
|
1177
|
+
T.nilable(
|
|
1178
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext
|
|
1179
|
+
),
|
|
1180
|
+
stt_model:
|
|
1181
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttModel::TaggedSymbol,
|
|
1182
|
+
thinking_sound:
|
|
1183
|
+
T.nilable(
|
|
1184
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::TaggedSymbol
|
|
1185
|
+
),
|
|
1186
|
+
thinking_sound_probability: Float,
|
|
1187
|
+
thinking_sound_volume: Float,
|
|
561
1188
|
transfer_phone_number: T.nilable(String),
|
|
1189
|
+
type:
|
|
1190
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Type::TaggedSymbol,
|
|
562
1191
|
updated_at: T.anything,
|
|
563
1192
|
voice:
|
|
564
1193
|
T.nilable(
|
|
565
1194
|
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice
|
|
566
1195
|
),
|
|
567
1196
|
voicemail_message: T.nilable(String),
|
|
1197
|
+
voicemail_sms_prompt: T.nilable(String),
|
|
1198
|
+
warm_transfer_summary_instructions: T.nilable(String),
|
|
568
1199
|
webhook_url: T.nilable(String),
|
|
1200
|
+
zoho:
|
|
1201
|
+
T.nilable(
|
|
1202
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho
|
|
1203
|
+
),
|
|
1204
|
+
created_by:
|
|
1205
|
+
T.nilable(
|
|
1206
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CreatedBy
|
|
1207
|
+
),
|
|
569
1208
|
faq_items:
|
|
570
1209
|
T::Array[
|
|
571
1210
|
Revox::Models::CampaignListResponse::Campaign::Assistant::FaqItem
|
|
572
1211
|
],
|
|
1212
|
+
is_realestate_assistant: T::Boolean,
|
|
573
1213
|
pending_faq_count: Float
|
|
574
1214
|
}
|
|
575
1215
|
)
|
|
@@ -577,8 +1217,71 @@ module Revox
|
|
|
577
1217
|
def to_hash
|
|
578
1218
|
end
|
|
579
1219
|
|
|
580
|
-
|
|
581
|
-
|
|
1220
|
+
module AfterCallSMSOutcome
|
|
1221
|
+
extend Revox::Internal::Type::Enum
|
|
1222
|
+
|
|
1223
|
+
TaggedSymbol =
|
|
1224
|
+
T.type_alias do
|
|
1225
|
+
T.all(
|
|
1226
|
+
Symbol,
|
|
1227
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome
|
|
1228
|
+
)
|
|
1229
|
+
end
|
|
1230
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1231
|
+
|
|
1232
|
+
NOT_INTERESTED =
|
|
1233
|
+
T.let(
|
|
1234
|
+
:not_interested,
|
|
1235
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1236
|
+
)
|
|
1237
|
+
INTERESTED =
|
|
1238
|
+
T.let(
|
|
1239
|
+
:interested,
|
|
1240
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1241
|
+
)
|
|
1242
|
+
COMPLETED =
|
|
1243
|
+
T.let(
|
|
1244
|
+
:completed,
|
|
1245
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1246
|
+
)
|
|
1247
|
+
REQUESTED_CALLBACK_LATER =
|
|
1248
|
+
T.let(
|
|
1249
|
+
:requested_callback_later,
|
|
1250
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1251
|
+
)
|
|
1252
|
+
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
1253
|
+
T.let(
|
|
1254
|
+
:requested_callback_new_number,
|
|
1255
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1256
|
+
)
|
|
1257
|
+
DO_NOT_CONTACT =
|
|
1258
|
+
T.let(
|
|
1259
|
+
:do_not_contact,
|
|
1260
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1261
|
+
)
|
|
1262
|
+
AI_AVERSE =
|
|
1263
|
+
T.let(
|
|
1264
|
+
:ai_averse,
|
|
1265
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1266
|
+
)
|
|
1267
|
+
NONE =
|
|
1268
|
+
T.let(
|
|
1269
|
+
:none,
|
|
1270
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1271
|
+
)
|
|
1272
|
+
|
|
1273
|
+
sig do
|
|
1274
|
+
override.returns(
|
|
1275
|
+
T::Array[
|
|
1276
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
|
|
1277
|
+
]
|
|
1278
|
+
)
|
|
1279
|
+
end
|
|
1280
|
+
def self.values
|
|
1281
|
+
end
|
|
1282
|
+
end
|
|
1283
|
+
|
|
1284
|
+
# Ambient background sound to play during the call. null disables it.
|
|
582
1285
|
module BackgroundSound
|
|
583
1286
|
extend Revox::Internal::Type::Enum
|
|
584
1287
|
|
|
@@ -656,6 +1359,24 @@ module Revox
|
|
|
656
1359
|
)
|
|
657
1360
|
end
|
|
658
1361
|
|
|
1362
|
+
# Days of the week when calls are allowed, in the recipient's timezone. Default:
|
|
1363
|
+
# Monday through Friday.
|
|
1364
|
+
sig do
|
|
1365
|
+
returns(
|
|
1366
|
+
T::Array[
|
|
1367
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1368
|
+
]
|
|
1369
|
+
)
|
|
1370
|
+
end
|
|
1371
|
+
attr_accessor :allowed_days
|
|
1372
|
+
|
|
1373
|
+
# If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
|
|
1374
|
+
# retry_delay_seconds) when attempt #1 didn't reach a human.
|
|
1375
|
+
# Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
|
|
1376
|
+
# Default: false.
|
|
1377
|
+
sig { returns(T::Boolean) }
|
|
1378
|
+
attr_accessor :call_twice_in_a_row
|
|
1379
|
+
|
|
659
1380
|
sig do
|
|
660
1381
|
returns(
|
|
661
1382
|
T::Array[
|
|
@@ -679,6 +1400,11 @@ module Revox
|
|
|
679
1400
|
# iterations. If not provided, defaults will be used.
|
|
680
1401
|
sig do
|
|
681
1402
|
params(
|
|
1403
|
+
allowed_days:
|
|
1404
|
+
T::Array[
|
|
1405
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::OrSymbol
|
|
1406
|
+
],
|
|
1407
|
+
call_twice_in_a_row: T::Boolean,
|
|
682
1408
|
calling_windows:
|
|
683
1409
|
T::Array[
|
|
684
1410
|
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::CallingWindow::OrHash
|
|
@@ -688,6 +1414,14 @@ module Revox
|
|
|
688
1414
|
).returns(T.attached_class)
|
|
689
1415
|
end
|
|
690
1416
|
def self.new(
|
|
1417
|
+
# Days of the week when calls are allowed, in the recipient's timezone. Default:
|
|
1418
|
+
# Monday through Friday.
|
|
1419
|
+
allowed_days:,
|
|
1420
|
+
# If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
|
|
1421
|
+
# retry_delay_seconds) when attempt #1 didn't reach a human.
|
|
1422
|
+
# Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
|
|
1423
|
+
# Default: false.
|
|
1424
|
+
call_twice_in_a_row:,
|
|
691
1425
|
calling_windows:,
|
|
692
1426
|
# Maximum number of call retry attempts. Default: 3.
|
|
693
1427
|
max_retry_attempts:,
|
|
@@ -701,6 +1435,11 @@ module Revox
|
|
|
701
1435
|
sig do
|
|
702
1436
|
override.returns(
|
|
703
1437
|
{
|
|
1438
|
+
allowed_days:
|
|
1439
|
+
T::Array[
|
|
1440
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1441
|
+
],
|
|
1442
|
+
call_twice_in_a_row: T::Boolean,
|
|
704
1443
|
calling_windows:
|
|
705
1444
|
T::Array[
|
|
706
1445
|
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::CallingWindow
|
|
@@ -713,6 +1452,65 @@ module Revox
|
|
|
713
1452
|
def to_hash
|
|
714
1453
|
end
|
|
715
1454
|
|
|
1455
|
+
module AllowedDay
|
|
1456
|
+
extend Revox::Internal::Type::Enum
|
|
1457
|
+
|
|
1458
|
+
TaggedSymbol =
|
|
1459
|
+
T.type_alias do
|
|
1460
|
+
T.all(
|
|
1461
|
+
Symbol,
|
|
1462
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay
|
|
1463
|
+
)
|
|
1464
|
+
end
|
|
1465
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1466
|
+
|
|
1467
|
+
MONDAY =
|
|
1468
|
+
T.let(
|
|
1469
|
+
:monday,
|
|
1470
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1471
|
+
)
|
|
1472
|
+
TUESDAY =
|
|
1473
|
+
T.let(
|
|
1474
|
+
:tuesday,
|
|
1475
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1476
|
+
)
|
|
1477
|
+
WEDNESDAY =
|
|
1478
|
+
T.let(
|
|
1479
|
+
:wednesday,
|
|
1480
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1481
|
+
)
|
|
1482
|
+
THURSDAY =
|
|
1483
|
+
T.let(
|
|
1484
|
+
:thursday,
|
|
1485
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1486
|
+
)
|
|
1487
|
+
FRIDAY =
|
|
1488
|
+
T.let(
|
|
1489
|
+
:friday,
|
|
1490
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1491
|
+
)
|
|
1492
|
+
SATURDAY =
|
|
1493
|
+
T.let(
|
|
1494
|
+
:saturday,
|
|
1495
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1496
|
+
)
|
|
1497
|
+
SUNDAY =
|
|
1498
|
+
T.let(
|
|
1499
|
+
:sunday,
|
|
1500
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1501
|
+
)
|
|
1502
|
+
|
|
1503
|
+
sig do
|
|
1504
|
+
override.returns(
|
|
1505
|
+
T::Array[
|
|
1506
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
1507
|
+
]
|
|
1508
|
+
)
|
|
1509
|
+
end
|
|
1510
|
+
def self.values
|
|
1511
|
+
end
|
|
1512
|
+
end
|
|
1513
|
+
|
|
716
1514
|
class CallingWindow < Revox::Internal::Type::BaseModel
|
|
717
1515
|
OrHash =
|
|
718
1516
|
T.type_alias do
|
|
@@ -773,124 +1571,289 @@ module Revox
|
|
|
773
1571
|
end
|
|
774
1572
|
end
|
|
775
1573
|
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
TaggedSymbol =
|
|
1574
|
+
class CustomTool < Revox::Internal::Type::BaseModel
|
|
1575
|
+
OrHash =
|
|
780
1576
|
T.type_alias do
|
|
781
|
-
T.
|
|
782
|
-
|
|
783
|
-
Revox::
|
|
1577
|
+
T.any(
|
|
1578
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool,
|
|
1579
|
+
Revox::Internal::AnyHash
|
|
784
1580
|
)
|
|
785
1581
|
end
|
|
786
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
787
1582
|
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
1583
|
+
# JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
|
|
1584
|
+
# "{{name}}") for dynamic values
|
|
1585
|
+
sig { returns(T.nilable(String)) }
|
|
1586
|
+
attr_accessor :body_template
|
|
1587
|
+
|
|
1588
|
+
# Human-readable description of what the tool does, used by the LLM to decide when
|
|
1589
|
+
# to call it
|
|
1590
|
+
sig { returns(String) }
|
|
1591
|
+
attr_accessor :description
|
|
1592
|
+
|
|
1593
|
+
# HTTP headers to include in the request. Values support {{variable}} placeholders
|
|
1594
|
+
sig do
|
|
1595
|
+
returns(
|
|
1596
|
+
T::Array[
|
|
1597
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Header
|
|
1598
|
+
]
|
|
792
1599
|
)
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
1600
|
+
end
|
|
1601
|
+
attr_accessor :headers
|
|
1602
|
+
|
|
1603
|
+
# Schema defining the parameters the LLM should extract from the conversation to
|
|
1604
|
+
# pass to this tool
|
|
1605
|
+
sig do
|
|
1606
|
+
returns(
|
|
1607
|
+
T::Array[
|
|
1608
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema
|
|
1609
|
+
]
|
|
797
1610
|
)
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
1611
|
+
end
|
|
1612
|
+
attr_accessor :input_schema
|
|
1613
|
+
|
|
1614
|
+
# HTTP method to use when calling the API endpoint
|
|
1615
|
+
sig do
|
|
1616
|
+
returns(
|
|
1617
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method::TaggedSymbol
|
|
802
1618
|
)
|
|
1619
|
+
end
|
|
1620
|
+
attr_accessor :method_
|
|
1621
|
+
|
|
1622
|
+
# Unique tool name in lowercase_snake_case (e.g. check_inventory)
|
|
1623
|
+
sig { returns(String) }
|
|
1624
|
+
attr_accessor :name
|
|
803
1625
|
|
|
1626
|
+
# Query string parameters appended to the URL. Values support {{variable}}
|
|
1627
|
+
# placeholders
|
|
804
1628
|
sig do
|
|
805
|
-
|
|
1629
|
+
returns(
|
|
806
1630
|
T::Array[
|
|
807
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
1631
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::QueryParam
|
|
808
1632
|
]
|
|
809
1633
|
)
|
|
810
1634
|
end
|
|
811
|
-
|
|
812
|
-
end
|
|
813
|
-
end
|
|
1635
|
+
attr_accessor :query_params
|
|
814
1636
|
|
|
815
|
-
|
|
816
|
-
|
|
1637
|
+
# Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
|
|
1638
|
+
# values
|
|
1639
|
+
sig { returns(String) }
|
|
1640
|
+
attr_accessor :url
|
|
817
1641
|
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
T.
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
1642
|
+
sig do
|
|
1643
|
+
params(
|
|
1644
|
+
body_template: T.nilable(String),
|
|
1645
|
+
description: String,
|
|
1646
|
+
headers:
|
|
1647
|
+
T::Array[
|
|
1648
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Header::OrHash
|
|
1649
|
+
],
|
|
1650
|
+
input_schema:
|
|
1651
|
+
T::Array[
|
|
1652
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::OrHash
|
|
1653
|
+
],
|
|
1654
|
+
method_:
|
|
1655
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method::OrSymbol,
|
|
1656
|
+
name: String,
|
|
1657
|
+
query_params:
|
|
1658
|
+
T::Array[
|
|
1659
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::QueryParam::OrHash
|
|
1660
|
+
],
|
|
1661
|
+
url: String
|
|
1662
|
+
).returns(T.attached_class)
|
|
1663
|
+
end
|
|
1664
|
+
def self.new(
|
|
1665
|
+
# JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
|
|
1666
|
+
# "{{name}}") for dynamic values
|
|
1667
|
+
body_template:,
|
|
1668
|
+
# Human-readable description of what the tool does, used by the LLM to decide when
|
|
1669
|
+
# to call it
|
|
1670
|
+
description:,
|
|
1671
|
+
# HTTP headers to include in the request. Values support {{variable}} placeholders
|
|
1672
|
+
headers:,
|
|
1673
|
+
# Schema defining the parameters the LLM should extract from the conversation to
|
|
1674
|
+
# pass to this tool
|
|
1675
|
+
input_schema:,
|
|
1676
|
+
# HTTP method to use when calling the API endpoint
|
|
1677
|
+
method_:,
|
|
1678
|
+
# Unique tool name in lowercase_snake_case (e.g. check_inventory)
|
|
1679
|
+
name:,
|
|
1680
|
+
# Query string parameters appended to the URL. Values support {{variable}}
|
|
1681
|
+
# placeholders
|
|
1682
|
+
query_params:,
|
|
1683
|
+
# Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
|
|
1684
|
+
# values
|
|
1685
|
+
url:
|
|
1686
|
+
)
|
|
1687
|
+
end
|
|
825
1688
|
|
|
826
|
-
|
|
1689
|
+
sig do
|
|
1690
|
+
override.returns(
|
|
1691
|
+
{
|
|
1692
|
+
body_template: T.nilable(String),
|
|
1693
|
+
description: String,
|
|
1694
|
+
headers:
|
|
1695
|
+
T::Array[
|
|
1696
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Header
|
|
1697
|
+
],
|
|
1698
|
+
input_schema:
|
|
1699
|
+
T::Array[
|
|
1700
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema
|
|
1701
|
+
],
|
|
1702
|
+
method_:
|
|
1703
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method::TaggedSymbol,
|
|
1704
|
+
name: String,
|
|
1705
|
+
query_params:
|
|
1706
|
+
T::Array[
|
|
1707
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::QueryParam
|
|
1708
|
+
],
|
|
1709
|
+
url: String
|
|
1710
|
+
}
|
|
1711
|
+
)
|
|
1712
|
+
end
|
|
1713
|
+
def to_hash
|
|
1714
|
+
end
|
|
1715
|
+
|
|
1716
|
+
class Header < Revox::Internal::Type::BaseModel
|
|
827
1717
|
OrHash =
|
|
828
1718
|
T.type_alias do
|
|
829
1719
|
T.any(
|
|
830
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
1720
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Header,
|
|
831
1721
|
Revox::Internal::AnyHash
|
|
832
1722
|
)
|
|
833
1723
|
end
|
|
834
1724
|
|
|
835
|
-
sig
|
|
836
|
-
|
|
837
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
|
|
838
|
-
)
|
|
839
|
-
end
|
|
840
|
-
attr_accessor :name
|
|
1725
|
+
sig { returns(String) }
|
|
1726
|
+
attr_accessor :key
|
|
841
1727
|
|
|
842
|
-
sig { returns(
|
|
843
|
-
attr_accessor :
|
|
1728
|
+
sig { returns(String) }
|
|
1729
|
+
attr_accessor :value
|
|
844
1730
|
|
|
845
1731
|
sig do
|
|
846
|
-
params(
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
1732
|
+
params(key: String, value: String).returns(T.attached_class)
|
|
1733
|
+
end
|
|
1734
|
+
def self.new(key:, value:)
|
|
1735
|
+
end
|
|
1736
|
+
|
|
1737
|
+
sig { override.returns({ key: String, value: String }) }
|
|
1738
|
+
def to_hash
|
|
1739
|
+
end
|
|
1740
|
+
end
|
|
1741
|
+
|
|
1742
|
+
class InputSchema < Revox::Internal::Type::BaseModel
|
|
1743
|
+
OrHash =
|
|
1744
|
+
T.type_alias do
|
|
1745
|
+
T.any(
|
|
1746
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema,
|
|
1747
|
+
Revox::Internal::AnyHash
|
|
1748
|
+
)
|
|
1749
|
+
end
|
|
1750
|
+
|
|
1751
|
+
sig { returns(String) }
|
|
1752
|
+
attr_accessor :name
|
|
1753
|
+
|
|
1754
|
+
sig { returns(T::Boolean) }
|
|
1755
|
+
attr_accessor :required
|
|
1756
|
+
|
|
1757
|
+
sig do
|
|
1758
|
+
returns(
|
|
1759
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
1760
|
+
)
|
|
1761
|
+
end
|
|
1762
|
+
attr_accessor :type
|
|
1763
|
+
|
|
1764
|
+
sig { returns(T.nilable(String)) }
|
|
1765
|
+
attr_reader :description
|
|
1766
|
+
|
|
1767
|
+
sig { params(description: String).void }
|
|
1768
|
+
attr_writer :description
|
|
1769
|
+
|
|
1770
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
1771
|
+
attr_reader :enum_options
|
|
1772
|
+
|
|
1773
|
+
sig { params(enum_options: T::Array[String]).void }
|
|
1774
|
+
attr_writer :enum_options
|
|
1775
|
+
|
|
1776
|
+
sig do
|
|
1777
|
+
params(
|
|
1778
|
+
name: String,
|
|
1779
|
+
required: T::Boolean,
|
|
1780
|
+
type:
|
|
1781
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type::OrSymbol,
|
|
1782
|
+
description: String,
|
|
1783
|
+
enum_options: T::Array[String]
|
|
850
1784
|
).returns(T.attached_class)
|
|
851
1785
|
end
|
|
852
|
-
def self.new(
|
|
1786
|
+
def self.new(
|
|
1787
|
+
name:,
|
|
1788
|
+
required:,
|
|
1789
|
+
type:,
|
|
1790
|
+
description: nil,
|
|
1791
|
+
enum_options: nil
|
|
1792
|
+
)
|
|
853
1793
|
end
|
|
854
1794
|
|
|
855
1795
|
sig do
|
|
856
1796
|
override.returns(
|
|
857
1797
|
{
|
|
858
|
-
name:
|
|
859
|
-
|
|
860
|
-
type:
|
|
1798
|
+
name: String,
|
|
1799
|
+
required: T::Boolean,
|
|
1800
|
+
type:
|
|
1801
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type::TaggedSymbol,
|
|
1802
|
+
description: String,
|
|
1803
|
+
enum_options: T::Array[String]
|
|
861
1804
|
}
|
|
862
1805
|
)
|
|
863
1806
|
end
|
|
864
1807
|
def to_hash
|
|
865
1808
|
end
|
|
866
1809
|
|
|
867
|
-
module
|
|
1810
|
+
module Type
|
|
868
1811
|
extend Revox::Internal::Type::Enum
|
|
869
1812
|
|
|
870
1813
|
TaggedSymbol =
|
|
871
1814
|
T.type_alias do
|
|
872
1815
|
T.all(
|
|
873
1816
|
Symbol,
|
|
874
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
1817
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type
|
|
875
1818
|
)
|
|
876
1819
|
end
|
|
877
1820
|
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
878
1821
|
|
|
879
|
-
|
|
1822
|
+
STRING =
|
|
880
1823
|
T.let(
|
|
881
|
-
:
|
|
882
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
1824
|
+
:string,
|
|
1825
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
883
1826
|
)
|
|
884
|
-
|
|
1827
|
+
NUMBER =
|
|
885
1828
|
T.let(
|
|
886
|
-
:
|
|
887
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
1829
|
+
:number,
|
|
1830
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
1831
|
+
)
|
|
1832
|
+
BOOLEAN =
|
|
1833
|
+
T.let(
|
|
1834
|
+
:boolean,
|
|
1835
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
1836
|
+
)
|
|
1837
|
+
ENUM =
|
|
1838
|
+
T.let(
|
|
1839
|
+
:enum,
|
|
1840
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
1841
|
+
)
|
|
1842
|
+
DATE =
|
|
1843
|
+
T.let(
|
|
1844
|
+
:date,
|
|
1845
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
1846
|
+
)
|
|
1847
|
+
DATETIME =
|
|
1848
|
+
T.let(
|
|
1849
|
+
:datetime,
|
|
1850
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
888
1851
|
)
|
|
889
1852
|
|
|
890
1853
|
sig do
|
|
891
1854
|
override.returns(
|
|
892
1855
|
T::Array[
|
|
893
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
1856
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::InputSchema::Type::TaggedSymbol
|
|
894
1857
|
]
|
|
895
1858
|
)
|
|
896
1859
|
end
|
|
@@ -899,124 +1862,1020 @@ module Revox
|
|
|
899
1862
|
end
|
|
900
1863
|
end
|
|
901
1864
|
|
|
902
|
-
|
|
1865
|
+
# HTTP method to use when calling the API endpoint
|
|
1866
|
+
module Method
|
|
1867
|
+
extend Revox::Internal::Type::Enum
|
|
1868
|
+
|
|
1869
|
+
TaggedSymbol =
|
|
1870
|
+
T.type_alias do
|
|
1871
|
+
T.all(
|
|
1872
|
+
Symbol,
|
|
1873
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method
|
|
1874
|
+
)
|
|
1875
|
+
end
|
|
1876
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1877
|
+
|
|
1878
|
+
GET =
|
|
1879
|
+
T.let(
|
|
1880
|
+
:GET,
|
|
1881
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method::TaggedSymbol
|
|
1882
|
+
)
|
|
1883
|
+
POST =
|
|
1884
|
+
T.let(
|
|
1885
|
+
:POST,
|
|
1886
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method::TaggedSymbol
|
|
1887
|
+
)
|
|
1888
|
+
PUT =
|
|
1889
|
+
T.let(
|
|
1890
|
+
:PUT,
|
|
1891
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method::TaggedSymbol
|
|
1892
|
+
)
|
|
1893
|
+
PATCH =
|
|
1894
|
+
T.let(
|
|
1895
|
+
:PATCH,
|
|
1896
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method::TaggedSymbol
|
|
1897
|
+
)
|
|
1898
|
+
DELETE =
|
|
1899
|
+
T.let(
|
|
1900
|
+
:DELETE,
|
|
1901
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method::TaggedSymbol
|
|
1902
|
+
)
|
|
1903
|
+
|
|
1904
|
+
sig do
|
|
1905
|
+
override.returns(
|
|
1906
|
+
T::Array[
|
|
1907
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::Method::TaggedSymbol
|
|
1908
|
+
]
|
|
1909
|
+
)
|
|
1910
|
+
end
|
|
1911
|
+
def self.values
|
|
1912
|
+
end
|
|
1913
|
+
end
|
|
1914
|
+
|
|
1915
|
+
class QueryParam < Revox::Internal::Type::BaseModel
|
|
903
1916
|
OrHash =
|
|
904
1917
|
T.type_alias do
|
|
905
1918
|
T.any(
|
|
906
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
1919
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CustomTool::QueryParam,
|
|
907
1920
|
Revox::Internal::AnyHash
|
|
908
1921
|
)
|
|
909
1922
|
end
|
|
910
1923
|
|
|
911
|
-
# The model ID to use from OpenRouter. eg: openai/gpt-4.1
|
|
912
1924
|
sig { returns(String) }
|
|
913
|
-
attr_accessor :
|
|
1925
|
+
attr_accessor :key
|
|
914
1926
|
|
|
915
|
-
# The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
|
|
916
1927
|
sig { returns(String) }
|
|
917
|
-
attr_accessor :
|
|
918
|
-
|
|
919
|
-
# Use a model from OpenRouter.
|
|
920
|
-
sig { returns(Symbol) }
|
|
921
|
-
attr_accessor :type
|
|
1928
|
+
attr_accessor :value
|
|
922
1929
|
|
|
923
1930
|
sig do
|
|
924
|
-
params(
|
|
925
|
-
openrouter_model_id: String,
|
|
926
|
-
openrouter_provider: String,
|
|
927
|
-
type: Symbol
|
|
928
|
-
).returns(T.attached_class)
|
|
1931
|
+
params(key: String, value: String).returns(T.attached_class)
|
|
929
1932
|
end
|
|
930
|
-
def self.new(
|
|
931
|
-
# The model ID to use from OpenRouter. eg: openai/gpt-4.1
|
|
932
|
-
openrouter_model_id:,
|
|
933
|
-
# The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
|
|
934
|
-
openrouter_provider:,
|
|
935
|
-
# Use a model from OpenRouter.
|
|
936
|
-
type: :openrouter
|
|
937
|
-
)
|
|
1933
|
+
def self.new(key:, value:)
|
|
938
1934
|
end
|
|
939
1935
|
|
|
940
|
-
sig
|
|
941
|
-
override.returns(
|
|
942
|
-
{
|
|
943
|
-
openrouter_model_id: String,
|
|
944
|
-
openrouter_provider: String,
|
|
945
|
-
type: Symbol
|
|
946
|
-
}
|
|
947
|
-
)
|
|
948
|
-
end
|
|
1936
|
+
sig { override.returns({ key: String, value: String }) }
|
|
949
1937
|
def to_hash
|
|
950
1938
|
end
|
|
951
1939
|
end
|
|
1940
|
+
end
|
|
1941
|
+
|
|
1942
|
+
# The language used for the notification email content. One of "en" or "fr".
|
|
1943
|
+
module EmailNotificationLanguage
|
|
1944
|
+
extend Revox::Internal::Type::Enum
|
|
1945
|
+
|
|
1946
|
+
TaggedSymbol =
|
|
1947
|
+
T.type_alias do
|
|
1948
|
+
T.all(
|
|
1949
|
+
Symbol,
|
|
1950
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationLanguage
|
|
1951
|
+
)
|
|
1952
|
+
end
|
|
1953
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1954
|
+
|
|
1955
|
+
EN =
|
|
1956
|
+
T.let(
|
|
1957
|
+
:en,
|
|
1958
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
1959
|
+
)
|
|
1960
|
+
FR =
|
|
1961
|
+
T.let(
|
|
1962
|
+
:fr,
|
|
1963
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
1964
|
+
)
|
|
952
1965
|
|
|
953
1966
|
sig do
|
|
954
1967
|
override.returns(
|
|
955
1968
|
T::Array[
|
|
956
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
1969
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationLanguage::TaggedSymbol
|
|
957
1970
|
]
|
|
958
1971
|
)
|
|
959
1972
|
end
|
|
960
|
-
def self.
|
|
1973
|
+
def self.values
|
|
961
1974
|
end
|
|
962
1975
|
end
|
|
963
1976
|
|
|
964
|
-
|
|
965
|
-
|
|
1977
|
+
module EmailNotificationOutcome
|
|
1978
|
+
extend Revox::Internal::Type::Enum
|
|
1979
|
+
|
|
1980
|
+
TaggedSymbol =
|
|
966
1981
|
T.type_alias do
|
|
967
|
-
T.
|
|
968
|
-
|
|
969
|
-
Revox::
|
|
1982
|
+
T.all(
|
|
1983
|
+
Symbol,
|
|
1984
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome
|
|
970
1985
|
)
|
|
971
1986
|
end
|
|
1987
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
972
1988
|
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
1989
|
+
NOT_INTERESTED =
|
|
1990
|
+
T.let(
|
|
1991
|
+
:not_interested,
|
|
1992
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1993
|
+
)
|
|
1994
|
+
INTERESTED =
|
|
1995
|
+
T.let(
|
|
1996
|
+
:interested,
|
|
1997
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
1998
|
+
)
|
|
1999
|
+
COMPLETED =
|
|
2000
|
+
T.let(
|
|
2001
|
+
:completed,
|
|
2002
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2003
|
+
)
|
|
2004
|
+
REQUESTED_CALLBACK_LATER =
|
|
2005
|
+
T.let(
|
|
2006
|
+
:requested_callback_later,
|
|
2007
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2008
|
+
)
|
|
2009
|
+
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
2010
|
+
T.let(
|
|
2011
|
+
:requested_callback_new_number,
|
|
2012
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2013
|
+
)
|
|
2014
|
+
DO_NOT_CONTACT =
|
|
2015
|
+
T.let(
|
|
2016
|
+
:do_not_contact,
|
|
2017
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2018
|
+
)
|
|
2019
|
+
AI_AVERSE =
|
|
2020
|
+
T.let(
|
|
2021
|
+
:ai_averse,
|
|
2022
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2023
|
+
)
|
|
2024
|
+
NONE =
|
|
2025
|
+
T.let(
|
|
2026
|
+
:none,
|
|
2027
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2028
|
+
)
|
|
978
2029
|
|
|
979
2030
|
sig do
|
|
980
|
-
returns(
|
|
981
|
-
|
|
2031
|
+
override.returns(
|
|
2032
|
+
T::Array[
|
|
2033
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
|
|
2034
|
+
]
|
|
982
2035
|
)
|
|
983
2036
|
end
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
attr_reader :description
|
|
2037
|
+
def self.values
|
|
2038
|
+
end
|
|
2039
|
+
end
|
|
988
2040
|
|
|
989
|
-
|
|
990
|
-
|
|
2041
|
+
module FirstSentenceMode
|
|
2042
|
+
extend Revox::Internal::Type::Enum
|
|
991
2043
|
|
|
992
|
-
|
|
993
|
-
|
|
2044
|
+
TaggedSymbol =
|
|
2045
|
+
T.type_alias do
|
|
2046
|
+
T.all(
|
|
2047
|
+
Symbol,
|
|
2048
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::FirstSentenceMode
|
|
2049
|
+
)
|
|
2050
|
+
end
|
|
2051
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
994
2052
|
|
|
995
|
-
|
|
996
|
-
|
|
2053
|
+
GENERATED =
|
|
2054
|
+
T.let(
|
|
2055
|
+
:generated,
|
|
2056
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::FirstSentenceMode::TaggedSymbol
|
|
2057
|
+
)
|
|
2058
|
+
STATIC =
|
|
2059
|
+
T.let(
|
|
2060
|
+
:static,
|
|
2061
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::FirstSentenceMode::TaggedSymbol
|
|
2062
|
+
)
|
|
2063
|
+
NONE =
|
|
2064
|
+
T.let(
|
|
2065
|
+
:none,
|
|
2066
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::FirstSentenceMode::TaggedSymbol
|
|
2067
|
+
)
|
|
997
2068
|
|
|
998
2069
|
sig do
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
description: String,
|
|
1005
|
-
enum_options: T::Array[String]
|
|
1006
|
-
).returns(T.attached_class)
|
|
2070
|
+
override.returns(
|
|
2071
|
+
T::Array[
|
|
2072
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::FirstSentenceMode::TaggedSymbol
|
|
2073
|
+
]
|
|
2074
|
+
)
|
|
1007
2075
|
end
|
|
1008
|
-
def self.
|
|
1009
|
-
name:,
|
|
1010
|
-
required:,
|
|
1011
|
-
type:,
|
|
1012
|
-
description: nil,
|
|
1013
|
-
enum_options: nil
|
|
1014
|
-
)
|
|
2076
|
+
def self.values
|
|
1015
2077
|
end
|
|
2078
|
+
end
|
|
2079
|
+
|
|
2080
|
+
# Warm or cold transfer when transfer_phone_number is set; null when transfer is
|
|
2081
|
+
# not configured.
|
|
2082
|
+
module HumanTransferMode
|
|
2083
|
+
extend Revox::Internal::Type::Enum
|
|
2084
|
+
|
|
2085
|
+
TaggedSymbol =
|
|
2086
|
+
T.type_alias do
|
|
2087
|
+
T.all(
|
|
2088
|
+
Symbol,
|
|
2089
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::HumanTransferMode
|
|
2090
|
+
)
|
|
2091
|
+
end
|
|
2092
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2093
|
+
|
|
2094
|
+
WARM =
|
|
2095
|
+
T.let(
|
|
2096
|
+
:warm,
|
|
2097
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::HumanTransferMode::TaggedSymbol
|
|
2098
|
+
)
|
|
2099
|
+
COLD =
|
|
2100
|
+
T.let(
|
|
2101
|
+
:cold,
|
|
2102
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::HumanTransferMode::TaggedSymbol
|
|
2103
|
+
)
|
|
1016
2104
|
|
|
1017
2105
|
sig do
|
|
1018
2106
|
override.returns(
|
|
1019
|
-
|
|
2107
|
+
T::Array[
|
|
2108
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::HumanTransferMode::TaggedSymbol
|
|
2109
|
+
]
|
|
2110
|
+
)
|
|
2111
|
+
end
|
|
2112
|
+
def self.values
|
|
2113
|
+
end
|
|
2114
|
+
end
|
|
2115
|
+
|
|
2116
|
+
module LlmModel
|
|
2117
|
+
extend Revox::Internal::Type::Union
|
|
2118
|
+
|
|
2119
|
+
Variants =
|
|
2120
|
+
T.type_alias do
|
|
2121
|
+
T.any(
|
|
2122
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0,
|
|
2123
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1,
|
|
2124
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember2,
|
|
2125
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3
|
|
2126
|
+
)
|
|
2127
|
+
end
|
|
2128
|
+
|
|
2129
|
+
class UnionMember0 < Revox::Internal::Type::BaseModel
|
|
2130
|
+
OrHash =
|
|
2131
|
+
T.type_alias do
|
|
2132
|
+
T.any(
|
|
2133
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0,
|
|
2134
|
+
Revox::Internal::AnyHash
|
|
2135
|
+
)
|
|
2136
|
+
end
|
|
2137
|
+
|
|
2138
|
+
sig do
|
|
2139
|
+
returns(
|
|
2140
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
|
|
2141
|
+
)
|
|
2142
|
+
end
|
|
2143
|
+
attr_accessor :name
|
|
2144
|
+
|
|
2145
|
+
sig { returns(Symbol) }
|
|
2146
|
+
attr_accessor :type
|
|
2147
|
+
|
|
2148
|
+
sig do
|
|
2149
|
+
params(
|
|
2150
|
+
name:
|
|
2151
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name::OrSymbol,
|
|
2152
|
+
type: Symbol
|
|
2153
|
+
).returns(T.attached_class)
|
|
2154
|
+
end
|
|
2155
|
+
def self.new(name:, type: :"dedicated-instance")
|
|
2156
|
+
end
|
|
2157
|
+
|
|
2158
|
+
sig do
|
|
2159
|
+
override.returns(
|
|
2160
|
+
{
|
|
2161
|
+
name:
|
|
2162
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol,
|
|
2163
|
+
type: Symbol
|
|
2164
|
+
}
|
|
2165
|
+
)
|
|
2166
|
+
end
|
|
2167
|
+
def to_hash
|
|
2168
|
+
end
|
|
2169
|
+
|
|
2170
|
+
module Name
|
|
2171
|
+
extend Revox::Internal::Type::Enum
|
|
2172
|
+
|
|
2173
|
+
TaggedSymbol =
|
|
2174
|
+
T.type_alias do
|
|
2175
|
+
T.all(
|
|
2176
|
+
Symbol,
|
|
2177
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name
|
|
2178
|
+
)
|
|
2179
|
+
end
|
|
2180
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2181
|
+
|
|
2182
|
+
GPT_4_1 =
|
|
2183
|
+
T.let(
|
|
2184
|
+
:"gpt-4.1",
|
|
2185
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
|
|
2186
|
+
)
|
|
2187
|
+
MINISTRAL_3_8B_INSTRUCT =
|
|
2188
|
+
T.let(
|
|
2189
|
+
:"ministral-3-8b-instruct",
|
|
2190
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
|
|
2191
|
+
)
|
|
2192
|
+
|
|
2193
|
+
sig do
|
|
2194
|
+
override.returns(
|
|
2195
|
+
T::Array[
|
|
2196
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
|
|
2197
|
+
]
|
|
2198
|
+
)
|
|
2199
|
+
end
|
|
2200
|
+
def self.values
|
|
2201
|
+
end
|
|
2202
|
+
end
|
|
2203
|
+
end
|
|
2204
|
+
|
|
2205
|
+
class UnionMember1 < Revox::Internal::Type::BaseModel
|
|
2206
|
+
OrHash =
|
|
2207
|
+
T.type_alias do
|
|
2208
|
+
T.any(
|
|
2209
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember1,
|
|
2210
|
+
Revox::Internal::AnyHash
|
|
2211
|
+
)
|
|
2212
|
+
end
|
|
2213
|
+
|
|
2214
|
+
# The model ID to use from OpenRouter. eg: openai/gpt-4.1
|
|
2215
|
+
sig { returns(String) }
|
|
2216
|
+
attr_accessor :openrouter_model_id
|
|
2217
|
+
|
|
2218
|
+
# The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
|
|
2219
|
+
sig { returns(String) }
|
|
2220
|
+
attr_accessor :openrouter_provider
|
|
2221
|
+
|
|
2222
|
+
# Use a model from OpenRouter.
|
|
2223
|
+
sig { returns(Symbol) }
|
|
2224
|
+
attr_accessor :type
|
|
2225
|
+
|
|
2226
|
+
sig do
|
|
2227
|
+
params(
|
|
2228
|
+
openrouter_model_id: String,
|
|
2229
|
+
openrouter_provider: String,
|
|
2230
|
+
type: Symbol
|
|
2231
|
+
).returns(T.attached_class)
|
|
2232
|
+
end
|
|
2233
|
+
def self.new(
|
|
2234
|
+
# The model ID to use from OpenRouter. eg: openai/gpt-4.1
|
|
2235
|
+
openrouter_model_id:,
|
|
2236
|
+
# The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
|
|
2237
|
+
openrouter_provider:,
|
|
2238
|
+
# Use a model from OpenRouter.
|
|
2239
|
+
type: :openrouter
|
|
2240
|
+
)
|
|
2241
|
+
end
|
|
2242
|
+
|
|
2243
|
+
sig do
|
|
2244
|
+
override.returns(
|
|
2245
|
+
{
|
|
2246
|
+
openrouter_model_id: String,
|
|
2247
|
+
openrouter_provider: String,
|
|
2248
|
+
type: Symbol
|
|
2249
|
+
}
|
|
2250
|
+
)
|
|
2251
|
+
end
|
|
2252
|
+
def to_hash
|
|
2253
|
+
end
|
|
2254
|
+
end
|
|
2255
|
+
|
|
2256
|
+
class UnionMember2 < Revox::Internal::Type::BaseModel
|
|
2257
|
+
OrHash =
|
|
2258
|
+
T.type_alias do
|
|
2259
|
+
T.any(
|
|
2260
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember2,
|
|
2261
|
+
Revox::Internal::AnyHash
|
|
2262
|
+
)
|
|
2263
|
+
end
|
|
2264
|
+
|
|
2265
|
+
# API key sent as Bearer token to the custom endpoint.
|
|
2266
|
+
sig { returns(String) }
|
|
2267
|
+
attr_accessor :api_key
|
|
2268
|
+
|
|
2269
|
+
# Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
|
|
2270
|
+
sig { returns(String) }
|
|
2271
|
+
attr_accessor :api_url
|
|
2272
|
+
|
|
2273
|
+
# Model name as expected by the provider, e.g. meta-llama/llama-3-70b
|
|
2274
|
+
sig { returns(String) }
|
|
2275
|
+
attr_accessor :model_name
|
|
2276
|
+
|
|
2277
|
+
# OpenAI-compatible chat completions API (bring your own endpoint and key).
|
|
2278
|
+
sig { returns(Symbol) }
|
|
2279
|
+
attr_accessor :type
|
|
2280
|
+
|
|
2281
|
+
sig do
|
|
2282
|
+
params(
|
|
2283
|
+
api_key: String,
|
|
2284
|
+
api_url: String,
|
|
2285
|
+
model_name: String,
|
|
2286
|
+
type: Symbol
|
|
2287
|
+
).returns(T.attached_class)
|
|
2288
|
+
end
|
|
2289
|
+
def self.new(
|
|
2290
|
+
# API key sent as Bearer token to the custom endpoint.
|
|
2291
|
+
api_key:,
|
|
2292
|
+
# Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
|
|
2293
|
+
api_url:,
|
|
2294
|
+
# Model name as expected by the provider, e.g. meta-llama/llama-3-70b
|
|
2295
|
+
model_name:,
|
|
2296
|
+
# OpenAI-compatible chat completions API (bring your own endpoint and key).
|
|
2297
|
+
type: :custom
|
|
2298
|
+
)
|
|
2299
|
+
end
|
|
2300
|
+
|
|
2301
|
+
sig do
|
|
2302
|
+
override.returns(
|
|
2303
|
+
{
|
|
2304
|
+
api_key: String,
|
|
2305
|
+
api_url: String,
|
|
2306
|
+
model_name: String,
|
|
2307
|
+
type: Symbol
|
|
2308
|
+
}
|
|
2309
|
+
)
|
|
2310
|
+
end
|
|
2311
|
+
def to_hash
|
|
2312
|
+
end
|
|
2313
|
+
end
|
|
2314
|
+
|
|
2315
|
+
class UnionMember3 < Revox::Internal::Type::BaseModel
|
|
2316
|
+
OrHash =
|
|
2317
|
+
T.type_alias do
|
|
2318
|
+
T.any(
|
|
2319
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3,
|
|
2320
|
+
Revox::Internal::AnyHash
|
|
2321
|
+
)
|
|
2322
|
+
end
|
|
2323
|
+
|
|
2324
|
+
# The provider to use from Realtime. eg: openai, google.
|
|
2325
|
+
sig do
|
|
2326
|
+
returns(
|
|
2327
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::Provider::TaggedSymbol
|
|
2328
|
+
)
|
|
2329
|
+
end
|
|
2330
|
+
attr_accessor :provider
|
|
2331
|
+
|
|
2332
|
+
# The model ID to use from Realtime. eg: gpt-4.1
|
|
2333
|
+
sig { returns(String) }
|
|
2334
|
+
attr_accessor :realtime_model_id
|
|
2335
|
+
|
|
2336
|
+
# Use a model from Realtime.
|
|
2337
|
+
sig { returns(Symbol) }
|
|
2338
|
+
attr_accessor :type
|
|
2339
|
+
|
|
2340
|
+
# Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
|
|
2341
|
+
sig { returns(T.nilable(String)) }
|
|
2342
|
+
attr_reader :realtime_voice_id
|
|
2343
|
+
|
|
2344
|
+
sig { params(realtime_voice_id: String).void }
|
|
2345
|
+
attr_writer :realtime_voice_id
|
|
2346
|
+
|
|
2347
|
+
sig do
|
|
2348
|
+
params(
|
|
2349
|
+
provider:
|
|
2350
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::Provider::OrSymbol,
|
|
2351
|
+
realtime_model_id: String,
|
|
2352
|
+
realtime_voice_id: String,
|
|
2353
|
+
type: Symbol
|
|
2354
|
+
).returns(T.attached_class)
|
|
2355
|
+
end
|
|
2356
|
+
def self.new(
|
|
2357
|
+
# The provider to use from Realtime. eg: openai, google.
|
|
2358
|
+
provider:,
|
|
2359
|
+
# The model ID to use from Realtime. eg: gpt-4.1
|
|
2360
|
+
realtime_model_id:,
|
|
2361
|
+
# Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
|
|
2362
|
+
realtime_voice_id: nil,
|
|
2363
|
+
# Use a model from Realtime.
|
|
2364
|
+
type: :realtime
|
|
2365
|
+
)
|
|
2366
|
+
end
|
|
2367
|
+
|
|
2368
|
+
sig do
|
|
2369
|
+
override.returns(
|
|
2370
|
+
{
|
|
2371
|
+
provider:
|
|
2372
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::Provider::TaggedSymbol,
|
|
2373
|
+
realtime_model_id: String,
|
|
2374
|
+
type: Symbol,
|
|
2375
|
+
realtime_voice_id: String
|
|
2376
|
+
}
|
|
2377
|
+
)
|
|
2378
|
+
end
|
|
2379
|
+
def to_hash
|
|
2380
|
+
end
|
|
2381
|
+
|
|
2382
|
+
# The provider to use from Realtime. eg: openai, google.
|
|
2383
|
+
module Provider
|
|
2384
|
+
extend Revox::Internal::Type::Enum
|
|
2385
|
+
|
|
2386
|
+
TaggedSymbol =
|
|
2387
|
+
T.type_alias do
|
|
2388
|
+
T.all(
|
|
2389
|
+
Symbol,
|
|
2390
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::Provider
|
|
2391
|
+
)
|
|
2392
|
+
end
|
|
2393
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2394
|
+
|
|
2395
|
+
OPENAI =
|
|
2396
|
+
T.let(
|
|
2397
|
+
:openai,
|
|
2398
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::Provider::TaggedSymbol
|
|
2399
|
+
)
|
|
2400
|
+
GOOGLE =
|
|
2401
|
+
T.let(
|
|
2402
|
+
:google,
|
|
2403
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::Provider::TaggedSymbol
|
|
2404
|
+
)
|
|
2405
|
+
|
|
2406
|
+
sig do
|
|
2407
|
+
override.returns(
|
|
2408
|
+
T::Array[
|
|
2409
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::UnionMember3::Provider::TaggedSymbol
|
|
2410
|
+
]
|
|
2411
|
+
)
|
|
2412
|
+
end
|
|
2413
|
+
def self.values
|
|
2414
|
+
end
|
|
2415
|
+
end
|
|
2416
|
+
end
|
|
2417
|
+
|
|
2418
|
+
sig do
|
|
2419
|
+
override.returns(
|
|
2420
|
+
T::Array[
|
|
2421
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::LlmModel::Variants
|
|
2422
|
+
]
|
|
2423
|
+
)
|
|
2424
|
+
end
|
|
2425
|
+
def self.variants
|
|
2426
|
+
end
|
|
2427
|
+
end
|
|
2428
|
+
|
|
2429
|
+
class Position < Revox::Internal::Type::BaseModel
|
|
2430
|
+
OrHash =
|
|
2431
|
+
T.type_alias do
|
|
2432
|
+
T.any(
|
|
2433
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Position,
|
|
2434
|
+
Revox::Internal::AnyHash
|
|
2435
|
+
)
|
|
2436
|
+
end
|
|
2437
|
+
|
|
2438
|
+
sig { returns(Float) }
|
|
2439
|
+
attr_accessor :x
|
|
2440
|
+
|
|
2441
|
+
sig { returns(Float) }
|
|
2442
|
+
attr_accessor :y_
|
|
2443
|
+
|
|
2444
|
+
sig { params(x: Float, y_: Float).returns(T.attached_class) }
|
|
2445
|
+
def self.new(x:, y_:)
|
|
2446
|
+
end
|
|
2447
|
+
|
|
2448
|
+
sig { override.returns({ x: Float, y_: Float }) }
|
|
2449
|
+
def to_hash
|
|
2450
|
+
end
|
|
2451
|
+
end
|
|
2452
|
+
|
|
2453
|
+
class PromptFlow < Revox::Internal::Type::BaseModel
|
|
2454
|
+
OrHash =
|
|
2455
|
+
T.type_alias do
|
|
2456
|
+
T.any(
|
|
2457
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow,
|
|
2458
|
+
Revox::Internal::AnyHash
|
|
2459
|
+
)
|
|
2460
|
+
end
|
|
2461
|
+
|
|
2462
|
+
sig do
|
|
2463
|
+
returns(
|
|
2464
|
+
T::Array[
|
|
2465
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Edge
|
|
2466
|
+
]
|
|
2467
|
+
)
|
|
2468
|
+
end
|
|
2469
|
+
attr_accessor :edges
|
|
2470
|
+
|
|
2471
|
+
sig do
|
|
2472
|
+
returns(
|
|
2473
|
+
T::Array[
|
|
2474
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node
|
|
2475
|
+
]
|
|
2476
|
+
)
|
|
2477
|
+
end
|
|
2478
|
+
attr_accessor :nodes
|
|
2479
|
+
|
|
2480
|
+
sig do
|
|
2481
|
+
params(
|
|
2482
|
+
edges:
|
|
2483
|
+
T::Array[
|
|
2484
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Edge::OrHash
|
|
2485
|
+
],
|
|
2486
|
+
nodes:
|
|
2487
|
+
T::Array[
|
|
2488
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::OrHash
|
|
2489
|
+
]
|
|
2490
|
+
).returns(T.attached_class)
|
|
2491
|
+
end
|
|
2492
|
+
def self.new(edges:, nodes:)
|
|
2493
|
+
end
|
|
2494
|
+
|
|
2495
|
+
sig do
|
|
2496
|
+
override.returns(
|
|
2497
|
+
{
|
|
2498
|
+
edges:
|
|
2499
|
+
T::Array[
|
|
2500
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Edge
|
|
2501
|
+
],
|
|
2502
|
+
nodes:
|
|
2503
|
+
T::Array[
|
|
2504
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node
|
|
2505
|
+
]
|
|
2506
|
+
}
|
|
2507
|
+
)
|
|
2508
|
+
end
|
|
2509
|
+
def to_hash
|
|
2510
|
+
end
|
|
2511
|
+
|
|
2512
|
+
class Edge < Revox::Internal::Type::BaseModel
|
|
2513
|
+
OrHash =
|
|
2514
|
+
T.type_alias do
|
|
2515
|
+
T.any(
|
|
2516
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Edge,
|
|
2517
|
+
Revox::Internal::AnyHash
|
|
2518
|
+
)
|
|
2519
|
+
end
|
|
2520
|
+
|
|
2521
|
+
sig { returns(String) }
|
|
2522
|
+
attr_accessor :id
|
|
2523
|
+
|
|
2524
|
+
sig { returns(String) }
|
|
2525
|
+
attr_accessor :source
|
|
2526
|
+
|
|
2527
|
+
sig { returns(String) }
|
|
2528
|
+
attr_accessor :target
|
|
2529
|
+
|
|
2530
|
+
sig do
|
|
2531
|
+
params(id: String, source: String, target: String).returns(
|
|
2532
|
+
T.attached_class
|
|
2533
|
+
)
|
|
2534
|
+
end
|
|
2535
|
+
def self.new(id:, source:, target:)
|
|
2536
|
+
end
|
|
2537
|
+
|
|
2538
|
+
sig do
|
|
2539
|
+
override.returns({ id: String, source: String, target: String })
|
|
2540
|
+
end
|
|
2541
|
+
def to_hash
|
|
2542
|
+
end
|
|
2543
|
+
end
|
|
2544
|
+
|
|
2545
|
+
class Node < Revox::Internal::Type::BaseModel
|
|
2546
|
+
OrHash =
|
|
2547
|
+
T.type_alias do
|
|
2548
|
+
T.any(
|
|
2549
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node,
|
|
2550
|
+
Revox::Internal::AnyHash
|
|
2551
|
+
)
|
|
2552
|
+
end
|
|
2553
|
+
|
|
2554
|
+
sig { returns(String) }
|
|
2555
|
+
attr_accessor :id
|
|
2556
|
+
|
|
2557
|
+
sig do
|
|
2558
|
+
returns(
|
|
2559
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Data
|
|
2560
|
+
)
|
|
2561
|
+
end
|
|
2562
|
+
attr_reader :data
|
|
2563
|
+
|
|
2564
|
+
sig do
|
|
2565
|
+
params(
|
|
2566
|
+
data:
|
|
2567
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Data::OrHash
|
|
2568
|
+
).void
|
|
2569
|
+
end
|
|
2570
|
+
attr_writer :data
|
|
2571
|
+
|
|
2572
|
+
sig do
|
|
2573
|
+
returns(
|
|
2574
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Position
|
|
2575
|
+
)
|
|
2576
|
+
end
|
|
2577
|
+
attr_reader :position
|
|
2578
|
+
|
|
2579
|
+
sig do
|
|
2580
|
+
params(
|
|
2581
|
+
position:
|
|
2582
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Position::OrHash
|
|
2583
|
+
).void
|
|
2584
|
+
end
|
|
2585
|
+
attr_writer :position
|
|
2586
|
+
|
|
2587
|
+
sig { returns(Symbol) }
|
|
2588
|
+
attr_accessor :type
|
|
2589
|
+
|
|
2590
|
+
sig do
|
|
2591
|
+
params(
|
|
2592
|
+
id: String,
|
|
2593
|
+
data:
|
|
2594
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Data::OrHash,
|
|
2595
|
+
position:
|
|
2596
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Position::OrHash,
|
|
2597
|
+
type: Symbol
|
|
2598
|
+
).returns(T.attached_class)
|
|
2599
|
+
end
|
|
2600
|
+
def self.new(id:, data:, position:, type: :promptBlock)
|
|
2601
|
+
end
|
|
2602
|
+
|
|
2603
|
+
sig do
|
|
2604
|
+
override.returns(
|
|
2605
|
+
{
|
|
2606
|
+
id: String,
|
|
2607
|
+
data:
|
|
2608
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Data,
|
|
2609
|
+
position:
|
|
2610
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Position,
|
|
2611
|
+
type: Symbol
|
|
2612
|
+
}
|
|
2613
|
+
)
|
|
2614
|
+
end
|
|
2615
|
+
def to_hash
|
|
2616
|
+
end
|
|
2617
|
+
|
|
2618
|
+
class Data < Revox::Internal::Type::BaseModel
|
|
2619
|
+
OrHash =
|
|
2620
|
+
T.type_alias do
|
|
2621
|
+
T.any(
|
|
2622
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Data,
|
|
2623
|
+
Revox::Internal::AnyHash
|
|
2624
|
+
)
|
|
2625
|
+
end
|
|
2626
|
+
|
|
2627
|
+
sig { returns(String) }
|
|
2628
|
+
attr_accessor :body
|
|
2629
|
+
|
|
2630
|
+
sig { returns(String) }
|
|
2631
|
+
attr_accessor :title
|
|
2632
|
+
|
|
2633
|
+
sig do
|
|
2634
|
+
params(body: String, title: String).returns(T.attached_class)
|
|
2635
|
+
end
|
|
2636
|
+
def self.new(body:, title:)
|
|
2637
|
+
end
|
|
2638
|
+
|
|
2639
|
+
sig { override.returns({ body: String, title: String }) }
|
|
2640
|
+
def to_hash
|
|
2641
|
+
end
|
|
2642
|
+
end
|
|
2643
|
+
|
|
2644
|
+
class Position < Revox::Internal::Type::BaseModel
|
|
2645
|
+
OrHash =
|
|
2646
|
+
T.type_alias do
|
|
2647
|
+
T.any(
|
|
2648
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::PromptFlow::Node::Position,
|
|
2649
|
+
Revox::Internal::AnyHash
|
|
2650
|
+
)
|
|
2651
|
+
end
|
|
2652
|
+
|
|
2653
|
+
sig { returns(Float) }
|
|
2654
|
+
attr_accessor :x
|
|
2655
|
+
|
|
2656
|
+
sig { returns(Float) }
|
|
2657
|
+
attr_accessor :y_
|
|
2658
|
+
|
|
2659
|
+
sig { params(x: Float, y_: Float).returns(T.attached_class) }
|
|
2660
|
+
def self.new(x:, y_:)
|
|
2661
|
+
end
|
|
2662
|
+
|
|
2663
|
+
sig { override.returns({ x: Float, y_: Float }) }
|
|
2664
|
+
def to_hash
|
|
2665
|
+
end
|
|
2666
|
+
end
|
|
2667
|
+
end
|
|
2668
|
+
end
|
|
2669
|
+
|
|
2670
|
+
class Slack < Revox::Internal::Type::BaseModel
|
|
2671
|
+
OrHash =
|
|
2672
|
+
T.type_alias do
|
|
2673
|
+
T.any(
|
|
2674
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack,
|
|
2675
|
+
Revox::Internal::AnyHash
|
|
2676
|
+
)
|
|
2677
|
+
end
|
|
2678
|
+
|
|
2679
|
+
# The Slack channel ID where the notification will be posted.
|
|
2680
|
+
sig { returns(String) }
|
|
2681
|
+
attr_accessor :channel_id
|
|
2682
|
+
|
|
2683
|
+
# The Nango connection ID linking the org's Slack workspace to Revox.
|
|
2684
|
+
sig { returns(String) }
|
|
2685
|
+
attr_accessor :connection_id
|
|
2686
|
+
|
|
2687
|
+
# Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
|
|
2688
|
+
# Use 'none' to notify when outcome is null.
|
|
2689
|
+
sig do
|
|
2690
|
+
returns(
|
|
2691
|
+
T::Array[
|
|
2692
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2693
|
+
]
|
|
2694
|
+
)
|
|
2695
|
+
end
|
|
2696
|
+
attr_accessor :outcomes
|
|
2697
|
+
|
|
2698
|
+
# Human-readable Slack channel name, cached for display in the UI.
|
|
2699
|
+
sig { returns(T.nilable(String)) }
|
|
2700
|
+
attr_accessor :channel_name
|
|
2701
|
+
|
|
2702
|
+
# Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2703
|
+
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
|
|
2704
|
+
# {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
|
|
2705
|
+
# prompt_variables and structured_output keys. When null/empty a default template
|
|
2706
|
+
# is used.
|
|
2707
|
+
sig { returns(T.nilable(String)) }
|
|
2708
|
+
attr_accessor :template
|
|
2709
|
+
|
|
2710
|
+
sig do
|
|
2711
|
+
params(
|
|
2712
|
+
channel_id: String,
|
|
2713
|
+
connection_id: String,
|
|
2714
|
+
outcomes:
|
|
2715
|
+
T::Array[
|
|
2716
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::OrSymbol
|
|
2717
|
+
],
|
|
2718
|
+
channel_name: T.nilable(String),
|
|
2719
|
+
template: T.nilable(String)
|
|
2720
|
+
).returns(T.attached_class)
|
|
2721
|
+
end
|
|
2722
|
+
def self.new(
|
|
2723
|
+
# The Slack channel ID where the notification will be posted.
|
|
2724
|
+
channel_id:,
|
|
2725
|
+
# The Nango connection ID linking the org's Slack workspace to Revox.
|
|
2726
|
+
connection_id:,
|
|
2727
|
+
# Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
|
|
2728
|
+
# Use 'none' to notify when outcome is null.
|
|
2729
|
+
outcomes:,
|
|
2730
|
+
# Human-readable Slack channel name, cached for display in the UI.
|
|
2731
|
+
channel_name: nil,
|
|
2732
|
+
# Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
2733
|
+
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
|
|
2734
|
+
# {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
|
|
2735
|
+
# prompt_variables and structured_output keys. When null/empty a default template
|
|
2736
|
+
# is used.
|
|
2737
|
+
template: nil
|
|
2738
|
+
)
|
|
2739
|
+
end
|
|
2740
|
+
|
|
2741
|
+
sig do
|
|
2742
|
+
override.returns(
|
|
2743
|
+
{
|
|
2744
|
+
channel_id: String,
|
|
2745
|
+
connection_id: String,
|
|
2746
|
+
outcomes:
|
|
2747
|
+
T::Array[
|
|
2748
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2749
|
+
],
|
|
2750
|
+
channel_name: T.nilable(String),
|
|
2751
|
+
template: T.nilable(String)
|
|
2752
|
+
}
|
|
2753
|
+
)
|
|
2754
|
+
end
|
|
2755
|
+
def to_hash
|
|
2756
|
+
end
|
|
2757
|
+
|
|
2758
|
+
module Outcome
|
|
2759
|
+
extend Revox::Internal::Type::Enum
|
|
2760
|
+
|
|
2761
|
+
TaggedSymbol =
|
|
2762
|
+
T.type_alias do
|
|
2763
|
+
T.all(
|
|
2764
|
+
Symbol,
|
|
2765
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome
|
|
2766
|
+
)
|
|
2767
|
+
end
|
|
2768
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2769
|
+
|
|
2770
|
+
NOT_INTERESTED =
|
|
2771
|
+
T.let(
|
|
2772
|
+
:not_interested,
|
|
2773
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2774
|
+
)
|
|
2775
|
+
INTERESTED =
|
|
2776
|
+
T.let(
|
|
2777
|
+
:interested,
|
|
2778
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2779
|
+
)
|
|
2780
|
+
COMPLETED =
|
|
2781
|
+
T.let(
|
|
2782
|
+
:completed,
|
|
2783
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2784
|
+
)
|
|
2785
|
+
REQUESTED_CALLBACK_LATER =
|
|
2786
|
+
T.let(
|
|
2787
|
+
:requested_callback_later,
|
|
2788
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2789
|
+
)
|
|
2790
|
+
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
2791
|
+
T.let(
|
|
2792
|
+
:requested_callback_new_number,
|
|
2793
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2794
|
+
)
|
|
2795
|
+
DO_NOT_CONTACT =
|
|
2796
|
+
T.let(
|
|
2797
|
+
:do_not_contact,
|
|
2798
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2799
|
+
)
|
|
2800
|
+
AI_AVERSE =
|
|
2801
|
+
T.let(
|
|
2802
|
+
:ai_averse,
|
|
2803
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2804
|
+
)
|
|
2805
|
+
NONE =
|
|
2806
|
+
T.let(
|
|
2807
|
+
:none,
|
|
2808
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2809
|
+
)
|
|
2810
|
+
|
|
2811
|
+
sig do
|
|
2812
|
+
override.returns(
|
|
2813
|
+
T::Array[
|
|
2814
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
|
|
2815
|
+
]
|
|
2816
|
+
)
|
|
2817
|
+
end
|
|
2818
|
+
def self.values
|
|
2819
|
+
end
|
|
2820
|
+
end
|
|
2821
|
+
end
|
|
2822
|
+
|
|
2823
|
+
class StructuredOutputConfig < Revox::Internal::Type::BaseModel
|
|
2824
|
+
OrHash =
|
|
2825
|
+
T.type_alias do
|
|
2826
|
+
T.any(
|
|
2827
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig,
|
|
2828
|
+
Revox::Internal::AnyHash
|
|
2829
|
+
)
|
|
2830
|
+
end
|
|
2831
|
+
|
|
2832
|
+
sig { returns(String) }
|
|
2833
|
+
attr_accessor :name
|
|
2834
|
+
|
|
2835
|
+
sig { returns(T::Boolean) }
|
|
2836
|
+
attr_accessor :required
|
|
2837
|
+
|
|
2838
|
+
sig do
|
|
2839
|
+
returns(
|
|
2840
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2841
|
+
)
|
|
2842
|
+
end
|
|
2843
|
+
attr_accessor :type
|
|
2844
|
+
|
|
2845
|
+
sig { returns(T.nilable(String)) }
|
|
2846
|
+
attr_reader :description
|
|
2847
|
+
|
|
2848
|
+
sig { params(description: String).void }
|
|
2849
|
+
attr_writer :description
|
|
2850
|
+
|
|
2851
|
+
sig { returns(T.nilable(T::Array[String])) }
|
|
2852
|
+
attr_reader :enum_options
|
|
2853
|
+
|
|
2854
|
+
sig { params(enum_options: T::Array[String]).void }
|
|
2855
|
+
attr_writer :enum_options
|
|
2856
|
+
|
|
2857
|
+
sig do
|
|
2858
|
+
params(
|
|
2859
|
+
name: String,
|
|
2860
|
+
required: T::Boolean,
|
|
2861
|
+
type:
|
|
2862
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::Type::OrSymbol,
|
|
2863
|
+
description: String,
|
|
2864
|
+
enum_options: T::Array[String]
|
|
2865
|
+
).returns(T.attached_class)
|
|
2866
|
+
end
|
|
2867
|
+
def self.new(
|
|
2868
|
+
name:,
|
|
2869
|
+
required:,
|
|
2870
|
+
type:,
|
|
2871
|
+
description: nil,
|
|
2872
|
+
enum_options: nil
|
|
2873
|
+
)
|
|
2874
|
+
end
|
|
2875
|
+
|
|
2876
|
+
sig do
|
|
2877
|
+
override.returns(
|
|
2878
|
+
{
|
|
1020
2879
|
name: String,
|
|
1021
2880
|
required: T::Boolean,
|
|
1022
2881
|
type:
|
|
@@ -1029,53 +2888,651 @@ module Revox
|
|
|
1029
2888
|
def to_hash
|
|
1030
2889
|
end
|
|
1031
2890
|
|
|
1032
|
-
module Type
|
|
2891
|
+
module Type
|
|
2892
|
+
extend Revox::Internal::Type::Enum
|
|
2893
|
+
|
|
2894
|
+
TaggedSymbol =
|
|
2895
|
+
T.type_alias do
|
|
2896
|
+
T.all(
|
|
2897
|
+
Symbol,
|
|
2898
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::Type
|
|
2899
|
+
)
|
|
2900
|
+
end
|
|
2901
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
2902
|
+
|
|
2903
|
+
STRING =
|
|
2904
|
+
T.let(
|
|
2905
|
+
:string,
|
|
2906
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2907
|
+
)
|
|
2908
|
+
NUMBER =
|
|
2909
|
+
T.let(
|
|
2910
|
+
:number,
|
|
2911
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2912
|
+
)
|
|
2913
|
+
BOOLEAN =
|
|
2914
|
+
T.let(
|
|
2915
|
+
:boolean,
|
|
2916
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2917
|
+
)
|
|
2918
|
+
ENUM =
|
|
2919
|
+
T.let(
|
|
2920
|
+
:enum,
|
|
2921
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2922
|
+
)
|
|
2923
|
+
DATE =
|
|
2924
|
+
T.let(
|
|
2925
|
+
:date,
|
|
2926
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2927
|
+
)
|
|
2928
|
+
DATETIME =
|
|
2929
|
+
T.let(
|
|
2930
|
+
:datetime,
|
|
2931
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2932
|
+
)
|
|
2933
|
+
|
|
2934
|
+
sig do
|
|
2935
|
+
override.returns(
|
|
2936
|
+
T::Array[
|
|
2937
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::StructuredOutputConfig::Type::TaggedSymbol
|
|
2938
|
+
]
|
|
2939
|
+
)
|
|
2940
|
+
end
|
|
2941
|
+
def self.values
|
|
2942
|
+
end
|
|
2943
|
+
end
|
|
2944
|
+
end
|
|
2945
|
+
|
|
2946
|
+
class SttContext < Revox::Internal::Type::BaseModel
|
|
2947
|
+
OrHash =
|
|
2948
|
+
T.type_alias do
|
|
2949
|
+
T.any(
|
|
2950
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext,
|
|
2951
|
+
Revox::Internal::AnyHash
|
|
2952
|
+
)
|
|
2953
|
+
end
|
|
2954
|
+
|
|
2955
|
+
sig do
|
|
2956
|
+
returns(
|
|
2957
|
+
T::Array[
|
|
2958
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext::General
|
|
2959
|
+
]
|
|
2960
|
+
)
|
|
2961
|
+
end
|
|
2962
|
+
attr_accessor :general
|
|
2963
|
+
|
|
2964
|
+
sig { returns(T::Array[String]) }
|
|
2965
|
+
attr_accessor :terms
|
|
2966
|
+
|
|
2967
|
+
# Assistant-level speech-to-text context: structured `general` key/value pairs
|
|
2968
|
+
# plus a list of domain `terms`. Prompt-derived context is merged in without
|
|
2969
|
+
# replacing existing entries.
|
|
2970
|
+
sig do
|
|
2971
|
+
params(
|
|
2972
|
+
general:
|
|
2973
|
+
T::Array[
|
|
2974
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext::General::OrHash
|
|
2975
|
+
],
|
|
2976
|
+
terms: T::Array[String]
|
|
2977
|
+
).returns(T.attached_class)
|
|
2978
|
+
end
|
|
2979
|
+
def self.new(general:, terms:)
|
|
2980
|
+
end
|
|
2981
|
+
|
|
2982
|
+
sig do
|
|
2983
|
+
override.returns(
|
|
2984
|
+
{
|
|
2985
|
+
general:
|
|
2986
|
+
T::Array[
|
|
2987
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext::General
|
|
2988
|
+
],
|
|
2989
|
+
terms: T::Array[String]
|
|
2990
|
+
}
|
|
2991
|
+
)
|
|
2992
|
+
end
|
|
2993
|
+
def to_hash
|
|
2994
|
+
end
|
|
2995
|
+
|
|
2996
|
+
class General < Revox::Internal::Type::BaseModel
|
|
2997
|
+
OrHash =
|
|
2998
|
+
T.type_alias do
|
|
2999
|
+
T.any(
|
|
3000
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttContext::General,
|
|
3001
|
+
Revox::Internal::AnyHash
|
|
3002
|
+
)
|
|
3003
|
+
end
|
|
3004
|
+
|
|
3005
|
+
sig { returns(String) }
|
|
3006
|
+
attr_accessor :key
|
|
3007
|
+
|
|
3008
|
+
sig { returns(String) }
|
|
3009
|
+
attr_accessor :value
|
|
3010
|
+
|
|
3011
|
+
sig do
|
|
3012
|
+
params(key: String, value: String).returns(T.attached_class)
|
|
3013
|
+
end
|
|
3014
|
+
def self.new(key:, value:)
|
|
3015
|
+
end
|
|
3016
|
+
|
|
3017
|
+
sig { override.returns({ key: String, value: String }) }
|
|
3018
|
+
def to_hash
|
|
3019
|
+
end
|
|
3020
|
+
end
|
|
3021
|
+
end
|
|
3022
|
+
|
|
3023
|
+
# Transcriber (speech-to-text) model used for the assistant.
|
|
3024
|
+
module SttModel
|
|
3025
|
+
extend Revox::Internal::Type::Enum
|
|
3026
|
+
|
|
3027
|
+
TaggedSymbol =
|
|
3028
|
+
T.type_alias do
|
|
3029
|
+
T.all(
|
|
3030
|
+
Symbol,
|
|
3031
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttModel
|
|
3032
|
+
)
|
|
3033
|
+
end
|
|
3034
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
3035
|
+
|
|
3036
|
+
STT_RT_V4 =
|
|
3037
|
+
T.let(
|
|
3038
|
+
:"stt-rt-v4",
|
|
3039
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttModel::TaggedSymbol
|
|
3040
|
+
)
|
|
3041
|
+
STT_RT_V5 =
|
|
3042
|
+
T.let(
|
|
3043
|
+
:"stt-rt-v5",
|
|
3044
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttModel::TaggedSymbol
|
|
3045
|
+
)
|
|
3046
|
+
|
|
3047
|
+
sig do
|
|
3048
|
+
override.returns(
|
|
3049
|
+
T::Array[
|
|
3050
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::SttModel::TaggedSymbol
|
|
3051
|
+
]
|
|
3052
|
+
)
|
|
3053
|
+
end
|
|
3054
|
+
def self.values
|
|
3055
|
+
end
|
|
3056
|
+
end
|
|
3057
|
+
|
|
3058
|
+
# Audio clip to play while the agent is processing a response. One of the built-in
|
|
3059
|
+
# LiveKit audio clips; null disables it.
|
|
3060
|
+
module ThinkingSound
|
|
3061
|
+
extend Revox::Internal::Type::Enum
|
|
3062
|
+
|
|
3063
|
+
TaggedSymbol =
|
|
3064
|
+
T.type_alias do
|
|
3065
|
+
T.all(
|
|
3066
|
+
Symbol,
|
|
3067
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound
|
|
3068
|
+
)
|
|
3069
|
+
end
|
|
3070
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
3071
|
+
|
|
3072
|
+
CITY_AMBIENCE_OGG =
|
|
3073
|
+
T.let(
|
|
3074
|
+
:"city-ambience.ogg",
|
|
3075
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::TaggedSymbol
|
|
3076
|
+
)
|
|
3077
|
+
FOREST_AMBIENCE_OGG =
|
|
3078
|
+
T.let(
|
|
3079
|
+
:"forest-ambience.ogg",
|
|
3080
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::TaggedSymbol
|
|
3081
|
+
)
|
|
3082
|
+
OFFICE_AMBIENCE_OGG =
|
|
3083
|
+
T.let(
|
|
3084
|
+
:"office-ambience.ogg",
|
|
3085
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::TaggedSymbol
|
|
3086
|
+
)
|
|
3087
|
+
CROWDED_ROOM_OGG =
|
|
3088
|
+
T.let(
|
|
3089
|
+
:"crowded-room.ogg",
|
|
3090
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::TaggedSymbol
|
|
3091
|
+
)
|
|
3092
|
+
KEYBOARD_TYPING_OGG =
|
|
3093
|
+
T.let(
|
|
3094
|
+
:"keyboard-typing.ogg",
|
|
3095
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::TaggedSymbol
|
|
3096
|
+
)
|
|
3097
|
+
KEYBOARD_TYPING2_OGG =
|
|
3098
|
+
T.let(
|
|
3099
|
+
:"keyboard-typing2.ogg",
|
|
3100
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::TaggedSymbol
|
|
3101
|
+
)
|
|
3102
|
+
HOLD_MUSIC_OGG =
|
|
3103
|
+
T.let(
|
|
3104
|
+
:"hold_music.ogg",
|
|
3105
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::TaggedSymbol
|
|
3106
|
+
)
|
|
3107
|
+
|
|
3108
|
+
sig do
|
|
3109
|
+
override.returns(
|
|
3110
|
+
T::Array[
|
|
3111
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::ThinkingSound::TaggedSymbol
|
|
3112
|
+
]
|
|
3113
|
+
)
|
|
3114
|
+
end
|
|
3115
|
+
def self.values
|
|
3116
|
+
end
|
|
3117
|
+
end
|
|
3118
|
+
|
|
3119
|
+
module Type
|
|
3120
|
+
extend Revox::Internal::Type::Enum
|
|
3121
|
+
|
|
3122
|
+
TaggedSymbol =
|
|
3123
|
+
T.type_alias do
|
|
3124
|
+
T.all(
|
|
3125
|
+
Symbol,
|
|
3126
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Type
|
|
3127
|
+
)
|
|
3128
|
+
end
|
|
3129
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
3130
|
+
|
|
3131
|
+
STANDALONE =
|
|
3132
|
+
T.let(
|
|
3133
|
+
:standalone,
|
|
3134
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Type::TaggedSymbol
|
|
3135
|
+
)
|
|
3136
|
+
MULTI_STEP =
|
|
3137
|
+
T.let(
|
|
3138
|
+
:"multi-step",
|
|
3139
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Type::TaggedSymbol
|
|
3140
|
+
)
|
|
3141
|
+
SUB_ASSISTANT =
|
|
3142
|
+
T.let(
|
|
3143
|
+
:"sub-assistant",
|
|
3144
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Type::TaggedSymbol
|
|
3145
|
+
)
|
|
3146
|
+
|
|
3147
|
+
sig do
|
|
3148
|
+
override.returns(
|
|
3149
|
+
T::Array[
|
|
3150
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Type::TaggedSymbol
|
|
3151
|
+
]
|
|
3152
|
+
)
|
|
3153
|
+
end
|
|
3154
|
+
def self.values
|
|
3155
|
+
end
|
|
3156
|
+
end
|
|
3157
|
+
|
|
3158
|
+
class Voice < Revox::Internal::Type::BaseModel
|
|
3159
|
+
OrHash =
|
|
3160
|
+
T.type_alias do
|
|
3161
|
+
T.any(
|
|
3162
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice,
|
|
3163
|
+
Revox::Internal::AnyHash
|
|
3164
|
+
)
|
|
3165
|
+
end
|
|
3166
|
+
|
|
3167
|
+
# The ID of the voice.
|
|
3168
|
+
sig { returns(String) }
|
|
3169
|
+
attr_accessor :id
|
|
3170
|
+
|
|
3171
|
+
# The provider of the voice.
|
|
3172
|
+
sig do
|
|
3173
|
+
returns(
|
|
3174
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol
|
|
3175
|
+
)
|
|
3176
|
+
end
|
|
3177
|
+
attr_accessor :provider
|
|
3178
|
+
|
|
3179
|
+
# Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
|
|
3180
|
+
# for other providers.
|
|
3181
|
+
sig do
|
|
3182
|
+
returns(
|
|
3183
|
+
T.nilable(
|
|
3184
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model::TaggedSymbol
|
|
3185
|
+
)
|
|
3186
|
+
)
|
|
3187
|
+
end
|
|
3188
|
+
attr_reader :model
|
|
3189
|
+
|
|
3190
|
+
sig do
|
|
3191
|
+
params(
|
|
3192
|
+
model:
|
|
3193
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model::OrSymbol
|
|
3194
|
+
).void
|
|
3195
|
+
end
|
|
3196
|
+
attr_writer :model
|
|
3197
|
+
|
|
3198
|
+
# The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
|
|
3199
|
+
# 0.7–1.2. Default is 1.0.
|
|
3200
|
+
sig { returns(T.nilable(Float)) }
|
|
3201
|
+
attr_reader :speed
|
|
3202
|
+
|
|
3203
|
+
sig { params(speed: Float).void }
|
|
3204
|
+
attr_writer :speed
|
|
3205
|
+
|
|
3206
|
+
# Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
|
|
3207
|
+
# providers.
|
|
3208
|
+
sig { returns(T.nilable(Float)) }
|
|
3209
|
+
attr_reader :volume
|
|
3210
|
+
|
|
3211
|
+
sig { params(volume: Float).void }
|
|
3212
|
+
attr_writer :volume
|
|
3213
|
+
|
|
3214
|
+
sig do
|
|
3215
|
+
params(
|
|
3216
|
+
id: String,
|
|
3217
|
+
provider:
|
|
3218
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider::OrSymbol,
|
|
3219
|
+
model:
|
|
3220
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model::OrSymbol,
|
|
3221
|
+
speed: Float,
|
|
3222
|
+
volume: Float
|
|
3223
|
+
).returns(T.attached_class)
|
|
3224
|
+
end
|
|
3225
|
+
def self.new(
|
|
3226
|
+
# The ID of the voice.
|
|
3227
|
+
id:,
|
|
3228
|
+
# The provider of the voice.
|
|
3229
|
+
provider:,
|
|
3230
|
+
# Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
|
|
3231
|
+
# for other providers.
|
|
3232
|
+
model: nil,
|
|
3233
|
+
# The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
|
|
3234
|
+
# 0.7–1.2. Default is 1.0.
|
|
3235
|
+
speed: nil,
|
|
3236
|
+
# Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
|
|
3237
|
+
# providers.
|
|
3238
|
+
volume: nil
|
|
3239
|
+
)
|
|
3240
|
+
end
|
|
3241
|
+
|
|
3242
|
+
sig do
|
|
3243
|
+
override.returns(
|
|
3244
|
+
{
|
|
3245
|
+
id: String,
|
|
3246
|
+
provider:
|
|
3247
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol,
|
|
3248
|
+
model:
|
|
3249
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model::TaggedSymbol,
|
|
3250
|
+
speed: Float,
|
|
3251
|
+
volume: Float
|
|
3252
|
+
}
|
|
3253
|
+
)
|
|
3254
|
+
end
|
|
3255
|
+
def to_hash
|
|
3256
|
+
end
|
|
3257
|
+
|
|
3258
|
+
# The provider of the voice.
|
|
3259
|
+
module Provider
|
|
3260
|
+
extend Revox::Internal::Type::Enum
|
|
3261
|
+
|
|
3262
|
+
TaggedSymbol =
|
|
3263
|
+
T.type_alias do
|
|
3264
|
+
T.all(
|
|
3265
|
+
Symbol,
|
|
3266
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider
|
|
3267
|
+
)
|
|
3268
|
+
end
|
|
3269
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
3270
|
+
|
|
3271
|
+
CARTESIA =
|
|
3272
|
+
T.let(
|
|
3273
|
+
:cartesia,
|
|
3274
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol
|
|
3275
|
+
)
|
|
3276
|
+
ELEVENLABS =
|
|
3277
|
+
T.let(
|
|
3278
|
+
:elevenlabs,
|
|
3279
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol
|
|
3280
|
+
)
|
|
3281
|
+
|
|
3282
|
+
sig do
|
|
3283
|
+
override.returns(
|
|
3284
|
+
T::Array[
|
|
3285
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol
|
|
3286
|
+
]
|
|
3287
|
+
)
|
|
3288
|
+
end
|
|
3289
|
+
def self.values
|
|
3290
|
+
end
|
|
3291
|
+
end
|
|
3292
|
+
|
|
3293
|
+
# Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
|
|
3294
|
+
# for other providers.
|
|
3295
|
+
module Model
|
|
3296
|
+
extend Revox::Internal::Type::Enum
|
|
3297
|
+
|
|
3298
|
+
TaggedSymbol =
|
|
3299
|
+
T.type_alias do
|
|
3300
|
+
T.all(
|
|
3301
|
+
Symbol,
|
|
3302
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model
|
|
3303
|
+
)
|
|
3304
|
+
end
|
|
3305
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
3306
|
+
|
|
3307
|
+
SONIC_3 =
|
|
3308
|
+
T.let(
|
|
3309
|
+
:"sonic-3",
|
|
3310
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model::TaggedSymbol
|
|
3311
|
+
)
|
|
3312
|
+
SONIC_3_5 =
|
|
3313
|
+
T.let(
|
|
3314
|
+
:"sonic-3.5",
|
|
3315
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model::TaggedSymbol
|
|
3316
|
+
)
|
|
3317
|
+
|
|
3318
|
+
sig do
|
|
3319
|
+
override.returns(
|
|
3320
|
+
T::Array[
|
|
3321
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Model::TaggedSymbol
|
|
3322
|
+
]
|
|
3323
|
+
)
|
|
3324
|
+
end
|
|
3325
|
+
def self.values
|
|
3326
|
+
end
|
|
3327
|
+
end
|
|
3328
|
+
end
|
|
3329
|
+
|
|
3330
|
+
class Zoho < Revox::Internal::Type::BaseModel
|
|
3331
|
+
OrHash =
|
|
3332
|
+
T.type_alias do
|
|
3333
|
+
T.any(
|
|
3334
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho,
|
|
3335
|
+
Revox::Internal::AnyHash
|
|
3336
|
+
)
|
|
3337
|
+
end
|
|
3338
|
+
|
|
3339
|
+
# The Nango connection ID linking the org's Zoho CRM account to Revox.
|
|
3340
|
+
sig { returns(String) }
|
|
3341
|
+
attr_accessor :connection_id
|
|
3342
|
+
|
|
3343
|
+
# Maps extracted call fields (structured_output / prompt variables) onto Zoho
|
|
3344
|
+
# field API names on the upserted record.
|
|
3345
|
+
sig do
|
|
3346
|
+
returns(
|
|
3347
|
+
T::Array[
|
|
3348
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::FieldMapping
|
|
3349
|
+
]
|
|
3350
|
+
)
|
|
3351
|
+
end
|
|
3352
|
+
attr_accessor :field_mapping
|
|
3353
|
+
|
|
3354
|
+
# When true, also log the call as a record in Zoho's Calls module (related to the
|
|
3355
|
+
# upserted prospect via Who_Id).
|
|
3356
|
+
sig { returns(T::Boolean) }
|
|
3357
|
+
attr_accessor :log_call_activity
|
|
3358
|
+
|
|
3359
|
+
# Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
|
|
3360
|
+
sig { returns(String) }
|
|
3361
|
+
attr_accessor :module_
|
|
3362
|
+
|
|
3363
|
+
# Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
|
|
3364
|
+
# 'none' to push when outcome is null.
|
|
3365
|
+
sig do
|
|
3366
|
+
returns(
|
|
3367
|
+
T::Array[
|
|
3368
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3369
|
+
]
|
|
3370
|
+
)
|
|
3371
|
+
end
|
|
3372
|
+
attr_accessor :outcomes
|
|
3373
|
+
|
|
3374
|
+
# Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
3375
|
+
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
|
|
3376
|
+
# prompt_variables and structured_output keys. When null/empty a default note
|
|
3377
|
+
# (outcome + summary + auto-listed extracted fields) is used.
|
|
3378
|
+
sig { returns(T.nilable(String)) }
|
|
3379
|
+
attr_accessor :template
|
|
3380
|
+
|
|
3381
|
+
sig do
|
|
3382
|
+
params(
|
|
3383
|
+
connection_id: String,
|
|
3384
|
+
field_mapping:
|
|
3385
|
+
T::Array[
|
|
3386
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::FieldMapping::OrHash
|
|
3387
|
+
],
|
|
3388
|
+
log_call_activity: T::Boolean,
|
|
3389
|
+
module_: String,
|
|
3390
|
+
outcomes:
|
|
3391
|
+
T::Array[
|
|
3392
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::OrSymbol
|
|
3393
|
+
],
|
|
3394
|
+
template: T.nilable(String)
|
|
3395
|
+
).returns(T.attached_class)
|
|
3396
|
+
end
|
|
3397
|
+
def self.new(
|
|
3398
|
+
# The Nango connection ID linking the org's Zoho CRM account to Revox.
|
|
3399
|
+
connection_id:,
|
|
3400
|
+
# Maps extracted call fields (structured_output / prompt variables) onto Zoho
|
|
3401
|
+
# field API names on the upserted record.
|
|
3402
|
+
field_mapping:,
|
|
3403
|
+
# When true, also log the call as a record in Zoho's Calls module (related to the
|
|
3404
|
+
# upserted prospect via Who_Id).
|
|
3405
|
+
log_call_activity:,
|
|
3406
|
+
# Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
|
|
3407
|
+
module_:,
|
|
3408
|
+
# Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
|
|
3409
|
+
# 'none' to push when outcome is null.
|
|
3410
|
+
outcomes:,
|
|
3411
|
+
# Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
|
|
3412
|
+
# {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
|
|
3413
|
+
# prompt_variables and structured_output keys. When null/empty a default note
|
|
3414
|
+
# (outcome + summary + auto-listed extracted fields) is used.
|
|
3415
|
+
template: nil
|
|
3416
|
+
)
|
|
3417
|
+
end
|
|
3418
|
+
|
|
3419
|
+
sig do
|
|
3420
|
+
override.returns(
|
|
3421
|
+
{
|
|
3422
|
+
connection_id: String,
|
|
3423
|
+
field_mapping:
|
|
3424
|
+
T::Array[
|
|
3425
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::FieldMapping
|
|
3426
|
+
],
|
|
3427
|
+
log_call_activity: T::Boolean,
|
|
3428
|
+
module_: String,
|
|
3429
|
+
outcomes:
|
|
3430
|
+
T::Array[
|
|
3431
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3432
|
+
],
|
|
3433
|
+
template: T.nilable(String)
|
|
3434
|
+
}
|
|
3435
|
+
)
|
|
3436
|
+
end
|
|
3437
|
+
def to_hash
|
|
3438
|
+
end
|
|
3439
|
+
|
|
3440
|
+
class FieldMapping < Revox::Internal::Type::BaseModel
|
|
3441
|
+
OrHash =
|
|
3442
|
+
T.type_alias do
|
|
3443
|
+
T.any(
|
|
3444
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::FieldMapping,
|
|
3445
|
+
Revox::Internal::AnyHash
|
|
3446
|
+
)
|
|
3447
|
+
end
|
|
3448
|
+
|
|
3449
|
+
# Source key to read from the call: a structured_output field name, falling back
|
|
3450
|
+
# to a prompt variable of the same name.
|
|
3451
|
+
sig { returns(String) }
|
|
3452
|
+
attr_accessor :source
|
|
3453
|
+
|
|
3454
|
+
# Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
|
|
3455
|
+
# or a custom 'Budget\_\_c').
|
|
3456
|
+
sig { returns(String) }
|
|
3457
|
+
attr_accessor :zoho_field
|
|
3458
|
+
|
|
3459
|
+
sig do
|
|
3460
|
+
params(source: String, zoho_field: String).returns(
|
|
3461
|
+
T.attached_class
|
|
3462
|
+
)
|
|
3463
|
+
end
|
|
3464
|
+
def self.new(
|
|
3465
|
+
# Source key to read from the call: a structured_output field name, falling back
|
|
3466
|
+
# to a prompt variable of the same name.
|
|
3467
|
+
source:,
|
|
3468
|
+
# Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
|
|
3469
|
+
# or a custom 'Budget\_\_c').
|
|
3470
|
+
zoho_field:
|
|
3471
|
+
)
|
|
3472
|
+
end
|
|
3473
|
+
|
|
3474
|
+
sig { override.returns({ source: String, zoho_field: String }) }
|
|
3475
|
+
def to_hash
|
|
3476
|
+
end
|
|
3477
|
+
end
|
|
3478
|
+
|
|
3479
|
+
module Outcome
|
|
1033
3480
|
extend Revox::Internal::Type::Enum
|
|
1034
3481
|
|
|
1035
3482
|
TaggedSymbol =
|
|
1036
3483
|
T.type_alias do
|
|
1037
3484
|
T.all(
|
|
1038
3485
|
Symbol,
|
|
1039
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
3486
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome
|
|
1040
3487
|
)
|
|
1041
3488
|
end
|
|
1042
3489
|
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1043
3490
|
|
|
1044
|
-
|
|
3491
|
+
NOT_INTERESTED =
|
|
1045
3492
|
T.let(
|
|
1046
|
-
:
|
|
1047
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
3493
|
+
:not_interested,
|
|
3494
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
1048
3495
|
)
|
|
1049
|
-
|
|
3496
|
+
INTERESTED =
|
|
1050
3497
|
T.let(
|
|
1051
|
-
:
|
|
1052
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
3498
|
+
:interested,
|
|
3499
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
1053
3500
|
)
|
|
1054
|
-
|
|
3501
|
+
COMPLETED =
|
|
1055
3502
|
T.let(
|
|
1056
|
-
:
|
|
1057
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
3503
|
+
:completed,
|
|
3504
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
1058
3505
|
)
|
|
1059
|
-
|
|
3506
|
+
REQUESTED_CALLBACK_LATER =
|
|
1060
3507
|
T.let(
|
|
1061
|
-
:
|
|
1062
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
3508
|
+
:requested_callback_later,
|
|
3509
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
1063
3510
|
)
|
|
1064
|
-
|
|
3511
|
+
REQUESTED_CALLBACK_NEW_NUMBER =
|
|
1065
3512
|
T.let(
|
|
1066
|
-
:
|
|
1067
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
3513
|
+
:requested_callback_new_number,
|
|
3514
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
1068
3515
|
)
|
|
1069
|
-
|
|
3516
|
+
DO_NOT_CONTACT =
|
|
1070
3517
|
T.let(
|
|
1071
|
-
:
|
|
1072
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
3518
|
+
:do_not_contact,
|
|
3519
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3520
|
+
)
|
|
3521
|
+
AI_AVERSE =
|
|
3522
|
+
T.let(
|
|
3523
|
+
:ai_averse,
|
|
3524
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
3525
|
+
)
|
|
3526
|
+
NONE =
|
|
3527
|
+
T.let(
|
|
3528
|
+
:none,
|
|
3529
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
1073
3530
|
)
|
|
1074
3531
|
|
|
1075
3532
|
sig do
|
|
1076
3533
|
override.returns(
|
|
1077
3534
|
T::Array[
|
|
1078
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
3535
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
|
|
1079
3536
|
]
|
|
1080
3537
|
)
|
|
1081
3538
|
end
|
|
@@ -1084,51 +3541,43 @@ module Revox
|
|
|
1084
3541
|
end
|
|
1085
3542
|
end
|
|
1086
3543
|
|
|
1087
|
-
class
|
|
3544
|
+
class CreatedBy < Revox::Internal::Type::BaseModel
|
|
1088
3545
|
OrHash =
|
|
1089
3546
|
T.type_alias do
|
|
1090
3547
|
T.any(
|
|
1091
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::
|
|
3548
|
+
Revox::Models::CampaignListResponse::Campaign::Assistant::CreatedBy,
|
|
1092
3549
|
Revox::Internal::AnyHash
|
|
1093
3550
|
)
|
|
1094
3551
|
end
|
|
1095
3552
|
|
|
1096
|
-
# The
|
|
3553
|
+
# The database user id of the creator.
|
|
1097
3554
|
sig { returns(String) }
|
|
1098
3555
|
attr_accessor :id
|
|
1099
3556
|
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
returns(
|
|
1103
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol
|
|
1104
|
-
)
|
|
1105
|
-
end
|
|
1106
|
-
attr_accessor :provider
|
|
3557
|
+
sig { returns(String) }
|
|
3558
|
+
attr_accessor :email
|
|
1107
3559
|
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
sig { returns(T.nilable(Float)) }
|
|
1111
|
-
attr_reader :speed
|
|
3560
|
+
sig { returns(T.nilable(String)) }
|
|
3561
|
+
attr_accessor :first_name
|
|
1112
3562
|
|
|
1113
|
-
sig {
|
|
1114
|
-
|
|
3563
|
+
sig { returns(T.nilable(String)) }
|
|
3564
|
+
attr_accessor :last_name
|
|
1115
3565
|
|
|
3566
|
+
# The user who created the assistant.
|
|
1116
3567
|
sig do
|
|
1117
3568
|
params(
|
|
1118
3569
|
id: String,
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
3570
|
+
email: String,
|
|
3571
|
+
first_name: T.nilable(String),
|
|
3572
|
+
last_name: T.nilable(String)
|
|
1122
3573
|
).returns(T.attached_class)
|
|
1123
3574
|
end
|
|
1124
3575
|
def self.new(
|
|
1125
|
-
# The
|
|
3576
|
+
# The database user id of the creator.
|
|
1126
3577
|
id:,
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
# 0.7–1.2. Default is 1.0.
|
|
1131
|
-
speed: nil
|
|
3578
|
+
email:,
|
|
3579
|
+
first_name:,
|
|
3580
|
+
last_name:
|
|
1132
3581
|
)
|
|
1133
3582
|
end
|
|
1134
3583
|
|
|
@@ -1136,49 +3585,14 @@ module Revox
|
|
|
1136
3585
|
override.returns(
|
|
1137
3586
|
{
|
|
1138
3587
|
id: String,
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
3588
|
+
email: String,
|
|
3589
|
+
first_name: T.nilable(String),
|
|
3590
|
+
last_name: T.nilable(String)
|
|
1142
3591
|
}
|
|
1143
3592
|
)
|
|
1144
3593
|
end
|
|
1145
3594
|
def to_hash
|
|
1146
3595
|
end
|
|
1147
|
-
|
|
1148
|
-
# The provider of the voice.
|
|
1149
|
-
module Provider
|
|
1150
|
-
extend Revox::Internal::Type::Enum
|
|
1151
|
-
|
|
1152
|
-
TaggedSymbol =
|
|
1153
|
-
T.type_alias do
|
|
1154
|
-
T.all(
|
|
1155
|
-
Symbol,
|
|
1156
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider
|
|
1157
|
-
)
|
|
1158
|
-
end
|
|
1159
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
1160
|
-
|
|
1161
|
-
CARTESIA =
|
|
1162
|
-
T.let(
|
|
1163
|
-
:cartesia,
|
|
1164
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol
|
|
1165
|
-
)
|
|
1166
|
-
ELEVENLABS =
|
|
1167
|
-
T.let(
|
|
1168
|
-
:elevenlabs,
|
|
1169
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol
|
|
1170
|
-
)
|
|
1171
|
-
|
|
1172
|
-
sig do
|
|
1173
|
-
override.returns(
|
|
1174
|
-
T::Array[
|
|
1175
|
-
Revox::Models::CampaignListResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol
|
|
1176
|
-
]
|
|
1177
|
-
)
|
|
1178
|
-
end
|
|
1179
|
-
def self.values
|
|
1180
|
-
end
|
|
1181
|
-
end
|
|
1182
3596
|
end
|
|
1183
3597
|
|
|
1184
3598
|
class FaqItem < Revox::Internal::Type::BaseModel
|
|
@@ -1304,6 +3718,24 @@ module Revox
|
|
|
1304
3718
|
)
|
|
1305
3719
|
end
|
|
1306
3720
|
|
|
3721
|
+
# Days of the week when calls are allowed, in the recipient's timezone. Default:
|
|
3722
|
+
# Monday through Friday.
|
|
3723
|
+
sig do
|
|
3724
|
+
returns(
|
|
3725
|
+
T::Array[
|
|
3726
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
3727
|
+
]
|
|
3728
|
+
)
|
|
3729
|
+
end
|
|
3730
|
+
attr_accessor :allowed_days
|
|
3731
|
+
|
|
3732
|
+
# If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
|
|
3733
|
+
# retry_delay_seconds) when attempt #1 didn't reach a human.
|
|
3734
|
+
# Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
|
|
3735
|
+
# Default: false.
|
|
3736
|
+
sig { returns(T::Boolean) }
|
|
3737
|
+
attr_accessor :call_twice_in_a_row
|
|
3738
|
+
|
|
1307
3739
|
sig do
|
|
1308
3740
|
returns(
|
|
1309
3741
|
T::Array[
|
|
@@ -1327,6 +3759,11 @@ module Revox
|
|
|
1327
3759
|
# iterations. If not provided, defaults will be used.
|
|
1328
3760
|
sig do
|
|
1329
3761
|
params(
|
|
3762
|
+
allowed_days:
|
|
3763
|
+
T::Array[
|
|
3764
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::OrSymbol
|
|
3765
|
+
],
|
|
3766
|
+
call_twice_in_a_row: T::Boolean,
|
|
1330
3767
|
calling_windows:
|
|
1331
3768
|
T::Array[
|
|
1332
3769
|
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::CallingWindow::OrHash
|
|
@@ -1336,6 +3773,14 @@ module Revox
|
|
|
1336
3773
|
).returns(T.attached_class)
|
|
1337
3774
|
end
|
|
1338
3775
|
def self.new(
|
|
3776
|
+
# Days of the week when calls are allowed, in the recipient's timezone. Default:
|
|
3777
|
+
# Monday through Friday.
|
|
3778
|
+
allowed_days:,
|
|
3779
|
+
# If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
|
|
3780
|
+
# retry_delay_seconds) when attempt #1 didn't reach a human.
|
|
3781
|
+
# Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
|
|
3782
|
+
# Default: false.
|
|
3783
|
+
call_twice_in_a_row:,
|
|
1339
3784
|
calling_windows:,
|
|
1340
3785
|
# Maximum number of call retry attempts. Default: 3.
|
|
1341
3786
|
max_retry_attempts:,
|
|
@@ -1349,6 +3794,11 @@ module Revox
|
|
|
1349
3794
|
sig do
|
|
1350
3795
|
override.returns(
|
|
1351
3796
|
{
|
|
3797
|
+
allowed_days:
|
|
3798
|
+
T::Array[
|
|
3799
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
3800
|
+
],
|
|
3801
|
+
call_twice_in_a_row: T::Boolean,
|
|
1352
3802
|
calling_windows:
|
|
1353
3803
|
T::Array[
|
|
1354
3804
|
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::CallingWindow
|
|
@@ -1361,6 +3811,65 @@ module Revox
|
|
|
1361
3811
|
def to_hash
|
|
1362
3812
|
end
|
|
1363
3813
|
|
|
3814
|
+
module AllowedDay
|
|
3815
|
+
extend Revox::Internal::Type::Enum
|
|
3816
|
+
|
|
3817
|
+
TaggedSymbol =
|
|
3818
|
+
T.type_alias do
|
|
3819
|
+
T.all(
|
|
3820
|
+
Symbol,
|
|
3821
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay
|
|
3822
|
+
)
|
|
3823
|
+
end
|
|
3824
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
3825
|
+
|
|
3826
|
+
MONDAY =
|
|
3827
|
+
T.let(
|
|
3828
|
+
:monday,
|
|
3829
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
3830
|
+
)
|
|
3831
|
+
TUESDAY =
|
|
3832
|
+
T.let(
|
|
3833
|
+
:tuesday,
|
|
3834
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
3835
|
+
)
|
|
3836
|
+
WEDNESDAY =
|
|
3837
|
+
T.let(
|
|
3838
|
+
:wednesday,
|
|
3839
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
3840
|
+
)
|
|
3841
|
+
THURSDAY =
|
|
3842
|
+
T.let(
|
|
3843
|
+
:thursday,
|
|
3844
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
3845
|
+
)
|
|
3846
|
+
FRIDAY =
|
|
3847
|
+
T.let(
|
|
3848
|
+
:friday,
|
|
3849
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
3850
|
+
)
|
|
3851
|
+
SATURDAY =
|
|
3852
|
+
T.let(
|
|
3853
|
+
:saturday,
|
|
3854
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
3855
|
+
)
|
|
3856
|
+
SUNDAY =
|
|
3857
|
+
T.let(
|
|
3858
|
+
:sunday,
|
|
3859
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
3860
|
+
)
|
|
3861
|
+
|
|
3862
|
+
sig do
|
|
3863
|
+
override.returns(
|
|
3864
|
+
T::Array[
|
|
3865
|
+
Revox::Models::CampaignListResponse::Campaign::CallRetryConfig::AllowedDay::TaggedSymbol
|
|
3866
|
+
]
|
|
3867
|
+
)
|
|
3868
|
+
end
|
|
3869
|
+
def self.values
|
|
3870
|
+
end
|
|
3871
|
+
end
|
|
3872
|
+
|
|
1364
3873
|
class CallingWindow < Revox::Internal::Type::BaseModel
|
|
1365
3874
|
OrHash =
|
|
1366
3875
|
T.type_alias do
|
|
@@ -1421,6 +3930,131 @@ module Revox
|
|
|
1421
3930
|
end
|
|
1422
3931
|
end
|
|
1423
3932
|
|
|
3933
|
+
class CreatedBy < Revox::Internal::Type::BaseModel
|
|
3934
|
+
OrHash =
|
|
3935
|
+
T.type_alias do
|
|
3936
|
+
T.any(
|
|
3937
|
+
Revox::Models::CampaignListResponse::Campaign::CreatedBy,
|
|
3938
|
+
Revox::Internal::AnyHash
|
|
3939
|
+
)
|
|
3940
|
+
end
|
|
3941
|
+
|
|
3942
|
+
# The database user id (foreign key target on calls.assignee_id).
|
|
3943
|
+
sig { returns(String) }
|
|
3944
|
+
attr_accessor :id
|
|
3945
|
+
|
|
3946
|
+
sig { returns(String) }
|
|
3947
|
+
attr_accessor :email
|
|
3948
|
+
|
|
3949
|
+
sig { returns(T.nilable(String)) }
|
|
3950
|
+
attr_accessor :first_name
|
|
3951
|
+
|
|
3952
|
+
sig { returns(T.nilable(String)) }
|
|
3953
|
+
attr_accessor :last_name
|
|
3954
|
+
|
|
3955
|
+
# A member of the current organization.
|
|
3956
|
+
sig do
|
|
3957
|
+
params(
|
|
3958
|
+
id: String,
|
|
3959
|
+
email: String,
|
|
3960
|
+
first_name: T.nilable(String),
|
|
3961
|
+
last_name: T.nilable(String)
|
|
3962
|
+
).returns(T.attached_class)
|
|
3963
|
+
end
|
|
3964
|
+
def self.new(
|
|
3965
|
+
# The database user id (foreign key target on calls.assignee_id).
|
|
3966
|
+
id:,
|
|
3967
|
+
email:,
|
|
3968
|
+
first_name:,
|
|
3969
|
+
last_name:
|
|
3970
|
+
)
|
|
3971
|
+
end
|
|
3972
|
+
|
|
3973
|
+
sig do
|
|
3974
|
+
override.returns(
|
|
3975
|
+
{
|
|
3976
|
+
id: String,
|
|
3977
|
+
email: String,
|
|
3978
|
+
first_name: T.nilable(String),
|
|
3979
|
+
last_name: T.nilable(String)
|
|
3980
|
+
}
|
|
3981
|
+
)
|
|
3982
|
+
end
|
|
3983
|
+
def to_hash
|
|
3984
|
+
end
|
|
3985
|
+
end
|
|
3986
|
+
|
|
3987
|
+
class FunnelStats < Revox::Internal::Type::BaseModel
|
|
3988
|
+
OrHash =
|
|
3989
|
+
T.type_alias do
|
|
3990
|
+
T.any(
|
|
3991
|
+
Revox::Models::CampaignListResponse::Campaign::FunnelStats,
|
|
3992
|
+
Revox::Internal::AnyHash
|
|
3993
|
+
)
|
|
3994
|
+
end
|
|
3995
|
+
|
|
3996
|
+
sig { returns(Float) }
|
|
3997
|
+
attr_accessor :hot
|
|
3998
|
+
|
|
3999
|
+
sig { returns(Float) }
|
|
4000
|
+
attr_accessor :talked_to_human
|
|
4001
|
+
|
|
4002
|
+
sig { returns(Float) }
|
|
4003
|
+
attr_accessor :total_leads
|
|
4004
|
+
|
|
4005
|
+
sig do
|
|
4006
|
+
params(
|
|
4007
|
+
hot: Float,
|
|
4008
|
+
talked_to_human: Float,
|
|
4009
|
+
total_leads: Float
|
|
4010
|
+
).returns(T.attached_class)
|
|
4011
|
+
end
|
|
4012
|
+
def self.new(hot:, talked_to_human:, total_leads:)
|
|
4013
|
+
end
|
|
4014
|
+
|
|
4015
|
+
sig do
|
|
4016
|
+
override.returns(
|
|
4017
|
+
{ hot: Float, talked_to_human: Float, total_leads: Float }
|
|
4018
|
+
)
|
|
4019
|
+
end
|
|
4020
|
+
def to_hash
|
|
4021
|
+
end
|
|
4022
|
+
end
|
|
4023
|
+
|
|
4024
|
+
module PausedReason
|
|
4025
|
+
extend Revox::Internal::Type::Enum
|
|
4026
|
+
|
|
4027
|
+
TaggedSymbol =
|
|
4028
|
+
T.type_alias do
|
|
4029
|
+
T.all(
|
|
4030
|
+
Symbol,
|
|
4031
|
+
Revox::Models::CampaignListResponse::Campaign::PausedReason
|
|
4032
|
+
)
|
|
4033
|
+
end
|
|
4034
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4035
|
+
|
|
4036
|
+
MANUAL =
|
|
4037
|
+
T.let(
|
|
4038
|
+
:manual,
|
|
4039
|
+
Revox::Models::CampaignListResponse::Campaign::PausedReason::TaggedSymbol
|
|
4040
|
+
)
|
|
4041
|
+
NO_PRESENCE =
|
|
4042
|
+
T.let(
|
|
4043
|
+
:no_presence,
|
|
4044
|
+
Revox::Models::CampaignListResponse::Campaign::PausedReason::TaggedSymbol
|
|
4045
|
+
)
|
|
4046
|
+
|
|
4047
|
+
sig do
|
|
4048
|
+
override.returns(
|
|
4049
|
+
T::Array[
|
|
4050
|
+
Revox::Models::CampaignListResponse::Campaign::PausedReason::TaggedSymbol
|
|
4051
|
+
]
|
|
4052
|
+
)
|
|
4053
|
+
end
|
|
4054
|
+
def self.values
|
|
4055
|
+
end
|
|
4056
|
+
end
|
|
4057
|
+
|
|
1424
4058
|
class RowStats < Revox::Internal::Type::BaseModel
|
|
1425
4059
|
OrHash =
|
|
1426
4060
|
T.type_alias do
|
|
@@ -1476,6 +4110,46 @@ module Revox
|
|
|
1476
4110
|
def to_hash
|
|
1477
4111
|
end
|
|
1478
4112
|
end
|
|
4113
|
+
|
|
4114
|
+
# The status of the structured output extraction.
|
|
4115
|
+
module StructuredOutputExtraction
|
|
4116
|
+
extend Revox::Internal::Type::Enum
|
|
4117
|
+
|
|
4118
|
+
TaggedSymbol =
|
|
4119
|
+
T.type_alias do
|
|
4120
|
+
T.all(
|
|
4121
|
+
Symbol,
|
|
4122
|
+
Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction
|
|
4123
|
+
)
|
|
4124
|
+
end
|
|
4125
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
4126
|
+
|
|
4127
|
+
NONE =
|
|
4128
|
+
T.let(
|
|
4129
|
+
:none,
|
|
4130
|
+
Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction::TaggedSymbol
|
|
4131
|
+
)
|
|
4132
|
+
RUNNING =
|
|
4133
|
+
T.let(
|
|
4134
|
+
:running,
|
|
4135
|
+
Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction::TaggedSymbol
|
|
4136
|
+
)
|
|
4137
|
+
COMPLETED =
|
|
4138
|
+
T.let(
|
|
4139
|
+
:completed,
|
|
4140
|
+
Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction::TaggedSymbol
|
|
4141
|
+
)
|
|
4142
|
+
|
|
4143
|
+
sig do
|
|
4144
|
+
override.returns(
|
|
4145
|
+
T::Array[
|
|
4146
|
+
Revox::Models::CampaignListResponse::Campaign::StructuredOutputExtraction::TaggedSymbol
|
|
4147
|
+
]
|
|
4148
|
+
)
|
|
4149
|
+
end
|
|
4150
|
+
def self.values
|
|
4151
|
+
end
|
|
4152
|
+
end
|
|
1479
4153
|
end
|
|
1480
4154
|
end
|
|
1481
4155
|
end
|