revox 0.2.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 (208) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/README.md +38 -38
  4. data/lib/revox/client.rb +8 -0
  5. data/lib/revox/internal/type/base_model.rb +3 -3
  6. data/lib/revox/models/assistant_clone_params.rb +20 -0
  7. data/lib/revox/models/assistant_clone_response.rb +1616 -0
  8. data/lib/revox/models/assistant_create_params.rb +90 -66
  9. data/lib/revox/models/assistant_create_response.rb +87 -65
  10. data/lib/revox/models/assistant_list_response.rb +87 -65
  11. data/lib/revox/models/assistant_retrieve_response.rb +86 -65
  12. data/lib/revox/models/assistant_update_params.rb +90 -66
  13. data/lib/revox/models/assistant_update_response.rb +87 -65
  14. data/lib/revox/models/auth_status_retrieve_params.rb +14 -0
  15. data/lib/revox/models/auth_status_retrieve_response.rb +17 -0
  16. data/lib/revox/models/call_cancel_params.rb +20 -0
  17. data/lib/revox/models/call_cancel_response.rb +16 -0
  18. data/lib/revox/models/call_create_params.rb +117 -90
  19. data/lib/revox/models/call_create_response.rb +680 -90
  20. data/lib/revox/models/call_export_params.rb +203 -0
  21. data/lib/revox/models/call_export_response.rb +22 -0
  22. data/lib/revox/models/call_pause_params.rb +20 -0
  23. data/lib/revox/models/call_pause_response.rb +16 -0
  24. data/lib/revox/models/call_phone_history_params.rb +14 -0
  25. data/lib/revox/models/call_phone_history_response.rb +95 -0
  26. data/lib/revox/models/call_resume_params.rb +20 -0
  27. data/lib/revox/models/call_resume_response.rb +16 -0
  28. data/lib/revox/models/call_retrieve_response.rb +681 -90
  29. data/lib/revox/models/call_search_params.rb +169 -0
  30. data/lib/revox/models/call_search_response.rb +3694 -0
  31. data/lib/revox/models/campaign_create_params.rb +7 -57
  32. data/lib/revox/models/campaign_create_response.rb +108 -119
  33. data/lib/revox/models/campaign_get_rows_response.rb +682 -90
  34. data/lib/revox/models/campaign_list_response.rb +108 -119
  35. data/lib/revox/models/campaign_pause_params.rb +20 -0
  36. data/lib/revox/models/campaign_pause_response.rb +16 -0
  37. data/lib/revox/models/campaign_resume_params.rb +20 -0
  38. data/lib/revox/models/campaign_resume_response.rb +16 -0
  39. data/lib/revox/models/campaign_retrieve_response.rb +108 -119
  40. data/lib/revox/models/campaign_statistics_params.rb +20 -0
  41. data/lib/revox/models/campaign_statistics_response.rb +514 -0
  42. data/lib/revox/models/campaign_update_params.rb +165 -0
  43. data/lib/revox/models/campaign_update_response.rb +2019 -0
  44. data/lib/revox/models/phone_number_delete_params.rb +20 -0
  45. data/lib/revox/models/phone_number_delete_response.rb +16 -0
  46. data/lib/revox/models/phone_number_list_params.rb +14 -0
  47. data/lib/revox/models/phone_number_list_response.rb +1799 -0
  48. data/lib/revox/models/phone_number_update_params.rb +32 -0
  49. data/lib/revox/models/phone_number_update_response.rb +1799 -0
  50. data/lib/revox/models/user_retrieve_params.rb +14 -0
  51. data/lib/revox/models/user_retrieve_response.rb +99 -0
  52. data/lib/revox/models/voice_clone_params.rb +78 -0
  53. data/lib/revox/models/voice_clone_response.rb +40 -0
  54. data/lib/revox/models/voice_delete_params.rb +20 -0
  55. data/lib/revox/models/voice_delete_response.rb +16 -0
  56. data/lib/revox/models/voice_list_response.rb +1 -0
  57. data/lib/revox/models/voice_preview_params.rb +1 -0
  58. data/lib/revox/models/voice_retrieve_params.rb +1 -0
  59. data/lib/revox/models.rb +35 -1
  60. data/lib/revox/resources/assistants.rb +31 -10
  61. data/lib/revox/resources/auth_status.rb +32 -0
  62. data/lib/revox/resources/call.rb +149 -4
  63. data/lib/revox/resources/campaigns.rb +110 -11
  64. data/lib/revox/resources/phone_numbers.rb +74 -0
  65. data/lib/revox/resources/users.rb +17 -3
  66. data/lib/revox/resources/voices.rb +50 -0
  67. data/lib/revox/version.rb +1 -1
  68. data/lib/revox.rb +38 -5
  69. data/rbi/revox/client.rbi +6 -0
  70. data/rbi/revox/models/assistant_clone_params.rbi +33 -0
  71. data/rbi/revox/models/assistant_clone_response.rbi +3351 -0
  72. data/rbi/revox/models/assistant_create_params.rbi +148 -162
  73. data/rbi/revox/models/assistant_create_response.rbi +157 -147
  74. data/rbi/revox/models/assistant_list_response.rbi +157 -147
  75. data/rbi/revox/models/assistant_retrieve_response.rbi +153 -147
  76. data/rbi/revox/models/assistant_update_params.rbi +148 -162
  77. data/rbi/revox/models/assistant_update_response.rbi +157 -147
  78. data/rbi/revox/models/auth_status_retrieve_params.rbi +27 -0
  79. data/rbi/revox/models/auth_status_retrieve_response.rbi +30 -0
  80. data/rbi/revox/models/call_cancel_params.rbi +33 -0
  81. data/rbi/revox/models/call_cancel_response.rbi +23 -0
  82. data/rbi/revox/models/call_create_params.rbi +190 -187
  83. data/rbi/revox/models/call_create_response.rbi +1150 -227
  84. data/rbi/revox/models/call_export_params.rbi +446 -0
  85. data/rbi/revox/models/call_export_response.rbi +26 -0
  86. data/rbi/revox/models/call_pause_params.rbi +31 -0
  87. data/rbi/revox/models/call_pause_response.rbi +23 -0
  88. data/rbi/revox/models/call_phone_history_params.rbi +27 -0
  89. data/rbi/revox/models/call_phone_history_response.rbi +209 -0
  90. data/rbi/revox/models/call_resume_params.rbi +33 -0
  91. data/rbi/revox/models/call_resume_response.rbi +23 -0
  92. data/rbi/revox/models/call_retrieve_response.rbi +1150 -227
  93. data/rbi/revox/models/call_search_params.rbi +281 -0
  94. data/rbi/revox/models/call_search_response.rbi +7504 -0
  95. data/rbi/revox/models/campaign_create_params.rbi +9 -87
  96. data/rbi/revox/models/campaign_create_response.rbi +188 -266
  97. data/rbi/revox/models/campaign_get_rows_response.rbi +1150 -225
  98. data/rbi/revox/models/campaign_list_response.rbi +188 -262
  99. data/rbi/revox/models/campaign_pause_params.rbi +33 -0
  100. data/rbi/revox/models/campaign_pause_response.rbi +23 -0
  101. data/rbi/revox/models/campaign_resume_params.rbi +33 -0
  102. data/rbi/revox/models/campaign_resume_response.rbi +23 -0
  103. data/rbi/revox/models/campaign_retrieve_response.rbi +188 -266
  104. data/rbi/revox/models/campaign_statistics_params.rbi +33 -0
  105. data/rbi/revox/models/campaign_statistics_response.rbi +1069 -0
  106. data/rbi/revox/models/campaign_update_params.rbi +313 -0
  107. data/rbi/revox/models/campaign_update_response.rbi +4092 -0
  108. data/rbi/revox/models/phone_number_delete_params.rbi +33 -0
  109. data/rbi/revox/models/phone_number_delete_response.rbi +26 -0
  110. data/rbi/revox/models/phone_number_list_params.rbi +27 -0
  111. data/rbi/revox/models/phone_number_list_response.rbi +3690 -0
  112. data/rbi/revox/models/phone_number_update_params.rbi +53 -0
  113. data/rbi/revox/models/phone_number_update_response.rbi +3693 -0
  114. data/rbi/revox/models/user_retrieve_params.rbi +27 -0
  115. data/rbi/revox/models/user_retrieve_response.rbi +140 -0
  116. data/rbi/revox/models/voice_clone_params.rbi +141 -0
  117. data/rbi/revox/models/voice_clone_response.rbi +53 -0
  118. data/rbi/revox/models/voice_delete_params.rbi +33 -0
  119. data/rbi/revox/models/voice_delete_response.rbi +23 -0
  120. data/rbi/revox/models/voice_list_response.rbi +5 -0
  121. data/rbi/revox/models/voice_preview_params.rbi +2 -0
  122. data/rbi/revox/models/voice_retrieve_params.rbi +2 -0
  123. data/rbi/revox/models.rbi +35 -1
  124. data/rbi/revox/resources/assistants.rbi +52 -22
  125. data/rbi/revox/resources/auth_status.rbi +21 -0
  126. data/rbi/revox/resources/call.rbi +114 -4
  127. data/rbi/revox/resources/campaigns.rbi +77 -15
  128. data/rbi/revox/resources/phone_numbers.rbi +43 -0
  129. data/rbi/revox/resources/users.rbi +8 -2
  130. data/rbi/revox/resources/voices.rbi +39 -0
  131. data/sig/revox/client.rbs +4 -0
  132. data/sig/revox/models/assistant_clone_params.rbs +20 -0
  133. data/sig/revox/models/assistant_clone_response.rbs +1310 -0
  134. data/sig/revox/models/assistant_create_params.rbs +39 -58
  135. data/sig/revox/models/assistant_create_response.rbs +46 -54
  136. data/sig/revox/models/assistant_list_response.rbs +46 -54
  137. data/sig/revox/models/assistant_retrieve_response.rbs +46 -54
  138. data/sig/revox/models/assistant_update_params.rbs +39 -58
  139. data/sig/revox/models/assistant_update_response.rbs +46 -54
  140. data/sig/revox/models/auth_status_retrieve_params.rbs +15 -0
  141. data/sig/revox/models/auth_status_retrieve_response.rbs +13 -0
  142. data/sig/revox/models/call_cancel_params.rbs +20 -0
  143. data/sig/revox/models/call_cancel_response.rbs +13 -0
  144. data/sig/revox/models/call_create_params.rbs +50 -71
  145. data/sig/revox/models/call_create_response.rbs +473 -77
  146. data/sig/revox/models/call_export_params.rbs +230 -0
  147. data/sig/revox/models/call_export_response.rbs +15 -0
  148. data/sig/revox/models/call_pause_params.rbs +20 -0
  149. data/sig/revox/models/call_pause_response.rbs +13 -0
  150. data/sig/revox/models/call_phone_history_params.rbs +15 -0
  151. data/sig/revox/models/call_phone_history_response.rbs +93 -0
  152. data/sig/revox/models/call_resume_params.rbs +20 -0
  153. data/sig/revox/models/call_resume_response.rbs +13 -0
  154. data/sig/revox/models/call_retrieve_response.rbs +473 -77
  155. data/sig/revox/models/call_search_params.rbs +194 -0
  156. data/sig/revox/models/call_search_response.rbs +3045 -0
  157. data/sig/revox/models/campaign_create_params.rbs +5 -50
  158. data/sig/revox/models/campaign_create_response.rbs +62 -98
  159. data/sig/revox/models/campaign_get_rows_response.rbs +472 -73
  160. data/sig/revox/models/campaign_list_response.rbs +62 -98
  161. data/sig/revox/models/campaign_pause_params.rbs +20 -0
  162. data/sig/revox/models/campaign_pause_response.rbs +13 -0
  163. data/sig/revox/models/campaign_resume_params.rbs +20 -0
  164. data/sig/revox/models/campaign_resume_response.rbs +13 -0
  165. data/sig/revox/models/campaign_retrieve_response.rbs +62 -98
  166. data/sig/revox/models/campaign_statistics_params.rbs +20 -0
  167. data/sig/revox/models/campaign_statistics_response.rbs +489 -0
  168. data/sig/revox/models/campaign_update_params.rbs +135 -0
  169. data/sig/revox/models/campaign_update_response.rbs +1658 -0
  170. data/sig/revox/models/phone_number_delete_params.rbs +20 -0
  171. data/sig/revox/models/phone_number_delete_response.rbs +13 -0
  172. data/sig/revox/models/phone_number_list_params.rbs +15 -0
  173. data/sig/revox/models/phone_number_list_response.rbs +1454 -0
  174. data/sig/revox/models/phone_number_update_params.rbs +32 -0
  175. data/sig/revox/models/phone_number_update_response.rbs +1452 -0
  176. data/sig/revox/models/user_retrieve_params.rbs +14 -0
  177. data/sig/revox/models/user_retrieve_response.rbs +71 -0
  178. data/sig/revox/models/voice_clone_params.rbs +79 -0
  179. data/sig/revox/models/voice_clone_response.rbs +40 -0
  180. data/sig/revox/models/voice_delete_params.rbs +20 -0
  181. data/sig/revox/models/voice_delete_response.rbs +13 -0
  182. data/sig/revox/models/voice_list_response.rbs +2 -1
  183. data/sig/revox/models/voice_preview_params.rbs +2 -1
  184. data/sig/revox/models/voice_retrieve_params.rbs +2 -1
  185. data/sig/revox/models.rbs +35 -1
  186. data/sig/revox/resources/assistants.rbs +9 -4
  187. data/sig/revox/resources/auth_status.rbs +11 -0
  188. data/sig/revox/resources/call.rbs +46 -1
  189. data/sig/revox/resources/campaigns.rbs +24 -3
  190. data/sig/revox/resources/phone_numbers.rbs +23 -0
  191. data/sig/revox/resources/users.rbs +3 -1
  192. data/sig/revox/resources/voices.rbs +13 -0
  193. metadata +116 -17
  194. data/lib/revox/models/users/me_retrieve_params.rb +0 -16
  195. data/lib/revox/models/users/me_retrieve_response.rb +0 -101
  196. data/lib/revox/models/users/me_update_params.rb +0 -22
  197. data/lib/revox/models/users/me_update_response.rb +0 -101
  198. data/lib/revox/resources/users/me.rb +0 -55
  199. data/rbi/revox/models/users/me_retrieve_params.rbi +0 -29
  200. data/rbi/revox/models/users/me_retrieve_response.rbi +0 -149
  201. data/rbi/revox/models/users/me_update_params.rbi +0 -43
  202. data/rbi/revox/models/users/me_update_response.rbi +0 -149
  203. data/rbi/revox/resources/users/me.rbi +0 -33
  204. data/sig/revox/models/users/me_retrieve_params.rbs +0 -16
  205. data/sig/revox/models/users/me_retrieve_response.rbs +0 -75
  206. data/sig/revox/models/users/me_update_params.rbs +0 -28
  207. data/sig/revox/models/users/me_update_response.rbs +0 -75
  208. data/sig/revox/resources/users/me.rbs +0 -18
