revox 0.3.0 → 0.4.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.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/README.md +38 -38
  4. data/lib/revox/models/assistant_clone_response.rb +87 -65
  5. data/lib/revox/models/assistant_create_params.rb +90 -66
  6. data/lib/revox/models/assistant_create_response.rb +87 -65
  7. data/lib/revox/models/assistant_list_response.rb +87 -65
  8. data/lib/revox/models/assistant_retrieve_response.rb +86 -65
  9. data/lib/revox/models/assistant_update_params.rb +90 -66
  10. data/lib/revox/models/assistant_update_response.rb +87 -65
  11. data/lib/revox/models/call_create_params.rb +117 -90
  12. data/lib/revox/models/call_create_response.rb +670 -90
  13. data/lib/revox/models/call_export_params.rb +1 -3
  14. data/lib/revox/models/call_phone_history_response.rb +0 -3
  15. data/lib/revox/models/call_retrieve_response.rb +671 -90
  16. data/lib/revox/models/call_search_params.rb +1 -3
  17. data/lib/revox/models/call_search_response.rb +670 -90
  18. data/lib/revox/models/campaign_create_params.rb +7 -57
  19. data/lib/revox/models/campaign_create_response.rb +108 -119
  20. data/lib/revox/models/campaign_get_rows_response.rb +672 -90
  21. data/lib/revox/models/campaign_list_response.rb +108 -119
  22. data/lib/revox/models/campaign_retrieve_response.rb +108 -119
  23. data/lib/revox/models/campaign_statistics_response.rb +51 -23
  24. data/lib/revox/models/campaign_update_params.rb +9 -78
  25. data/lib/revox/models/campaign_update_response.rb +108 -119
  26. data/lib/revox/models/phone_number_list_response.rb +87 -65
  27. data/lib/revox/models/phone_number_update_response.rb +87 -65
  28. data/lib/revox/models/voice_list_response.rb +1 -0
  29. data/lib/revox/models/voice_preview_params.rb +1 -0
  30. data/lib/revox/models/voice_retrieve_params.rb +1 -0
  31. data/lib/revox/models.rb +0 -2
  32. data/lib/revox/resources/assistants.rb +10 -10
  33. data/lib/revox/resources/call.rb +4 -4
  34. data/lib/revox/resources/campaigns.rb +13 -45
  35. data/lib/revox/version.rb +1 -1
  36. data/lib/revox.rb +0 -2
  37. data/rbi/revox/models/assistant_clone_response.rbi +157 -147
  38. data/rbi/revox/models/assistant_create_params.rbi +148 -162
  39. data/rbi/revox/models/assistant_create_response.rbi +157 -147
  40. data/rbi/revox/models/assistant_list_response.rbi +157 -147
  41. data/rbi/revox/models/assistant_retrieve_response.rbi +153 -147
  42. data/rbi/revox/models/assistant_update_params.rbi +148 -162
  43. data/rbi/revox/models/assistant_update_response.rbi +157 -147
  44. data/rbi/revox/models/call_create_params.rbi +190 -187
  45. data/rbi/revox/models/call_create_response.rbi +1138 -227
  46. data/rbi/revox/models/call_export_params.rbi +5 -15
  47. data/rbi/revox/models/call_phone_history_response.rbi +0 -15
  48. data/rbi/revox/models/call_retrieve_response.rbi +1138 -227
  49. data/rbi/revox/models/call_search_params.rbi +2 -9
  50. data/rbi/revox/models/call_search_response.rbi +1138 -227
  51. data/rbi/revox/models/campaign_create_params.rbi +9 -87
  52. data/rbi/revox/models/campaign_create_response.rbi +188 -266
  53. data/rbi/revox/models/campaign_get_rows_response.rbi +1138 -225
  54. data/rbi/revox/models/campaign_list_response.rbi +188 -262
  55. data/rbi/revox/models/campaign_retrieve_response.rbi +188 -266
  56. data/rbi/revox/models/campaign_statistics_response.rbi +94 -36
  57. data/rbi/revox/models/campaign_update_params.rbi +10 -128
  58. data/rbi/revox/models/campaign_update_response.rbi +188 -266
  59. data/rbi/revox/models/phone_number_list_response.rbi +157 -147
  60. data/rbi/revox/models/phone_number_update_response.rbi +157 -147
  61. data/rbi/revox/models/voice_list_response.rbi +5 -0
  62. data/rbi/revox/models/voice_preview_params.rbi +2 -0
  63. data/rbi/revox/models/voice_retrieve_params.rbi +2 -0
  64. data/rbi/revox/models.rbi +0 -2
  65. data/rbi/revox/resources/assistants.rbi +40 -22
  66. data/rbi/revox/resources/call.rbi +7 -4
  67. data/rbi/revox/resources/campaigns.rbi +12 -44
  68. data/sig/revox/models/assistant_clone_response.rbs +46 -54
  69. data/sig/revox/models/assistant_create_params.rbs +39 -58
  70. data/sig/revox/models/assistant_create_response.rbs +46 -54
  71. data/sig/revox/models/assistant_list_response.rbs +46 -54
  72. data/sig/revox/models/assistant_retrieve_response.rbs +46 -54
  73. data/sig/revox/models/assistant_update_params.rbs +39 -58
  74. data/sig/revox/models/assistant_update_response.rbs +46 -54
  75. data/sig/revox/models/call_create_params.rbs +50 -71
  76. data/sig/revox/models/call_create_response.rbs +468 -77
  77. data/sig/revox/models/call_export_params.rbs +2 -6
  78. data/sig/revox/models/call_phone_history_response.rbs +1 -10
  79. data/sig/revox/models/call_retrieve_response.rbs +468 -77
  80. data/sig/revox/models/call_search_params.rbs +2 -6
  81. data/sig/revox/models/call_search_response.rbs +468 -77
  82. data/sig/revox/models/campaign_create_params.rbs +5 -50
  83. data/sig/revox/models/campaign_create_response.rbs +62 -98
  84. data/sig/revox/models/campaign_get_rows_response.rbs +467 -73
  85. data/sig/revox/models/campaign_list_response.rbs +62 -98
  86. data/sig/revox/models/campaign_retrieve_response.rbs +62 -98
  87. data/sig/revox/models/campaign_statistics_response.rbs +55 -24
  88. data/sig/revox/models/campaign_update_params.rbs +1 -69
  89. data/sig/revox/models/campaign_update_response.rbs +62 -98
  90. data/sig/revox/models/phone_number_list_response.rbs +46 -54
  91. data/sig/revox/models/phone_number_update_response.rbs +46 -54
  92. data/sig/revox/models/voice_list_response.rbs +2 -1
  93. data/sig/revox/models/voice_preview_params.rbs +2 -1
  94. data/sig/revox/models/voice_retrieve_params.rbs +2 -1
  95. data/sig/revox/models.rbs +0 -2
  96. data/sig/revox/resources/assistants.rbs +4 -4
  97. data/sig/revox/resources/call.rbs +1 -1
  98. data/sig/revox/resources/campaigns.rbs +0 -12
  99. metadata +2 -8
  100. data/lib/revox/models/campaign_launch_params.rb +0 -20
  101. data/lib/revox/models/campaign_launch_response.rb +0 -2030
  102. data/rbi/revox/models/campaign_launch_params.rbi +0 -33
  103. data/rbi/revox/models/campaign_launch_response.rbi +0 -4170
  104. data/sig/revox/models/campaign_launch_params.rbs +0 -20
  105. data/sig/revox/models/campaign_launch_response.rbs +0 -1694
