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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c6e7c9f9f9d9c931d41e70856bbd3b638e751a812c2062b6550cb9e4f33cbf3
4
- data.tar.gz: 7516f693e98600c31bd6335e25b67a16cf3fa8c67eee0134ef5fa6b3786a3a7c
3
+ metadata.gz: b1b4de98cd33754972b65ef99449f76c9078cde99b079302b8a7dab710f14d5e
4
+ data.tar.gz: d2c9bd5a34e61764f65a4152373865f0f4d408eea3c27f2e7163269bf02c559a
5
5
  SHA512:
6
- metadata.gz: b13be3b0dd37ba534d391076faf94c35fe335ac429b4062fe9e8cfa8452769ac4e562f09aa8a771b1636dd0cf35897b461c112056effd12665b98cccc2947020
7
- data.tar.gz: 53e5b970909c78c87ff72b130b038a91ae20f0de252b4759d508d0420154f03610c26df68df93174aca5d2ec7168f5c74b908f95554c59744e8a7677a2074f0c
6
+ metadata.gz: 377e6d49e2bd561db5e07927c6bc6ac918f79c7ec04e9a420c2c2e529cd526b66336186265ec05b52d757d2bf6330676170515892e9295f67052db114485189f
7
+ data.tar.gz: 57474f614ce033b82000f7cbc94555b861c9bb806c588575ca833a35b036309de28b3453b2fda6bb3e06661679ece275a6ea8aab017f146ac738c04896ff3861
data/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0 (2026-08-21)
4
+
5
+ Full Changelog: [v0.3.0...v0.4.0](https://github.com/revoxai/revox-ruby/compare/v0.3.0...v0.4.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([d4a9861](https://github.com/revoxai/revox-ruby/commit/d4a9861ba0312255adf3330b74635d5ee2c5a769))
10
+ * **api:** api update ([d725894](https://github.com/revoxai/revox-ruby/commit/d7258942e389e61f1bb562e0941f80bedb56e321))
11
+ * **api:** api update ([04ceb82](https://github.com/revoxai/revox-ruby/commit/04ceb82dd278caa1d06c6dfb885d99c5808573f8))
12
+ * **api:** api update ([a3b901f](https://github.com/revoxai/revox-ruby/commit/a3b901f6e40b2573a54851874d4c04a588aab6be))
13
+ * **api:** api update ([d72f880](https://github.com/revoxai/revox-ruby/commit/d72f88091b38259374054f908598fc15fa0ad38b))
14
+ * **api:** api update ([44eeb0d](https://github.com/revoxai/revox-ruby/commit/44eeb0df9e5a2dd9ded7562ef180eb0d6fa59a14))
15
+ * **api:** api update ([e760b05](https://github.com/revoxai/revox-ruby/commit/e760b0543518efaf6e3d12bde7f9c20ed0a5301e))
16
+ * **api:** api update ([1705ab1](https://github.com/revoxai/revox-ruby/commit/1705ab1e768706dc0ce9143427a18397c682fa52))
17
+ * **api:** api update ([eeba1ab](https://github.com/revoxai/revox-ruby/commit/eeba1abe2eac35934a3c53745b8666ad4b7807ed))
18
+ * **api:** api update ([9c1e6d5](https://github.com/revoxai/revox-ruby/commit/9c1e6d55985430b6ee51f0fed7138aeca80d8222))
19
+ * **api:** api update ([30302e0](https://github.com/revoxai/revox-ruby/commit/30302e05ae8a8b9a046a6c11021570109fd57ed5))
20
+ * **api:** api update ([0040c51](https://github.com/revoxai/revox-ruby/commit/0040c51ff33cf9c09d105a7caf94bbd0d3b3301f))
21
+ * **api:** api update ([de26330](https://github.com/revoxai/revox-ruby/commit/de26330fd53b845427c10e272b9446774f9655dc))
22
+ * **api:** api update ([c2cac44](https://github.com/revoxai/revox-ruby/commit/c2cac44d1de1509836a5bd9aa53ead2a125fda2f))
23
+ * **api:** api update ([87b5f5d](https://github.com/revoxai/revox-ruby/commit/87b5f5df3311d745e32383ef6797e40f623109d9))
24
+ * **api:** api update ([554ab31](https://github.com/revoxai/revox-ruby/commit/554ab312afd64805475bbceaec5b44f8c65f6fe5))
25
+ * **api:** api update ([ddaef2b](https://github.com/revoxai/revox-ruby/commit/ddaef2bbf4947483638b8ca82f8c156b71d76489))
26
+ * **api:** api update ([82c8134](https://github.com/revoxai/revox-ruby/commit/82c81348c12a478dd9b9abb33dd32e5ab87cd59f))
27
+ * **stlc:** configurable CI runner and private-production-repo support in workflow templates ([702ae8f](https://github.com/revoxai/revox-ruby/commit/702ae8ff3cfd4e6785d909f23b4393a83f2c3c1b))
28
+
3
29
  ## 0.3.0 (2026-07-17)
4
30
 
5
31
  Full Changelog: [v0.2.0...v0.3.0](https://github.com/revoxai/revox-ruby/compare/v0.2.0...v0.3.0)
data/README.md CHANGED
@@ -24,7 +24,7 @@ To use this gem, install via Bundler by adding the following to your application
24
24
  <!-- x-release-please-start-version -->
25
25
 
26
26
  ```ruby
27
- gem "revox", "~> 0.3.0"
27
+ gem "revox", "~> 0.4.0"
28
28
  ```
29
29
 
30
30
  <!-- x-release-please-end -->
@@ -41,10 +41,10 @@ revox = Revox::Client.new(
41
41
 
42
42
  campaign = revox.campaigns.create(
43
43
  assistant_id: "REPLACE_ME",
44
- contacts: [{prompt_variables: {foo: "string"}, to_phone_number: "to_phone_number"}],
45
- launch: true,
46
- name: "REPLACE_ME",
47
- type: "regular"
44
+ contacts: [{prompt_variables: {
45
+
46
+ }, to_phone_number: "to_phone_number"}],
47
+ name: "REPLACE_ME"
48
48
  )
49
49
 
50
50
  puts(campaign.campaign)
@@ -58,10 +58,10 @@ When the library is unable to connect to the API, or if the API returns a non-su
58
58
  begin
59
59
  campaign = revox.campaigns.create(
60
60
  assistant_id: "REPLACE_ME",
61
- contacts: [{prompt_variables: {foo: "string"}, to_phone_number: "to_phone_number"}],
62
- launch: true,
63
- name: "REPLACE_ME",
64
- type: "regular"
61
+ contacts: [{prompt_variables: {
62
+
63
+ }, to_phone_number: "to_phone_number"}],
64
+ name: "REPLACE_ME"
65
65
  )
66
66
  rescue Revox::Errors::APIConnectionError => e
67
67
  puts("The server could not be reached")
@@ -107,10 +107,10 @@ revox = Revox::Client.new(
107
107
  # Or, configure per-request:
108
108
  revox.campaigns.create(
109
109
  assistant_id: "REPLACE_ME",
110
- contacts: [{prompt_variables: {foo: "string"}, to_phone_number: "to_phone_number"}],
111
- launch: true,
110
+ contacts: [{prompt_variables: {
111
+
112
+ }, to_phone_number: "to_phone_number"}],
112
113
  name: "REPLACE_ME",
113
- type: "regular",
114
114
  request_options: {max_retries: 5}
115
115
  )
116
116
  ```
@@ -128,10 +128,10 @@ revox = Revox::Client.new(
128
128
  # Or, configure per-request:
129
129
  revox.campaigns.create(
130
130
  assistant_id: "REPLACE_ME",
131
- contacts: [{prompt_variables: {foo: "string"}, to_phone_number: "to_phone_number"}],
132
- launch: true,
131
+ contacts: [{prompt_variables: {
132
+
133
+ }, to_phone_number: "to_phone_number"}],
133
134
  name: "REPLACE_ME",
134
- type: "regular",
135
135
  request_options: {timeout: 5}
136
136
  )
137
137
  ```
@@ -166,10 +166,10 @@ Note: the `extra_` parameters of the same name overrides the documented paramete
166
166
  campaign =
167
167
  revox.campaigns.create(
168
168
  assistant_id: "REPLACE_ME",
169
- contacts: [{prompt_variables: {foo: "string"}, to_phone_number: "to_phone_number"}],
170
- launch: true,
169
+ contacts: [{prompt_variables: {
170
+
171
+ }, to_phone_number: "to_phone_number"}],
171
172
  name: "REPLACE_ME",
172
- type: "regular",
173
173
  request_options: {
174
174
  extra_query: {my_query_parameter: value},
175
175
  extra_body: {my_body_parameter: value},
@@ -219,13 +219,13 @@ revox.campaigns.create(
219
219
  assistant_id: "REPLACE_ME",
220
220
  contacts: [
221
221
  Revox::CampaignCreateParams::Contact.new(
222
- prompt_variables: {foo: "string"},
222
+ prompt_variables: {
223
+
224
+ },
223
225
  to_phone_number: "to_phone_number"
224
226
  )
225
227
  ],
226
- launch: true,
227
- name: "REPLACE_ME",
228
- type: "regular"
228
+ name: "REPLACE_ME"
229
229
  )
230
230
  ```
231
231
 
@@ -235,10 +235,10 @@ Or, equivalently:
235
235
  # Hashes work, but are not typesafe:
236
236
  revox.campaigns.create(
237
237
  assistant_id: "REPLACE_ME",
238
- contacts: [{prompt_variables: {foo: "string"}, to_phone_number: "to_phone_number"}],
239
- launch: true,
240
- name: "REPLACE_ME",
241
- type: "regular"
238
+ contacts: [{prompt_variables: {
239
+
240
+ }, to_phone_number: "to_phone_number"}],
241
+ name: "REPLACE_ME"
242
242
  )
243
243
 
244
244
  # You can also splat a full Params class:
@@ -246,13 +246,13 @@ params = Revox::CampaignCreateParams.new(
246
246
  assistant_id: "REPLACE_ME",
247
247
  contacts: [
248
248
  Revox::CampaignCreateParams::Contact.new(
249
- prompt_variables: {foo: "string"},
249
+ prompt_variables: {
250
+
251
+ },
250
252
  to_phone_number: "to_phone_number"
251
253
  )
252
254
  ],
253
- launch: true,
254
- name: "REPLACE_ME",
255
- type: "regular"
255
+ name: "REPLACE_ME"
256
256
  )
257
257
  revox.campaigns.create(**params)
258
258
  ```
@@ -262,25 +262,25 @@ revox.campaigns.create(**params)
262
262
  Since this library does not depend on `sorbet-runtime`, it cannot provide [`T::Enum`](https://sorbet.org/docs/tenum) instances. Instead, we provide "tagged symbols" instead, which is always a primitive at runtime:
263
263
 
264
264
  ```ruby
265
- # :regular
266
- puts(Revox::CampaignCreateParams::Type::REGULAR)
265
+ # :generated
266
+ puts(Revox::AssistantCreateParams::FirstSentenceMode::GENERATED)
267
267
 
268
- # Revealed type: `T.all(Revox::CampaignCreateParams::Type, Symbol)`
269
- T.reveal_type(Revox::CampaignCreateParams::Type::REGULAR)
268
+ # Revealed type: `T.all(Revox::AssistantCreateParams::FirstSentenceMode, Symbol)`
269
+ T.reveal_type(Revox::AssistantCreateParams::FirstSentenceMode::GENERATED)
270
270
  ```
271
271
 
272
272
  Enum parameters have a "relaxed" type, so you can either pass in enum constants or their literal value:
273
273
 
274
274
  ```ruby
275
275
  # Using the enum constants preserves the tagged type information:
276
- revox.campaigns.create(
277
- type: Revox::CampaignCreateParams::Type::REGULAR,
276
+ revox.assistants.create(
277
+ first_sentence_mode: Revox::AssistantCreateParams::FirstSentenceMode::GENERATED,
278
278
  # …
279
279
  )
280
280
 
281
281
  # Literal values are also permissible:
282
- revox.campaigns.create(
283
- type: :regular,
282
+ revox.assistants.create(
283
+ first_sentence_mode: :generated,
284
284
  # …
285
285
  )
286
286
  ```
@@ -89,13 +89,6 @@ module Revox
89
89
  # @return [String, nil]
90
90
  required :email_notification_address, String, nil?: true
91
91
 
92
- # @!attribute email_notification_language
93
- # The language used for the notification email content. One of "en" or "fr".
94
- #
95
- # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage]
96
- required :email_notification_language,
97
- enum: -> { Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage }
98
-
99
92
  # @!attribute email_notification_outcomes
100
93
  # Which call outcomes trigger an email notification. E.g. ["interested",
101
94
  # "completed", "none"]. Use "none" when outcome is null.
@@ -135,8 +128,8 @@ module Revox
135
128
  required :from_phone_number, String, nil?: true
136
129
 
137
130
  # @!attribute human_transfer_mode
138
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
139
- # not configured.
131
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
132
+ # transfer is not configured.
140
133
  #
141
134
  # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::HumanTransferMode, nil]
142
135
  required :human_transfer_mode,
@@ -192,6 +185,13 @@ module Revox
192
185
  # @return [Revox::Models::AssistantCloneResponse::Assistant::Position, nil]
193
186
  required :position, -> { Revox::Models::AssistantCloneResponse::Assistant::Position }, nil?: true
194
187
 
188
+ # @!attribute precall_lookup_url
189
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
190
+ # variables. Null when no lookup is configured.
191
+ #
192
+ # @return [String, nil]
193
+ required :precall_lookup_url, String, nil?: true
194
+
195
195
  # @!attribute prompt
196
196
  #
197
197
  # @return [String]
@@ -275,11 +275,14 @@ module Revox
275
275
  # @return [Float]
276
276
  required :thinking_sound_volume, Float
277
277
 
278
- # @!attribute transfer_phone_number
279
- # Phone number to transfer calls to when users request to speak to a human agent.
278
+ # @!attribute transfer_destinations
279
+ # Where calls can be transferred to when users ask to speak to a human. Null or
280
+ # empty when transfer is not configured.
280
281
  #
281
- # @return [String, nil]
282
- required :transfer_phone_number, String, nil?: true
282
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::TransferDestination>, nil]
283
+ required :transfer_destinations,
284
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::TransferDestination] },
285
+ nil?: true
283
286
 
284
287
  # @!attribute type
285
288
  #
@@ -340,6 +343,11 @@ module Revox
340
343
  optional :faq_items,
341
344
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::FaqItem] }
342
345
 
346
+ # @!attribute is_inbound_receptionist
347
+ #
348
+ # @return [Boolean, nil]
349
+ optional :is_inbound_receptionist, Revox::Internal::Type::Boolean
350
+
343
351
  # @!attribute is_realestate_assistant
344
352
  #
345
353
  # @return [Boolean, nil]
@@ -350,7 +358,7 @@ module Revox
350
358
  # @return [Float, nil]
351
359
  optional :pending_faq_count, Float
352
360
 
353
- # @!method initialize(id:, after_call_sms_outcomes:, after_call_sms_prompt:, background_sound:, background_sound_volume:, calendly:, call_retry_config:, cartesia_dictionary_pronunciation_id:, created_at:, custom_tools:, email_notification_address:, email_notification_language:, email_notification_outcomes:, end_of_call_sentence:, first_sentence:, first_sentence_delay_ms:, first_sentence_mode:, from_phone_number:, human_transfer_mode:, ivr_navigation_enabled:, llm_model:, logo_url:, max_call_duration_secs:, max_duration_end_message:, name:, organization_id:, position:, prompt:, prompt_flow:, slack:, sms_enabled:, sms_template:, structured_output_config:, structured_output_prompt:, stt_context:, stt_model:, thinking_sound:, thinking_sound_probability:, thinking_sound_volume:, transfer_phone_number:, type:, updated_at:, voice:, voicemail_message:, voicemail_sms_prompt:, warm_transfer_summary_instructions:, webhook_url:, zoho:, created_by: nil, faq_items: nil, is_realestate_assistant: nil, pending_faq_count: nil)
361
+ # @!method initialize(id:, after_call_sms_outcomes:, after_call_sms_prompt:, background_sound:, background_sound_volume:, calendly:, call_retry_config:, cartesia_dictionary_pronunciation_id:, created_at:, custom_tools:, email_notification_address:, email_notification_outcomes:, end_of_call_sentence:, first_sentence:, first_sentence_delay_ms:, first_sentence_mode:, from_phone_number:, human_transfer_mode:, ivr_navigation_enabled:, llm_model:, logo_url:, max_call_duration_secs:, max_duration_end_message:, name:, organization_id:, position:, precall_lookup_url:, prompt:, prompt_flow:, slack:, sms_enabled:, sms_template:, structured_output_config:, structured_output_prompt:, stt_context:, stt_model:, thinking_sound:, thinking_sound_probability:, thinking_sound_volume:, transfer_destinations:, type:, updated_at:, voice:, voicemail_message:, voicemail_sms_prompt:, warm_transfer_summary_instructions:, webhook_url:, zoho:, created_by: nil, faq_items: nil, is_inbound_receptionist: nil, is_realestate_assistant: nil, pending_faq_count: nil)
354
362
  # Some parameter documentations has been truncated, see
355
363
  # {Revox::Models::AssistantCloneResponse::Assistant} for more details.
356
364
  #
@@ -376,8 +384,6 @@ module Revox
376
384
  #
377
385
  # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
378
386
  #
379
- # @param email_notification_language [Symbol, Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr".
380
- #
381
387
  # @param email_notification_outcomes [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
382
388
  #
383
389
  # @param end_of_call_sentence [String, nil]
@@ -390,7 +396,7 @@ module Revox
390
396
  #
391
397
  # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
392
398
  #
393
- # @param human_transfer_mode [Symbol, Revox::Models::AssistantCloneResponse::Assistant::HumanTransferMode, nil] Warm or cold transfer when transfer_phone_number is set; null when transfer is n
399
+ # @param human_transfer_mode [Symbol, Revox::Models::AssistantCloneResponse::Assistant::HumanTransferMode, nil] Warm or cold transfer when transfer_destinations is non-empty; null when transfe
394
400
  #
395
401
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
396
402
  #
@@ -408,6 +414,8 @@ module Revox
408
414
  #
409
415
  # @param position [Revox::Models::AssistantCloneResponse::Assistant::Position, nil]
410
416
  #
417
+ # @param precall_lookup_url [String, nil] URL fetched before an inbound call is answered to resolve the assistant's prompt
418
+ #
411
419
  # @param prompt [String]
412
420
  #
413
421
  # @param prompt_flow [Revox::Models::AssistantCloneResponse::Assistant::PromptFlow, nil]
@@ -432,7 +440,7 @@ module Revox
432
440
  #
433
441
  # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
434
442
  #
435
- # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent.
443
+ # @param transfer_destinations [Array<Revox::Models::AssistantCloneResponse::Assistant::TransferDestination>, nil] Where calls can be transferred to when users ask to speak to a human. Null or em
436
444
  #
437
445
  # @param type [Symbol, Revox::Models::AssistantCloneResponse::Assistant::Type]
438
446
  #
@@ -454,6 +462,8 @@ module Revox
454
462
  #
455
463
  # @param faq_items [Array<Revox::Models::AssistantCloneResponse::Assistant::FaqItem>]
456
464
  #
465
+ # @param is_inbound_receptionist [Boolean]
466
+ #
457
467
  # @param is_realestate_assistant [Boolean]
458
468
  #
459
469
  # @param pending_faq_count [Float]
@@ -465,9 +475,6 @@ module Revox
465
475
  INTERESTED = :interested
466
476
  COMPLETED = :completed
467
477
  REQUESTED_CALLBACK_LATER = :requested_callback_later
468
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
469
- DO_NOT_CONTACT = :do_not_contact
470
- AI_AVERSE = :ai_averse
471
478
  NONE = :none
472
479
 
473
480
  # @!method self.values
@@ -600,7 +607,8 @@ module Revox
600
607
  required :calling_window_start_time, String
601
608
 
602
609
  # @!attribute retry_delay_seconds
603
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
610
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
611
+ # allows. Default: 7200 (2 hours).
604
612
  #
605
613
  # @return [Integer]
606
614
  required :retry_delay_seconds, Integer
@@ -614,7 +622,7 @@ module Revox
614
622
  #
615
623
  # @param calling_window_start_time [String] Start time for the calling window in the recipient's timezone (or timezone_overr
616
624
  #
617
- # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. Default: 7200 (2 hours).
625
+ # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. 0 retries as soon as the calling window
618
626
  end
619
627
  end
620
628
 
@@ -796,19 +804,6 @@ module Revox
796
804
  end
797
805
  end
798
806
 
799
- # The language used for the notification email content. One of "en" or "fr".
800
- #
801
- # @see Revox::Models::AssistantCloneResponse::Assistant#email_notification_language
802
- module EmailNotificationLanguage
803
- extend Revox::Internal::Type::Enum
804
-
805
- EN = :en
806
- FR = :fr
807
-
808
- # @!method self.values
809
- # @return [Array<Symbol>]
810
- end
811
-
812
807
  module EmailNotificationOutcome
813
808
  extend Revox::Internal::Type::Enum
814
809
 
@@ -816,9 +811,6 @@ module Revox
816
811
  INTERESTED = :interested
817
812
  COMPLETED = :completed
818
813
  REQUESTED_CALLBACK_LATER = :requested_callback_later
819
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
820
- DO_NOT_CONTACT = :do_not_contact
821
- AI_AVERSE = :ai_averse
822
814
  NONE = :none
823
815
 
824
816
  # @!method self.values
@@ -837,8 +829,8 @@ module Revox
837
829
  # @return [Array<Symbol>]
838
830
  end
839
831
 
840
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
841
- # not configured.
832
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
833
+ # transfer is not configured.
842
834
  #
843
835
  # @see Revox::Models::AssistantCloneResponse::Assistant#human_transfer_mode
844
836
  module HumanTransferMode
@@ -1128,11 +1120,14 @@ module Revox
1128
1120
 
1129
1121
  # @see Revox::Models::AssistantCloneResponse::Assistant#slack
1130
1122
  class Slack < Revox::Internal::Type::BaseModel
1131
- # @!attribute channel_id
1132
- # The Slack channel ID where the notification will be posted.
1123
+ # @!attribute channels
1124
+ # The Slack channels eligible to receive the notification. When more than one is
1125
+ # configured, the agent prompt may define routing rules to narrow it down per
1126
+ # call; with no such rules every channel here is notified.
1133
1127
  #
1134
- # @return [String]
1135
- required :channel_id, String
1128
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel>]
1129
+ required :channels,
1130
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel] }
1136
1131
 
1137
1132
  # @!attribute connection_id
1138
1133
  # The Nango connection ID linking the org's Slack workspace to Revox.
@@ -1148,37 +1143,53 @@ module Revox
1148
1143
  required :outcomes,
1149
1144
  -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome] }
1150
1145
 
1151
- # @!attribute channel_name
1152
- # Human-readable Slack channel name, cached for display in the UI.
1153
- #
1154
- # @return [String, nil]
1155
- optional :channel_name, String, nil?: true
1156
-
1157
1146
  # @!attribute template
1158
1147
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1159
1148
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1160
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1161
- # prompt_variables and structured_output keys. When null/empty a default template
1162
- # is used.
1149
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
1150
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
1151
+ # null/empty a default template is used.
1163
1152
  #
1164
1153
  # @return [String, nil]
1165
1154
  optional :template, String, nil?: true
1166
1155
 
1167
- # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1156
+ # @!method initialize(channels:, connection_id:, outcomes:, template: nil)
1168
1157
  # Some parameter documentations has been truncated, see
1169
1158
  # {Revox::Models::AssistantCloneResponse::Assistant::Slack} for more details.
1170
1159
  #
1171
- # @param channel_id [String] The Slack channel ID where the notification will be posted.
1160
+ # @param channels [Array<Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel>] The Slack channels eligible to receive the notification. When more than one is c
1172
1161
  #
1173
1162
  # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1174
1163
  #
1175
1164
  # @param outcomes [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1176
1165
  #
1177
- # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1178
- #
1179
1166
  # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1180
1167
  # {{call\_
1181
1168
 
1169
+ class Channel < Revox::Internal::Type::BaseModel
1170
+ # @!attribute id
1171
+ # The Slack channel ID (e.g. 'C01234567').
1172
+ #
1173
+ # @return [String]
1174
+ required :id, String
1175
+
1176
+ # @!attribute name
1177
+ # Human-readable Slack channel name, cached for display in the UI and given to the
1178
+ # LLM when the agent prompt routes by channel name.
1179
+ #
1180
+ # @return [String, nil]
1181
+ optional :name, String, nil?: true
1182
+
1183
+ # @!method initialize(id:, name: nil)
1184
+ # Some parameter documentations has been truncated, see
1185
+ # {Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel} for more
1186
+ # details.
1187
+ #
1188
+ # @param id [String] The Slack channel ID (e.g. 'C01234567').
1189
+ #
1190
+ # @param name [String, nil] Human-readable Slack channel name, cached for display in the UI and given to the
1191
+ end
1192
+
1182
1193
  module Outcome
1183
1194
  extend Revox::Internal::Type::Enum
1184
1195
 
@@ -1186,9 +1197,6 @@ module Revox
1186
1197
  INTERESTED = :interested
1187
1198
  COMPLETED = :completed
1188
1199
  REQUESTED_CALLBACK_LATER = :requested_callback_later
1189
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1190
- DO_NOT_CONTACT = :do_not_contact
1191
- AI_AVERSE = :ai_averse
1192
1200
  NONE = :none
1193
1201
 
1194
1202
  # @!method self.values
@@ -1316,6 +1324,22 @@ module Revox
1316
1324
  # @return [Array<Symbol>]
1317
1325
  end
1318
1326
 
1327
+ class TransferDestination < Revox::Internal::Type::BaseModel
1328
+ # @!attribute label
1329
+ #
1330
+ # @return [String]
1331
+ required :label, String
1332
+
1333
+ # @!attribute phone_number
1334
+ #
1335
+ # @return [String]
1336
+ required :phone_number, String
1337
+
1338
+ # @!method initialize(label:, phone_number:)
1339
+ # @param label [String]
1340
+ # @param phone_number [String]
1341
+ end
1342
+
1319
1343
  # @see Revox::Models::AssistantCloneResponse::Assistant#type
1320
1344
  module Type
1321
1345
  extend Revox::Internal::Type::Enum
@@ -1351,7 +1375,7 @@ module Revox
1351
1375
 
1352
1376
  # @!attribute speed
1353
1377
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1354
- # 0.7–1.2. Default is 1.0.
1378
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
1355
1379
  #
1356
1380
  # @return [Float, nil]
1357
1381
  optional :speed, Float
@@ -1385,6 +1409,7 @@ module Revox
1385
1409
 
1386
1410
  CARTESIA = :cartesia
1387
1411
  ELEVENLABS = :elevenlabs
1412
+ GRADIUM = :gradium
1388
1413
 
1389
1414
  # @!method self.values
1390
1415
  # @return [Array<Symbol>]
@@ -1499,9 +1524,6 @@ module Revox
1499
1524
  INTERESTED = :interested
1500
1525
  COMPLETED = :completed
1501
1526
  REQUESTED_CALLBACK_LATER = :requested_callback_later
1502
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1503
- DO_NOT_CONTACT = :do_not_contact
1504
- AI_AVERSE = :ai_averse
1505
1527
  NONE = :none
1506
1528
 
1507
1529
  # @!method self.values