@@ -137,14 +137,6 @@ module Revox
137
137
  sig { returns(T.nilable(String)) }
138
138
  attr_accessor :email_notification_address
139
139
 
140
- # The language used for the notification email content. One of "en" or "fr".
141
- sig do
142
- returns(
143
- Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
144
- )
145
- end
146
- attr_accessor :email_notification_language
147
-
148
140
  # Which call outcomes trigger an email notification. E.g. ["interested",
149
141
  # "completed", "none"]. Use "none" when outcome is null.
150
142
  sig do
@@ -180,8 +172,8 @@ module Revox
180
172
  sig { returns(T.nilable(String)) }
181
173
  attr_accessor :from_phone_number
182
174
 
183
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
184
- # not configured.
175
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
176
+ # transfer is not configured.
185
177
  sig do
186
178
  returns(
187
179
  T.nilable(
@@ -242,6 +234,11 @@ module Revox
242
234
  end
243
235
  attr_writer :position
244
236
 
237
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
238
+ # variables. Null when no lookup is configured.
239
+ sig { returns(T.nilable(String)) }
240
+ attr_accessor :precall_lookup_url
241
+
245
242
  sig { returns(String) }
246
243
  attr_accessor :prompt
247
244
 
@@ -361,9 +358,18 @@ module Revox
361
358
  sig { returns(Float) }
362
359
  attr_accessor :thinking_sound_volume
363
360
 
364
- # Phone number to transfer calls to when users request to speak to a human agent.
365
- sig { returns(T.nilable(String)) }
366
- attr_accessor :transfer_phone_number
361
+ # Where calls can be transferred to when users ask to speak to a human. Null or
362
+ # empty when transfer is not configured.
363
+ sig do
364
+ returns(
365
+ T.nilable(
366
+ T::Array[
367
+ Revox::Models::AssistantListResponse::Assistant::TransferDestination
368
+ ]
369
+ )
370
+ )
371
+ end
372
+ attr_accessor :transfer_destinations
367
373
 
368
374
  sig do
369
375
  returns(
@@ -467,6 +473,12 @@ module Revox
467
473
  end
468
474
  attr_writer :faq_items
469
475
 
476
+ sig { returns(T.nilable(T::Boolean)) }
477
+ attr_reader :is_inbound_receptionist
478
+
479
+ sig { params(is_inbound_receptionist: T::Boolean).void }
480
+ attr_writer :is_inbound_receptionist
481
+
470
482
  sig { returns(T.nilable(T::Boolean)) }
471
483
  attr_reader :is_realestate_assistant
472
484
 
@@ -511,8 +523,6 @@ module Revox
511
523
  ]
512
524
  ),
513
525
  email_notification_address: T.nilable(String),
514
- email_notification_language:
515
- Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::OrSymbol,
516
526
  email_notification_outcomes:
517
527
  T.nilable(
518
528
  T::Array[
@@ -546,6 +556,7 @@ module Revox
546
556
  T.nilable(
547
557
  Revox::Models::AssistantListResponse::Assistant::Position::OrHash
548
558
  ),
559
+ precall_lookup_url: T.nilable(String),
549
560
  prompt: String,
550
561
  prompt_flow:
551
562
  T.nilable(
@@ -576,7 +587,12 @@ module Revox
576
587
  ),
577
588
  thinking_sound_probability: Float,
578
589
  thinking_sound_volume: Float,
579
- transfer_phone_number: T.nilable(String),
590
+ transfer_destinations:
591
+ T.nilable(
592
+ T::Array[
593
+ Revox::Models::AssistantListResponse::Assistant::TransferDestination::OrHash
594
+ ]
595
+ ),
580
596
  type:
581
597
  Revox::Models::AssistantListResponse::Assistant::Type::OrSymbol,
582
598
  updated_at: T.anything,
@@ -600,6 +616,7 @@ module Revox
600
616
  T::Array[
601
617
  Revox::Models::AssistantListResponse::Assistant::FaqItem::OrHash
602
618
  ],
619
+ is_inbound_receptionist: T::Boolean,
603
620
  is_realestate_assistant: T::Boolean,
604
621
  pending_faq_count: Float
605
622
  ).returns(T.attached_class)
@@ -628,8 +645,6 @@ module Revox
628
645
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
629
646
  # bob@y.com").
630
647
  email_notification_address:,
631
- # The language used for the notification email content. One of "en" or "fr".
632
- email_notification_language:,
633
648
  # Which call outcomes trigger an email notification. E.g. ["interested",
634
649
  # "completed", "none"]. Use "none" when outcome is null.
635
650
  email_notification_outcomes:,
@@ -641,8 +656,8 @@ module Revox
641
656
  # Override the default outbound phone number for calls placed with this assistant.
642
657
  # When null, the organization's default phone number is used.
643
658
  from_phone_number:,
644
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
645
- # not configured.
659
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
660
+ # transfer is not configured.
646
661
  human_transfer_mode:,
647
662
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
648
663
  # skip turns to navigate phone menus.
@@ -661,6 +676,9 @@ module Revox
661
676
  name:,
662
677
  organization_id:,
663
678
  position:,
679
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
680
+ # variables. Null when no lookup is configured.
681
+ precall_lookup_url:,
664
682
  prompt:,
665
683
  prompt_flow:,
666
684
  slack:,
@@ -692,8 +710,9 @@ module Revox
692
710
  thinking_sound_probability:,
693
711
  # Volume of the thinking sound (0 = silent, 1 = max).
694
712
  thinking_sound_volume:,
695
- # Phone number to transfer calls to when users request to speak to a human agent.
696
- transfer_phone_number:,
713
+ # Where calls can be transferred to when users ask to speak to a human. Null or
714
+ # empty when transfer is not configured.
715
+ transfer_destinations:,
697
716
  type:,
698
717
  updated_at:,
699
718
  voice:,
@@ -712,6 +731,7 @@ module Revox
712
731
  # The user who created the assistant.
713
732
  created_by: nil,
714
733
  faq_items: nil,
734
+ is_inbound_receptionist: nil,
715
735
  is_realestate_assistant: nil,
716
736
  pending_faq_count: nil
717
737
  )
@@ -750,8 +770,6 @@ module Revox
750
770
  ]