@@ -31,8 +31,6 @@ module Revox
31
31
  T::Array[Revox::AssistantCreateParams::CustomTool::OrHash]
32
32
  ),
33
33
  email_notification_address: T.nilable(String),
34
- email_notification_language:
35
- Revox::AssistantCreateParams::EmailNotificationLanguage::OrSymbol,
36
34
  email_notification_outcomes:
37
35
  T.nilable(
38
36
  T::Array[
@@ -62,6 +60,7 @@ module Revox
62
60
  max_call_duration_secs: Float,
63
61
  max_duration_end_message: T.nilable(String),
64
62
  position: T.nilable(Revox::AssistantCreateParams::Position::OrHash),
63
+ precall_lookup_url: T.nilable(String),
65
64
  prompt_flow:
66
65
  T.nilable(Revox::AssistantCreateParams::PromptFlow::OrHash),
67
66
  slack: T.nilable(Revox::AssistantCreateParams::Slack::OrHash),
@@ -79,7 +78,12 @@ module Revox
79
78
  T.nilable(Revox::AssistantCreateParams::ThinkingSound::OrSymbol),
80
79
  thinking_sound_probability: Float,
81
80
  thinking_sound_volume: Float,
82
- transfer_phone_number: T.nilable(String),
81
+ transfer_destinations:
82
+ T.nilable(
83
+ T::Array[
84
+ Revox::AssistantCreateParams::TransferDestination::OrHash
85
+ ]
86
+ ),
83
87
  type: Revox::AssistantCreateParams::Type::OrSymbol,
84
88
  voice: Revox::AssistantCreateParams::Voice::OrHash,
85
89
  voicemail_message: T.nilable(String),
@@ -119,9 +123,6 @@ module Revox
119
123
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
120
124
  # bob@y.com").
121
125
  email_notification_address: nil,
122
- # The language used for the notification email content. One of "en" or "fr".
123
- # Defaults to "en".
124
- email_notification_language: nil,
125
126
  # Which call outcomes trigger an email notification. E.g. ["interested",
126
127
  # "completed", "none"]. Use "none" when outcome is null.
127
128
  email_notification_outcomes: nil,
@@ -143,8 +144,8 @@ module Revox
143
144
  # Must be a phone number owned by the organization in E.164 format (e.g.
144
145
  # +1234567890). When null, the organization's default phone number is used.
145
146
  from_phone_number: nil,
146
- # When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER;
147
- # trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
147
+ # When transfer_destinations is non-empty: "warm" (AI bridges) or "cold" (SIP
148
+ # REFER; trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
148
149
  human_transfer_mode: nil,
149
150
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
150
151
  # skip turns to navigate phone menus.
@@ -162,6 +163,12 @@ module Revox
162
163
  max_duration_end_message: nil,
163
164
  # Canvas position of this assistant's node in its multi-step flow editor.
164
165
  position: nil,
166
+ # Inbound calls only. URL fetched over HTTP GET right before the call is answered,
167
+ # with `{{phone}}` replaced by the caller's number in E.164 format (URL-encoded).
168
+ # It must return `{"prompt_variables": {...}}` covering every `{{variable}}` the
169
+ # assistant declares, otherwise the call is errored. Must be an http(s) URL
170
+ # containing `{{phone}}`. When null, no lookup is performed.
171
+ precall_lookup_url: nil,
165
172
  # Visual prompt constructor data (nodes, edges, positions). Used by the UI to
166
173
  # re-open the visual editor. Does not affect call behavior — the flattened prompt
167
174
  # field is what the LLM receives.
@@ -198,9 +205,11 @@ module Revox
198
205
  thinking_sound_probability: nil,
199
206
  # Volume of the thinking sound (0 = silent, 1 = max).
200
207
  thinking_sound_volume: nil,
201
- # Phone number to transfer calls to when users request to speak to a human agent
202
- # in E.164 format (e.g. +1234567890).
203
- transfer_phone_number: nil,
208
+ # Where calls can be transferred to when users ask to speak to a human. With a
209
+ # single entry the assistant always transfers there; with several, it picks one at
210
+ # transfer time by applying the routing rules written in the assistant's own
211
+ # prompt (which refer to the destination labels). Empty or null disables transfer.
212
+ transfer_destinations: nil,
204
213
  # Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step'
205
214
  # orchestrates a flow of sub-assistants, 'sub-assistant' is a step inside a
206
215
  # multi-step flow (hidden from the assistants list). Flow transitions are managed
@@ -268,8 +277,6 @@ module Revox
268
277
  T::Array[Revox::AssistantUpdateParams::CustomTool::OrHash]
269
278
  ),
270
279
  email_notification_address: T.nilable(String),
271
- email_notification_language:
272
- Revox::AssistantUpdateParams::EmailNotificationLanguage::OrSymbol,
273
280
  email_notification_outcomes:
274
281
  T.nilable(
275
282
  T::Array[
@@ -300,6 +307,7 @@ module Revox
300
307
  max_duration_end_message: T.nilable(String),
301
308
  name: String,
302
309
  position: T.nilable(Revox::AssistantUpdateParams::Position::OrHash),
310
+ precall_lookup_url: T.nilable(String),
303
311
  prompt: String,
304
312
  prompt_flow:
305
313
  T.nilable(Revox::AssistantUpdateParams::PromptFlow::OrHash),
@@ -318,7 +326,12 @@ module Revox
318
326
  T.nilable(Revox::AssistantUpdateParams::ThinkingSound::OrSymbol),
319
327
  thinking_sound_probability: Float,
320
328
  thinking_sound_volume: Float,
321
- transfer_phone_number: T.nilable(String),
329
+ transfer_destinations:
330
+ T.nilable(
331
+ T::Array[
332
+ Revox::AssistantUpdateParams::TransferDestination::OrHash
333
+ ]
334
+ ),
322
335
  type: Revox::AssistantUpdateParams::Type::OrSymbol,
323
336
  voice: Revox::AssistantUpdateParams::Voice::OrHash,
324
337
  voicemail_message: T.nilable(String),
@@ -356,9 +369,6 @@ module Revox
356
369
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
357
370
  # bob@y.com").
358
371
  email_notification_address: nil,
359
- # The language used for the notification email content. One of "en" or "fr".
360
- # Defaults to "en".
361
- email_notification_language: nil,
362
372
  # Which call outcomes trigger an email notification. E.g. ["interested",
363
373
  # "completed", "none"]. Use "none" when outcome is null.
364
374
  email_notification_outcomes: nil,
@@ -380,8 +390,8 @@ module Revox
380
390
  # Must be a phone number owned by the organization in E.164 format (e.g.
381
391
  # +1234567890). When null, the organization's default phone number is used.
382
392
  from_phone_number: nil,
383
- # When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER;
384
- # trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
393
+ # When transfer_destinations is non-empty: "warm" (AI bridges) or "cold" (SIP
394
+ # REFER; trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
385
395
  human_transfer_mode: nil,
386
396
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
387
397
  # skip turns to navigate phone menus.
@@ -400,6 +410,12 @@ module Revox
400
410
  name: nil,
401
411
  # Canvas position of this assistant's node in its multi-step flow editor.
402
412
  position: nil,
413
+ # Inbound calls only. URL fetched over HTTP GET right before the call is answered,
414
+ # with `{{phone}}` replaced by the caller's number in E.164 format (URL-encoded).
415
+ # It must return `{"prompt_variables": {...}}` covering every `{{variable}}` the
416
+ # assistant declares, otherwise the call is errored. Must be an http(s) URL
417
+ # containing `{{phone}}`. When null, no lookup is performed.
418
+ precall_lookup_url: nil,
403
419
  # The prompt to use for the call. This will be given to the LLM (gpt-4.1)
404
420
  prompt: nil,
405
421
  # Visual prompt constructor data (nodes, edges, positions). Used by the UI to
@@ -438,9 +454,11 @@ module Revox
438
454
  thinking_sound_probability: nil,
439
455
  # Volume of the thinking sound (0 = silent, 1 = max).
440
456
  thinking_sound_volume: nil,
441
- # Phone number to transfer calls to when users request to speak to a human agent
442
- # in E.164 format (e.g. +1234567890).
443
- transfer_phone_number: nil,
457
+ # Where calls can be transferred to when users ask to speak to a human. With a
458
+ # single entry the assistant always transfers there; with several, it picks one at
459
+ # transfer time by applying the routing rules written in the assistant's own
460
+ # prompt (which refer to the destination labels). Empty or null disables transfer.
461
+ transfer_destinations: nil,
444
462
  # Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step'
445
463
  # orchestrates a flow of sub-assistants, 'sub-assistant' is a step inside a
446
464
  # multi-step flow (hidden from the assistants list). Flow transitions are managed
@@ -15,11 +15,11 @@ module Revox
15
15
  assistant: Revox::CallCreateParams::Assistant::OrHash,
16
16
  assistant_id: String,
17
17
  concurrency: Revox::CallCreateParams::Concurrency::OrHash,
18
- force_now: T::Boolean,
19
18
  from_phone_number: String,
20
19
  metadata: T::Hash[Symbol, String],
21
20
  prompt_variables: T::Hash[Symbol, String],
22
21
  scheduled_at: Revox::CallCreateParams::ScheduledAt::Variants,
22
+ skip_calling_window: T::Boolean,
23
23
  request_options: Revox::RequestOptions::OrHash
24
24
  ).returns(Revox::Models::CallCreateResponse)
25
25
  end
@@ -31,10 +31,10 @@ module Revox
31
31
  assistant: nil,
32
32
  # The ID of the assistant to use for this call.
33
33
  assistant_id: nil,
34
- # Limit the number of concurrent calls for a given concurrency key.
34
+ # Limit the number of concurrent calls for a given concurrency key. The limit
35
+ # itself is set server-side; omit this to leave the call ungrouped (bounded only
36
+ # by your organization's limit).
35
37
  concurrency: nil,
36
- # The prompt to use for the call. This will be given to the LLM (gpt-4.1)
37
- force_now: nil,
38
38
  # The phone number to use for making the call (e.g., +1234567890). If not
39
39
  # provided, uses the default trunk.
40
40
  from_phone_number: nil,
@@ -47,6 +47,9 @@ module Revox
47
47
  # Schedule the call to start at a specific date and time (ISO 8601 format). If not
48
48
  # provided, the call will start immediately.
49
49
  scheduled_at: nil,
50
+ # Bypass the calling-window check for this call so it dials even outside the
51
+ # assistant's configured window. Use for immediate 'call now' dials.
52
+ skip_calling_window: nil,
50
53
  request_options: {}
51
54
  )
52
55
  end
@@ -3,20 +3,18 @@
3
3
  module Revox
4
4
  module Resources
5
5
  class Campaigns
6
- # Create a new outbound calling campaign. By default the campaign launches
7
- # immediately. Set launch to false to save as a draft for later review.
6
+ # Create a new outbound calling campaign. Every contact is materialized as a call
7
+ # in the `not_launched` status nothing is dialed. Use POST
8
+ # /campaigns/:id/launch-calls to send them.
8
9
  sig do
9
10
  params(
10
11
  assistant_id: String,
11
12
  contacts: T::Array[Revox::CampaignCreateParams::Contact::OrHash],
12
- launch: T::Boolean,
13
13
  name: String,
14
- type: Revox::CampaignCreateParams::Type::OrSymbol,
15
14
  call_retry_config:
16
15
  Revox::CampaignCreateParams::CallRetryConfig::OrHash,
17
16
  from_phone_number: String,
18
17
  max_concurrent_calls: Float,
19
- scheduled_at: Revox::CampaignCreateParams::ScheduledAt::Variants,
20
18
  request_options: Revox::RequestOptions::OrHash
21
19
  ).returns(Revox::Models::CampaignCreateResponse)
22
20
  end
@@ -25,13 +23,8 @@ module Revox
25
23
  assistant_id:,
26
24
  # The list of contacts to call
27
25
  contacts:,
28
- # Whether to launch the campaign immediately. Set to false to save as a draft.
29
- launch:,
30
26
  # The name of the campaign
31
27
  name:,
32
- # Campaign type. 'jump_in' campaigns only dial while someone is on the campaign
33
- # page and auto-pause when unattended.
34
- type:,
35
28
  # Override retry configuration for calls in this campaign. If not provided, uses
36
29
  # the assistant's retry config.
37
30
  call_retry_config: nil,
@@ -39,9 +32,6 @@ module Revox
39
32
  from_phone_number: nil,
40
33
  # Maximum number of concurrent calls allowed for this campaign
41
34
  max_concurrent_calls: nil,
42
- # Schedule all calls in this campaign to start at a specific date and time (ISO
43
- # 8601 format)
44
- scheduled_at: nil,
45
35
  request_options: {}
46
36
  )
47
37
  end
@@ -57,44 +47,34 @@ module Revox
57
47
  def retrieve(id, request_options: {})
58
48
  end
59
49
 
60
- # Update editable fields on a campaign. Draft campaigns support updating all
61
- # fields including assistant, contacts, and settings. Non-draft campaigns only
62
- # support renaming.
50
+ # Update a campaign's name, outbound number, retry configuration (calling hours,
51
+ # retry delay, max attempts) and concurrency cap. Changes are applied to the
52
+ # campaign's calls that have not completed yet. The assistant is fixed at
53
+ # creation; add contacts with POST /campaigns/:id/rows, and choose when calls go
54
+ # out with POST /campaigns/:id/launch-calls.
63
55
  sig do
64
56
  params(
65
57
  id: String,
66
- assistant_id: String,
67
58
  call_retry_config:
68
59
  T.nilable(Revox::CampaignUpdateParams::CallRetryConfig::OrHash),
69
- contacts: T::Array[Revox::CampaignUpdateParams::Contact::OrHash],
70
60
  from_phone_number: T.nilable(String),
71
61
  max_concurrent_calls: T.nilable(Float),
72
62
  name: String,
73
- scheduled_at:
74
- T.nilable(Revox::CampaignUpdateParams::ScheduledAt::Variants),
75
- type: Revox::CampaignUpdateParams::Type::OrSymbol,
76
63
  request_options: Revox::RequestOptions::OrHash
77
64
  ).returns(Revox::Models::CampaignUpdateResponse)