751
771
  ),
752
772
  email_notification_address: T.nilable(String),
753
- email_notification_language:
754
- Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::TaggedSymbol,
755
773
  email_notification_outcomes:
756
774
  T.nilable(
757
775
  T::Array[
@@ -780,6 +798,7 @@ module Revox
780
798
  T.nilable(
781
799
  Revox::Models::AssistantListResponse::Assistant::Position
782
800
  ),
801
+ precall_lookup_url: T.nilable(String),
783
802
  prompt: String,
784
803
  prompt_flow:
785
804
  T.nilable(
@@ -810,7 +829,12 @@ module Revox
810
829
  ),
811
830
  thinking_sound_probability: Float,
812
831
  thinking_sound_volume: Float,
813
- transfer_phone_number: T.nilable(String),
832
+ transfer_destinations:
833
+ T.nilable(
834
+ T::Array[
835
+ Revox::Models::AssistantListResponse::Assistant::TransferDestination
836
+ ]
837
+ ),
814
838
  type:
815
839
  Revox::Models::AssistantListResponse::Assistant::Type::TaggedSymbol,
816
840
  updated_at: T.anything,
@@ -834,6 +858,7 @@ module Revox
834
858
  T::Array[
835
859
  Revox::Models::AssistantListResponse::Assistant::FaqItem
836
860
  ],
861
+ is_inbound_receptionist: T::Boolean,
837
862
  is_realestate_assistant: T::Boolean,
838
863
  pending_faq_count: Float
839
864
  }
@@ -874,21 +899,6 @@ module Revox
874
899
  :requested_callback_later,
875
900
  Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
876
901
  )