78
65
  end
79
66
  def update(
80
67
  id,
81
- # The ID of the assistant to use (draft only)
82
- assistant_id: nil,
83
68
  # Configuration for call retry behavior including time windows, delays, and max
84
69
  # iterations. If not provided, defaults will be used.
85
70
  call_retry_config: nil,
86
- # Replace contact list (draft only)
87
- contacts: nil,
88
- # The phone number to use for outbound calls (draft only)
71
+ # The phone number to use for outbound calls. Editable after launch; applied to
72
+ # the campaign's calls that have not completed yet.
89
73
  from_phone_number: nil,
90
- # Maximum concurrent calls (draft only)
74
+ # Maximum concurrent calls. Editable after launch.
91
75
  max_concurrent_calls: nil,
92
76
  # Campaign display name
93
77
  name: nil,
94
- # Scheduled start time (draft only)
95
- scheduled_at: nil,
96
- # Campaign type (draft only)
97
- type: nil,
98
78
  request_options: {}
99
79
  )
100
80
  end
@@ -143,8 +123,7 @@ module Revox
143
123
  def export_rows(id, request_options: {})
144
124
  end
145
125
 
146
- # Retrieve all contact rows for a campaign. Useful for loading draft campaign data
147
- # for editing.
126
+ # Retrieve all contact rows for a campaign.
148
127
  sig do