877
- REQUESTED_CALLBACK_NEW_NUMBER =
878
- T.let(
879
- :requested_callback_new_number,
880
- Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
881
- )
882
- DO_NOT_CONTACT =
883
- T.let(
884
- :do_not_contact,
885
- Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
886
- )
887
- AI_AVERSE =
888
- T.let(
889
- :ai_averse,
890
- Revox::Models::AssistantListResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
891
- )
892
902
  NONE =
893
903
  T.let(
894
904
  :none,
@@ -1157,7 +1167,8 @@ module Revox
1157
1167
  sig { returns(String) }
1158
1168
  attr_accessor :calling_window_start_time
1159
1169
 
1160
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1170
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1171
+ # allows. Default: 7200 (2 hours).
1161
1172
  sig { returns(Integer) }
1162
1173
  attr_accessor :retry_delay_seconds
1163
1174
 
@@ -1177,7 +1188,8 @@ module Revox
1177
1188
  # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
1178
1189
  # Examples: '09:00', '10am'. Default: '10:00'.
1179
1190
  calling_window_start_time:,
1180
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1191
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1192
+ # allows. Default: 7200 (2 hours).
1181
1193
  retry_delay_seconds:
1182
1194
  )
1183
1195
  end
@@ -1560,41 +1572,6 @@ module Revox
1560
1572
  end