149
128
  params(
150
129
  id: String,
@@ -154,17 +133,6 @@ module Revox
154
133
  def get_rows(id, request_options: {})
155
134
  end
156
135
 
157
- # Launch a previously saved draft campaign. This starts all calls immediately (or
158
- # queues them if scheduled_at is set). The campaign must be in draft status.
159
- sig do
160
- params(
161
- id: String,
162
- request_options: Revox::RequestOptions::OrHash
163
- ).returns(Revox::Models::CampaignLaunchResponse)
164
- end
165
- def launch(id, request_options: {})
166
- end
167
-
168
136
  # Pause a running campaign so no further calls are placed. In-progress calls are
169
137
  # allowed to finish; pending and scheduled calls are held until the campaign is
170
138
  # resumed. Scheduled retry timers keep counting down, so a call resumed before its
@@ -27,7 +27,6 @@ module Revox
27
27
  created_at: top,
28
28
  custom_tools: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool]?,
29
29
  email_notification_address: String?,
30
- email_notification_language: Revox::Models::AssistantCloneResponse::Assistant::email_notification_language,
31
30
  email_notification_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_outcome]?,
32
31
  end_of_call_sentence: String?,
33
32
  first_sentence: String?,
@@ -43,6 +42,7 @@ module Revox
43
42
  name: String,
44
43
  organization_id: String,
45
44
  position: Revox::Models::AssistantCloneResponse::Assistant::Position?,
45
+ precall_lookup_url: String?,
46
46
  prompt: String,
47
47
  prompt_flow: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow?,
48
48
  slack: Revox::Models::AssistantCloneResponse::Assistant::Slack?,
@@ -55,7 +55,7 @@ module Revox
55
55
  thinking_sound: Revox::Models::AssistantCloneResponse::Assistant::thinking_sound?,
56
56
  thinking_sound_probability: Float,
57
57
  thinking_sound_volume: Float,
58
- transfer_phone_number: String?,
58
+ transfer_destinations: ::Array[Revox::Models::AssistantCloneResponse::Assistant::TransferDestination]?,
59
59
  type: Revox::Models::AssistantCloneResponse::Assistant::type_,
60
60
  updated_at: top,
61
61
  voice: Revox::Models::AssistantCloneResponse::Assistant::Voice?,
@@ -66,6 +66,7 @@ module Revox
66
66
  zoho: Revox::Models::AssistantCloneResponse::Assistant::Zoho?,
67
67
  created_by: Revox::Models::AssistantCloneResponse::Assistant::CreatedBy?,
68
68
  faq_items: ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem],
69
+ is_inbound_receptionist: bool,
69
70
  is_realestate_assistant: bool,
70
71
  pending_faq_count: Float
71
72
  }
@@ -93,8 +94,6 @@ module Revox
93
94
 
94
95
  attr_accessor email_notification_address: String?
95
96
 
96
- attr_accessor email_notification_language: Revox::Models::AssistantCloneResponse::Assistant::email_notification_language
97
-
98
97
  attr_accessor email_notification_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_outcome]?
99
98
 
100
99
  attr_accessor end_of_call_sentence: String?
@@ -125,6 +124,8 @@ module Revox
125
124
 
126
125
  attr_accessor position: Revox::Models::AssistantCloneResponse::Assistant::Position?
127
126
 
127
+ attr_accessor precall_lookup_url: String?
128
+
128
129
  attr_accessor prompt: String
129
130
 
130
131
  attr_accessor prompt_flow: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow?
@@ -149,7 +150,7 @@ module Revox
149
150
 
150
151
  attr_accessor thinking_sound_volume: Float
151
152
 
152
- attr_accessor transfer_phone_number: String?
153
+ attr_accessor transfer_destinations: ::Array[Revox::Models::AssistantCloneResponse::Assistant::TransferDestination]?
153
154
 
154
155
  attr_accessor type: Revox::Models::AssistantCloneResponse::Assistant::type_
155
156
 
@@ -175,6 +176,10 @@ module Revox
175
176
  ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem]
176
177
  ) -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem]
177
178
 
179
+ attr_reader is_inbound_receptionist: bool?
180
+
181
+ def is_inbound_receptionist=: (bool) -> bool
182
+
178
183
  attr_reader is_realestate_assistant: bool?
179
184
 
180
185
  def is_realestate_assistant=: (bool) -> bool
@@ -195,7 +200,6 @@ module Revox
195
200
  created_at: top,
196
201
  custom_tools: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool]?,
197
202
  email_notification_address: String?,
198
- email_notification_language: Revox::Models::AssistantCloneResponse::Assistant::email_notification_language,
199
203
  email_notification_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_outcome]?,
200
204
  end_of_call_sentence: String?,
201
205
  first_sentence: String?,
@@ -211,6 +215,7 @@ module Revox
211
215
  name: String,
212
216
  organization_id: String,
213
217
  position: Revox::Models::AssistantCloneResponse::Assistant::Position?,
218
+ precall_lookup_url: String?,
214
219
  prompt: String,