1561
1573
  end
1562
1574
 
1563
- # The language used for the notification email content. One of "en" or "fr".
1564
- module EmailNotificationLanguage
1565
- extend Revox::Internal::Type::Enum
1566
-
1567
- TaggedSymbol =
1568
- T.type_alias do
1569
- T.all(
1570
- Symbol,
1571
- Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage
1572
- )
1573
- end
1574
- OrSymbol = T.type_alias { T.any(Symbol, String) }
1575
-
1576
- EN =
1577
- T.let(
1578
- :en,
1579
- Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1580
- )
1581
- FR =
1582
- T.let(
1583
- :fr,
1584
- Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1585
- )
1586
-
1587
- sig do
1588
- override.returns(
1589
- T::Array[
1590
- Revox::Models::AssistantListResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1591
- ]
1592
- )
1593
- end
1594
- def self.values
1595
- end
1596
- end
1597
-
1598
1575
  module EmailNotificationOutcome
1599
1576
  extend Revox::Internal::Type::Enum
1600
1577
 
@@ -1627,21 +1604,6 @@ module Revox
1627
1604
  :requested_callback_later,
1628
1605
  Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1629
1606
  )
1630
- REQUESTED_CALLBACK_NEW_NUMBER =
1631
- T.let(
1632
- :requested_callback_new_number,
1633
- Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1634
- )
1635
- DO_NOT_CONTACT =
1636
- T.let(
1637
- :do_not_contact,
1638
- Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1639
- )
1640
- AI_AVERSE =
1641
- T.let(
1642
- :ai_averse,
1643
- Revox::Models::AssistantListResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1644
- )
1645
1607
  NONE =