215
220
  prompt_flow: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow?,
216
221
  slack: Revox::Models::AssistantCloneResponse::Assistant::Slack?,
@@ -223,7 +228,7 @@ module Revox
223
228
  thinking_sound: Revox::Models::AssistantCloneResponse::Assistant::thinking_sound?,
224
229
  thinking_sound_probability: Float,
225
230
  thinking_sound_volume: Float,
226
- transfer_phone_number: String?,
231
+ transfer_destinations: ::Array[Revox::Models::AssistantCloneResponse::Assistant::TransferDestination]?,
227
232
  type: Revox::Models::AssistantCloneResponse::Assistant::type_,
228
233
  updated_at: top,
229
234
  voice: Revox::Models::AssistantCloneResponse::Assistant::Voice?,
@@ -234,6 +239,7 @@ module Revox
234
239
  zoho: Revox::Models::AssistantCloneResponse::Assistant::Zoho?,
235
240
  ?created_by: Revox::Models::AssistantCloneResponse::Assistant::CreatedBy?,
236
241
  ?faq_items: ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem],
242
+ ?is_inbound_receptionist: bool,
237
243
  ?is_realestate_assistant: bool,
238
244
  ?pending_faq_count: Float
239
245
  ) -> void
@@ -250,7 +256,6 @@ module Revox
250
256
  created_at: top,
251
257
  custom_tools: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool]?,
252
258
  email_notification_address: String?,
253
- email_notification_language: Revox::Models::AssistantCloneResponse::Assistant::email_notification_language,
254
259
  email_notification_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_outcome]?,
255
260
  end_of_call_sentence: String?,
256
261
  first_sentence: String?,
@@ -266,6 +271,7 @@ module Revox
266
271
  name: String,
267
272
  organization_id: String,
268
273
  position: Revox::Models::AssistantCloneResponse::Assistant::Position?,
274
+ precall_lookup_url: String?,
269
275
  prompt: String,
270
276
  prompt_flow: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow?,
271
277
  slack: Revox::Models::AssistantCloneResponse::Assistant::Slack?,
@@ -278,7 +284,7 @@ module Revox
278
284
  thinking_sound: Revox::Models::AssistantCloneResponse::Assistant::thinking_sound?,
279
285
  thinking_sound_probability: Float,
280
286
  thinking_sound_volume: Float,
281
- transfer_phone_number: String?,
287
+ transfer_destinations: ::Array[Revox::Models::AssistantCloneResponse::Assistant::TransferDestination]?,
282
288
  type: Revox::Models::AssistantCloneResponse::Assistant::type_,
283
289
  updated_at: top,
284
290
  voice: Revox::Models::AssistantCloneResponse::Assistant::Voice?,
@@ -289,6 +295,7 @@ module Revox
289
295
  zoho: Revox::Models::AssistantCloneResponse::Assistant::Zoho?,
290
296
  created_by: Revox::Models::AssistantCloneResponse::Assistant::CreatedBy?,
291
297
  faq_items: ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem],
298
+ is_inbound_receptionist: bool,
292
299
  is_realestate_assistant: bool,
293
300
  pending_faq_count: Float
294
301
  }
@@ -298,9 +305,6 @@ module Revox
298
305
  | :interested
299
306
  | :completed
300
307
  | :requested_callback_later
301
- | :requested_callback_new_number
302
- | :do_not_contact
303
- | :ai_averse
304
308
  | :none
305
309
 
306
310
  module AfterCallSMSOutcome
@@ -310,9 +314,6 @@ module Revox
310
314
  INTERESTED: :interested
311
315
  COMPLETED: :completed
312
316
  REQUESTED_CALLBACK_LATER: :requested_callback_later
313
- REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
314
- DO_NOT_CONTACT: :do_not_contact
315
- AI_AVERSE: :ai_averse
316
317
  NONE: :none
317
318
 
318
319
  def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::after_call_sms_outcome]
@@ -574,25 +575,11 @@ module Revox
574
575
  end
575
576
  end
576
577
 
577
- type email_notification_language = :en | :fr
578
-
579
- module EmailNotificationLanguage
580
- extend Revox::Internal::Type::Enum
581
-
582
- EN: :en
583
- FR: :fr
584
-
585
- def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_language]
586
- end
587
-
588
578
  type email_notification_outcome =
589
579
  :not_interested
590
580
  | :interested
591
581
  | :completed
592
582
  | :requested_callback_later
593
- | :requested_callback_new_number
594
- | :do_not_contact
595
- | :ai_averse
596
583
  | :none
597
584
 
598
585
  module EmailNotificationOutcome
@@ -602,9 +589,6 @@ module Revox
602
589
  INTERESTED: :interested
603
590
  COMPLETED: :completed