1646
1608
  T.let(
1647
1609
  :none,
@@ -1698,8 +1660,8 @@ module Revox
1698
1660
  end
1699
1661
  end
1700
1662
 
1701
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1702
- # not configured.
1663
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
1664
+ # transfer is not configured.
1703
1665
  module HumanTransferMode
1704
1666
  extend Revox::Internal::Type::Enum
1705
1667
 
@@ -2297,9 +2259,17 @@ module Revox
2297
2259
  )
2298
2260
  end
2299
2261
 
2300
- # The Slack channel ID where the notification will be posted.
2301
- sig { returns(String) }
2302
- attr_accessor :channel_id
2262
+ # The Slack channels eligible to receive the notification. When more than one is
2263
+ # configured, the agent prompt may define routing rules to narrow it down per
2264
+ # call; with no such rules every channel here is notified.
2265
+ sig do
2266
+ returns(
2267
+ T::Array[
2268
+ Revox::Models::AssistantListResponse::Assistant::Slack::Channel
2269
+ ]
2270
+ )
2271
+ end
2272
+ attr_accessor :channels
2303
2273
 
2304
2274
  # The Nango connection ID linking the org's Slack workspace to Revox.
2305
2275
  sig { returns(String) }
@@ -2316,45 +2286,43 @@ module Revox
2316
2286
  end