604
591
  REQUESTED_CALLBACK_LATER: :requested_callback_later
605
- REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
606
- DO_NOT_CONTACT: :do_not_contact
607
- AI_AVERSE: :ai_averse
608
592
  NONE: :none
609
593
 
610
594
  def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_outcome]
@@ -888,48 +872,52 @@ module Revox
888
872
 
889
873
  type slack =
890
874
  {
891
- channel_id: String,
875
+ channels: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel],
892
876
  connection_id: String,
893
877
  outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::outcome],
894
- channel_name: String?,
895
878
  template: String?
896
879
  }
897
880
 
898
881
  class Slack < Revox::Internal::Type::BaseModel
899
- attr_accessor channel_id: String
882
+ attr_accessor channels: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel]
900
883
 
901
884
  attr_accessor connection_id: String
902
885
 
903
886
  attr_accessor outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::outcome]
904
887
 
905
- attr_accessor channel_name: String?
906
-
907
888
  attr_accessor template: String?
908
889
 
909
890
  def initialize: (
910
- channel_id: String,
891
+ channels: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel],
911
892
  connection_id: String,
912
893
  outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::outcome],
913
- ?channel_name: String?,
914
894
  ?template: String?
915
895
  ) -> void
916
896
 
917
897
  def to_hash: -> {
918
- channel_id: String,
898
+ channels: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel],
919
899
  connection_id: String,
920
900
  outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::outcome],
921
- channel_name: String?,
922
901
  template: String?
923
902
  }
924
903
 
904
+ type channel = { id: String, name: String? }
905
+
906
+ class Channel < Revox::Internal::Type::BaseModel
907
+ attr_accessor id: String
908
+
909
+ attr_accessor name: String?
910
+
911
+ def initialize: (id: String, ?name: String?) -> void
912
+
913
+ def to_hash: -> { id: String, name: String? }
914
+ end
915
+
925
916
  type outcome =
926
917
  :not_interested
927
918
  | :interested
928
919
  | :completed
929
920
  | :requested_callback_later
930
- | :requested_callback_new_number
931
- | :do_not_contact
932
- | :ai_averse
933
921
  | :none
934
922
 
935
923
  module Outcome
@@ -939,9 +927,6 @@ module Revox
939
927
  INTERESTED: :interested
940
928
  COMPLETED: :completed
941
929
  REQUESTED_CALLBACK_LATER: :requested_callback_later
942
- REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
943
- DO_NOT_CONTACT: :do_not_contact
944
- AI_AVERSE: :ai_averse
945
930
  NONE: :none
946
931
 
947
932
  def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::outcome]
@@ -1072,6 +1057,18 @@ module Revox
1072
1057
  def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::thinking_sound]
1073
1058
  end
1074
1059
 
1060
+ type transfer_destination = { label: String, phone_number: String }
1061
+
1062
+ class TransferDestination < Revox::Internal::Type::BaseModel
1063
+ attr_accessor label: String
1064
+
1065
+ attr_accessor phone_number: String
1066
+
1067
+ def initialize: (label: String, phone_number: String) -> void
1068
+
1069
+ def to_hash: -> { label: String, phone_number: String }
1070
+ end
1071
+
1075
1072
  type type_ = :standalone | :"multi-step" | :"sub-assistant"
1076
1073
 
1077
1074
  module Type
@@ -1128,13 +1125,14 @@ module Revox
1128
1125
  volume: Float
1129
1126
  }
1130
1127
 
1131
- type provider = :cartesia | :elevenlabs
1128
+ type provider = :cartesia | :elevenlabs | :gradium
1132
1129
 
1133
1130
  module Provider
1134
1131
  extend Revox::Internal::Type::Enum
1135
1132
 
1136
1133
  CARTESIA: :cartesia
1137
1134
  ELEVENLABS: :elevenlabs
1135
+ GRADIUM: :gradium
1138
1136
 
1139
1137
  def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::Voice::provider]
1140
1138
  end
@@ -1209,9 +1207,6 @@ module Revox
1209
1207
  | :interested
1210
1208
  | :completed
1211
1209
  | :requested_callback_later
1212
- | :requested_callback_new_number
1213
- | :do_not_contact
1214
- | :ai_averse
1215
1210
  | :none
1216
1211
 
1217
1212
  module Outcome
@@ -1221,9 +1216,6 @@ module Revox
1221
1216
  INTERESTED: :interested
1222
1217
  COMPLETED: :completed
1223
1218
  REQUESTED_CALLBACK_LATER: :requested_callback_later
1224
- REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
1225
- DO_NOT_CONTACT: :do_not_contact
1226
- AI_AVERSE: :ai_averse
1227
1219
  NONE: :none
1228
1220
 
1229
1221
  def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::Zoho::outcome]