2317
2287
  attr_accessor :outcomes
2318
2288
 
2319
- # Human-readable Slack channel name, cached for display in the UI.
2320
- sig { returns(T.nilable(String)) }
2321
- attr_accessor :channel_name
2322
-
2323
2289
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2324
2290
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2325
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2326
- # prompt_variables and structured_output keys. When null/empty a default template
2327
- # is used.
2291
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2292
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2293
+ # null/empty a default template is used.
2328
2294
  sig { returns(T.nilable(String)) }
2329
2295
  attr_accessor :template
2330
2296
 
2331
2297
  sig do
2332
2298
  params(
2333
- channel_id: String,
2299
+ channels:
2300
+ T::Array[
2301
+ Revox::Models::AssistantListResponse::Assistant::Slack::Channel::OrHash
2302
+ ],
2334
2303
  connection_id: String,
2335
2304
  outcomes:
2336
2305
  T::Array[
2337
2306
  Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::OrSymbol
2338
2307
  ],
2339
- channel_name: T.nilable(String),
2340
2308
  template: T.nilable(String)
2341
2309
  ).returns(T.attached_class)
2342
2310
  end
2343
2311
  def self.new(
2344
- # The Slack channel ID where the notification will be posted.
2345
- channel_id:,
2312
+ # The Slack channels eligible to receive the notification. When more than one is
2313
+ # configured, the agent prompt may define routing rules to narrow it down per
2314
+ # call; with no such rules every channel here is notified.
2315
+ channels:,
2346
2316
  # The Nango connection ID linking the org's Slack workspace to Revox.
2347
2317
  connection_id:,
2348
2318
  # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
2349
2319
  # Use 'none' to notify when outcome is null.
2350
2320
  outcomes:,
2351
- # Human-readable Slack channel name, cached for display in the UI.
2352
- channel_name: nil,
2353
2321
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2354
2322
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2355
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2356
- # prompt_variables and structured_output keys. When null/empty a default template
2357
- # is used.
2323
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2324
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2325
+ # null/empty a default template is used.
2358
2326
  template: nil
2359
2327
  )
2360
2328
  end
@@ -2362,13 +2330,15 @@ module Revox
2362
2330
  sig do
2363
2331
  override.returns(
2364
2332
  {
2365
- channel_id: String,
2333
+ channels:
2334
+ T::Array[
2335
+ Revox::Models::AssistantListResponse::Assistant::Slack::Channel
2336
+ ],
2366
2337
  connection_id: String,
2367
2338
  outcomes:
2368
2339
  T::Array[
2369
2340
  Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
2370
2341
  ],
2371
- channel_name: T.nilable(String),
2372
2342
  template: T.nilable(String)
2373
2343
  }
2374
2344
  )
@@ -2376,6 +2346,43 @@ module Revox
2376
2346
  def to_hash
2377
2347
  end
2378
2348
 
2349
+ class Channel < Revox::Internal::Type::BaseModel
2350
+ OrHash =
2351
+ T.type_alias do
2352
+ T.any(
2353
+ Revox::Models::AssistantListResponse::Assistant::Slack::Channel,
2354
+ Revox::Internal::AnyHash
2355
+ )
2356
+ end
2357
+
2358
+ # The Slack channel ID (e.g. 'C01234567').
2359
+ sig { returns(String) }
2360
+ attr_accessor :id
2361
+
2362
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2363
+ # LLM when the agent prompt routes by channel name.
2364
+ sig { returns(T.nilable(String)) }
2365
+ attr_accessor :name
2366
+
2367
+ sig do
2368
+ params(id: String, name: T.nilable(String)).returns(
2369
+ T.attached_class
2370
+ )
2371
+ end
2372
+ def self.new(
2373
+ # The Slack channel ID (e.g. 'C01234567').
2374
+ id:,
2375
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2376
+ # LLM when the agent prompt routes by channel name.
2377
+ name: nil
2378
+ )
2379
+ end
2380
+
2381
+ sig { override.returns({ id: String, name: T.nilable(String) }) }
2382
+ def to_hash
2383
+ end
2384
+ end
2385
+
2379
2386
  module Outcome
2380
2387
  extend Revox::Internal::Type::Enum
2381
2388
 
@@ -2408,21 +2415,6 @@ module Revox
2408
2415
  :requested_callback_later,
2409
2416
  Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
2410
2417
  )
2411
- REQUESTED_CALLBACK_NEW_NUMBER =
2412
- T.let(
2413
- :requested_callback_new_number,
2414
- Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
2415
- )
2416
- DO_NOT_CONTACT =
2417
- T.let(
2418
- :do_not_contact,
2419
- Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
2420
- )
2421
- AI_AVERSE =
2422
- T.let(
2423
- :ai_averse,
2424
- Revox::Models::AssistantListResponse::Assistant::Slack::Outcome::TaggedSymbol
2425
- )
2426
2418
  NONE =
2427
2419
  T.let(
2428
2420
  :none,
@@ -2735,6 +2727,34 @@ module Revox
2735
2727
  end
2736
2728
  end
2737
2729
 
2730
+ class TransferDestination < Revox::Internal::Type::BaseModel
2731
+ OrHash =
2732
+ T.type_alias do
2733
+ T.any(
2734
+ Revox::Models::AssistantListResponse::Assistant::TransferDestination,
2735
+ Revox::Internal::AnyHash
2736
+ )
2737
+ end
2738
+
2739
+ sig { returns(String) }
2740
+ attr_accessor :label
2741
+
2742
+ sig { returns(String) }
2743
+ attr_accessor :phone_number
2744
+
2745
+ sig do
2746
+ params(label: String, phone_number: String).returns(
2747
+ T.attached_class
2748
+ )
2749
+ end
2750
+ def self.new(label:, phone_number:)
2751
+ end
2752
+
2753
+ sig { override.returns({ label: String, phone_number: String }) }
2754
+ def to_hash
2755
+ end
2756
+ end
2757
+
2738
2758
  module Type
2739
2759
  extend Revox::Internal::Type::Enum
2740
2760
 
@@ -2815,7 +2835,7 @@ module Revox
2815
2835
  attr_writer :model
2816
2836
 
2817
2837
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
2818
- # 0.7–1.2. Default is 1.0.
2838
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
2819
2839
  sig { returns(T.nilable(Float)) }
2820
2840
  attr_reader :speed
2821
2841
 
@@ -2850,7 +2870,7 @@ module Revox
2850
2870
  # for other providers.
2851
2871
  model: nil,
2852
2872
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
2853
- # 0.7–1.2. Default is 1.0.
2873
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
2854
2874
  speed: nil,
2855
2875
  # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
2856
2876
  # providers.
@@ -2897,6 +2917,11 @@ module Revox
2897
2917
  :elevenlabs,
2898
2918
  Revox::Models::AssistantListResponse::Assistant::Voice::Provider::TaggedSymbol
2899
2919
  )
2920
+ GRADIUM =
2921
+ T.let(
2922
+ :gradium,
2923
+ Revox::Models::AssistantListResponse::Assistant::Voice::Provider::TaggedSymbol
2924
+ )
2900
2925
 
2901
2926
  sig do
2902
2927
  override.returns(
@@ -3127,21 +3152,6 @@ module Revox
3127
3152
  :requested_callback_later,
3128
3153
  Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
3129
3154
  )
3130
- REQUESTED_CALLBACK_NEW_NUMBER =
3131
- T.let(
3132
- :requested_callback_new_number,
3133
- Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
3134
- )
3135
- DO_NOT_CONTACT =
3136
- T.let(
3137
- :do_not_contact,
3138
- Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
3139
- )
3140
- AI_AVERSE =
3141
- T.let(
3142
- :ai_averse,
3143
- Revox::Models::AssistantListResponse::Assistant::Zoho::Outcome::TaggedSymbol
3144
- )
3145
3155
  NONE =
3146
3156
  T.let(
3147
3157
  :none,