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
@@ -142,14 +142,6 @@ module Revox
142
142
  sig { returns(T.nilable(String)) }
143
143
  attr_accessor :email_notification_address
144
144
 
145
- # The language used for the notification email content. One of "en" or "fr".
146
- sig do
147
- returns(
148
- Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
149
- )
150
- end
151
- attr_accessor :email_notification_language
152
-
153
145
  # Which call outcomes trigger an email notification. E.g. ["interested",
154
146
  # "completed", "none"]. Use "none" when outcome is null.
155
147
  sig do
@@ -185,8 +177,8 @@ module Revox
185
177
  sig { returns(T.nilable(String)) }
186
178
  attr_accessor :from_phone_number
187
179
 
188
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
189
- # not configured.
180
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
181
+ # transfer is not configured.
190
182
  sig do
191
183
  returns(
192
184
  T.nilable(
@@ -249,6 +241,11 @@ module Revox
249
241
  end
250
242
  attr_writer :position
251
243
 
244
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
245
+ # variables. Null when no lookup is configured.
246
+ sig { returns(T.nilable(String)) }
247
+ attr_accessor :precall_lookup_url
248
+
252
249
  sig { returns(String) }
253
250
  attr_accessor :prompt
254
251
 
@@ -368,9 +365,18 @@ module Revox
368
365
  sig { returns(Float) }
369
366
  attr_accessor :thinking_sound_volume
370
367
 
371
- # Phone number to transfer calls to when users request to speak to a human agent.
372
- sig { returns(T.nilable(String)) }
373
- attr_accessor :transfer_phone_number
368
+ # Where calls can be transferred to when users ask to speak to a human. Null or
369
+ # empty when transfer is not configured.
370
+ sig do
371
+ returns(
372
+ T.nilable(
373
+ T::Array[
374
+ Revox::Models::AssistantCloneResponse::Assistant::TransferDestination
375
+ ]
376
+ )
377
+ )
378
+ end
379
+ attr_accessor :transfer_destinations
374
380
 
375
381
  sig do
376
382
  returns(
@@ -476,6 +482,12 @@ module Revox
476
482
  end
477
483
  attr_writer :faq_items
478
484
 
485
+ sig { returns(T.nilable(T::Boolean)) }
486
+ attr_reader :is_inbound_receptionist
487
+
488
+ sig { params(is_inbound_receptionist: T::Boolean).void }
489
+ attr_writer :is_inbound_receptionist
490
+
479
491
  sig { returns(T.nilable(T::Boolean)) }
480
492
  attr_reader :is_realestate_assistant
481
493
 
@@ -520,8 +532,6 @@ module Revox
520
532
  ]
521
533
  ),
522
534
  email_notification_address: T.nilable(String),
523
- email_notification_language:
524
- Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage::OrSymbol,
525
535
  email_notification_outcomes:
526
536
  T.nilable(
527
537
  T::Array[
@@ -555,6 +565,7 @@ module Revox
555
565
  T.nilable(
556
566
  Revox::Models::AssistantCloneResponse::Assistant::Position::OrHash
557
567
  ),
568
+ precall_lookup_url: T.nilable(String),
558
569
  prompt: String,
559
570
  prompt_flow:
560
571
  T.nilable(
@@ -585,7 +596,12 @@ module Revox
585
596
  ),
586
597
  thinking_sound_probability: Float,
587
598
  thinking_sound_volume: Float,
588
- transfer_phone_number: T.nilable(String),
599
+ transfer_destinations:
600
+ T.nilable(
601
+ T::Array[
602
+ Revox::Models::AssistantCloneResponse::Assistant::TransferDestination::OrHash
603
+ ]
604
+ ),
589
605
  type:
590
606
  Revox::Models::AssistantCloneResponse::Assistant::Type::OrSymbol,
591
607
  updated_at: T.anything,
@@ -609,6 +625,7 @@ module Revox
609
625
  T::Array[
610
626
  Revox::Models::AssistantCloneResponse::Assistant::FaqItem::OrHash
611
627
  ],
628
+ is_inbound_receptionist: T::Boolean,
612
629
  is_realestate_assistant: T::Boolean,
613
630
  pending_faq_count: Float
614
631
  ).returns(T.attached_class)
@@ -637,8 +654,6 @@ module Revox
637
654
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
638
655
  # bob@y.com").
639
656
  email_notification_address:,
640
- # The language used for the notification email content. One of "en" or "fr".
641
- email_notification_language:,
642
657
  # Which call outcomes trigger an email notification. E.g. ["interested",
643
658
  # "completed", "none"]. Use "none" when outcome is null.
644
659
  email_notification_outcomes:,
@@ -650,8 +665,8 @@ module Revox
650
665
  # Override the default outbound phone number for calls placed with this assistant.
651
666
  # When null, the organization's default phone number is used.
652
667
  from_phone_number:,
653
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
654
- # not configured.
668
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
669
+ # transfer is not configured.
655
670
  human_transfer_mode:,
656
671
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
657
672
  # skip turns to navigate phone menus.
@@ -670,6 +685,9 @@ module Revox
670
685
  name:,
671
686
  organization_id:,
672
687
  position:,
688
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
689
+ # variables. Null when no lookup is configured.
690
+ precall_lookup_url:,
673
691
  prompt:,
674
692
  prompt_flow:,
675
693
  slack:,
@@ -701,8 +719,9 @@ module Revox
701
719
  thinking_sound_probability:,
702
720
  # Volume of the thinking sound (0 = silent, 1 = max).
703
721
  thinking_sound_volume:,
704
- # Phone number to transfer calls to when users request to speak to a human agent.
705
- transfer_phone_number:,
722
+ # Where calls can be transferred to when users ask to speak to a human. Null or
723
+ # empty when transfer is not configured.
724
+ transfer_destinations:,
706
725
  type:,
707
726
  updated_at:,
708
727
  voice:,
@@ -721,6 +740,7 @@ module Revox
721
740
  # The user who created the assistant.
722
741
  created_by: nil,
723
742
  faq_items: nil,
743
+ is_inbound_receptionist: nil,
724
744
  is_realestate_assistant: nil,
725
745
  pending_faq_count: nil
726
746
  )
@@ -759,8 +779,6 @@ module Revox
759
779
  ]
760
780
  ),
761
781
  email_notification_address: T.nilable(String),
762
- email_notification_language:
763
- Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage::TaggedSymbol,
764
782
  email_notification_outcomes:
765
783
  T.nilable(
766
784
  T::Array[
@@ -789,6 +807,7 @@ module Revox
789
807
  T.nilable(
790
808
  Revox::Models::AssistantCloneResponse::Assistant::Position
791
809
  ),
810
+ precall_lookup_url: T.nilable(String),
792
811
  prompt: String,
793
812
  prompt_flow:
794
813
  T.nilable(
@@ -819,7 +838,12 @@ module Revox
819
838
  ),
820
839
  thinking_sound_probability: Float,
821
840
  thinking_sound_volume: Float,
822
- transfer_phone_number: T.nilable(String),
841
+ transfer_destinations:
842
+ T.nilable(
843
+ T::Array[
844
+ Revox::Models::AssistantCloneResponse::Assistant::TransferDestination
845
+ ]
846
+ ),
823
847
  type:
824
848
  Revox::Models::AssistantCloneResponse::Assistant::Type::TaggedSymbol,
825
849
  updated_at: T.anything,
@@ -843,6 +867,7 @@ module Revox
843
867
  T::Array[
844
868
  Revox::Models::AssistantCloneResponse::Assistant::FaqItem
845
869
  ],
870
+ is_inbound_receptionist: T::Boolean,
846
871
  is_realestate_assistant: T::Boolean,
847
872
  pending_faq_count: Float
848
873
  }
@@ -883,21 +908,6 @@ module Revox
883
908
  :requested_callback_later,
884
909
  Revox::Models::AssistantCloneResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
885
910
  )
886
- REQUESTED_CALLBACK_NEW_NUMBER =
887
- T.let(
888
- :requested_callback_new_number,
889
- Revox::Models::AssistantCloneResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
890
- )
891
- DO_NOT_CONTACT =
892
- T.let(
893
- :do_not_contact,
894
- Revox::Models::AssistantCloneResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
895
- )
896
- AI_AVERSE =
897
- T.let(
898
- :ai_averse,
899
- Revox::Models::AssistantCloneResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
900
- )
901
911
  NONE =
902
912
  T.let(
903
913
  :none,
@@ -1166,7 +1176,8 @@ module Revox
1166
1176
  sig { returns(String) }
1167
1177
  attr_accessor :calling_window_start_time
1168
1178
 
1169
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1179
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1180
+ # allows. Default: 7200 (2 hours).
1170
1181
  sig { returns(Integer) }
1171
1182
  attr_accessor :retry_delay_seconds
1172
1183
 
@@ -1186,7 +1197,8 @@ module Revox
1186
1197
  # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
1187
1198
  # Examples: '09:00', '10am'. Default: '10:00'.
1188
1199
  calling_window_start_time:,
1189
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1200
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1201
+ # allows. Default: 7200 (2 hours).
1190
1202
  retry_delay_seconds:
1191
1203
  )
1192
1204
  end
@@ -1569,41 +1581,6 @@ module Revox
1569
1581
  end
1570
1582
  end
1571
1583
 
1572
- # The language used for the notification email content. One of "en" or "fr".
1573
- module EmailNotificationLanguage
1574
- extend Revox::Internal::Type::Enum
1575
-
1576
- TaggedSymbol =
1577
- T.type_alias do
1578
- T.all(
1579
- Symbol,
1580
- Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage
1581
- )
1582
- end
1583
- OrSymbol = T.type_alias { T.any(Symbol, String) }
1584
-
1585
- EN =
1586
- T.let(
1587
- :en,
1588
- Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1589
- )
1590
- FR =
1591
- T.let(
1592
- :fr,
1593
- Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1594
- )
1595
-
1596
- sig do
1597
- override.returns(
1598
- T::Array[
1599
- Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1600
- ]
1601
- )
1602
- end
1603
- def self.values
1604
- end
1605
- end
1606
-
1607
1584
  module EmailNotificationOutcome
1608
1585
  extend Revox::Internal::Type::Enum
1609
1586
 
@@ -1636,21 +1613,6 @@ module Revox
1636
1613
  :requested_callback_later,
1637
1614
  Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1638
1615
  )
1639
- REQUESTED_CALLBACK_NEW_NUMBER =
1640
- T.let(
1641
- :requested_callback_new_number,
1642
- Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1643
- )
1644
- DO_NOT_CONTACT =
1645
- T.let(
1646
- :do_not_contact,
1647
- Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1648
- )
1649
- AI_AVERSE =
1650
- T.let(
1651
- :ai_averse,
1652
- Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1653
- )
1654
1616
  NONE =
1655
1617
  T.let(
1656
1618
  :none,
@@ -1707,8 +1669,8 @@ module Revox
1707
1669
  end
1708
1670
  end
1709
1671
 
1710
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1711
- # not configured.
1672
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
1673
+ # transfer is not configured.
1712
1674
  module HumanTransferMode
1713
1675
  extend Revox::Internal::Type::Enum
1714
1676
 
@@ -2306,9 +2268,17 @@ module Revox
2306
2268
  )
2307
2269
  end
2308
2270
 
2309
- # The Slack channel ID where the notification will be posted.
2310
- sig { returns(String) }
2311
- attr_accessor :channel_id
2271
+ # The Slack channels eligible to receive the notification. When more than one is
2272
+ # configured, the agent prompt may define routing rules to narrow it down per
2273
+ # call; with no such rules every channel here is notified.
2274
+ sig do
2275
+ returns(
2276
+ T::Array[
2277
+ Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel
2278
+ ]
2279
+ )
2280
+ end
2281
+ attr_accessor :channels
2312
2282
 
2313
2283
  # The Nango connection ID linking the org's Slack workspace to Revox.
2314
2284
  sig { returns(String) }
@@ -2325,45 +2295,43 @@ module Revox
2325
2295
  end
2326
2296
  attr_accessor :outcomes
2327
2297
 
2328
- # Human-readable Slack channel name, cached for display in the UI.
2329
- sig { returns(T.nilable(String)) }
2330
- attr_accessor :channel_name
2331
-
2332
2298
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2333
2299
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2334
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2335
- # prompt_variables and structured_output keys. When null/empty a default template
2336
- # is used.
2300
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2301
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2302
+ # null/empty a default template is used.
2337
2303
  sig { returns(T.nilable(String)) }
2338
2304
  attr_accessor :template
2339
2305
 
2340
2306
  sig do
2341
2307
  params(
2342
- channel_id: String,
2308
+ channels:
2309
+ T::Array[
2310
+ Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel::OrHash
2311
+ ],
2343
2312
  connection_id: String,
2344
2313
  outcomes:
2345
2314
  T::Array[
2346
2315
  Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome::OrSymbol
2347
2316
  ],
2348
- channel_name: T.nilable(String),
2349
2317
  template: T.nilable(String)
2350
2318
  ).returns(T.attached_class)
2351
2319
  end
2352
2320
  def self.new(
2353
- # The Slack channel ID where the notification will be posted.
2354
- channel_id:,
2321
+ # The Slack channels eligible to receive the notification. When more than one is
2322
+ # configured, the agent prompt may define routing rules to narrow it down per
2323
+ # call; with no such rules every channel here is notified.
2324
+ channels:,
2355
2325
  # The Nango connection ID linking the org's Slack workspace to Revox.
2356
2326
  connection_id:,
2357
2327
  # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
2358
2328
  # Use 'none' to notify when outcome is null.
2359
2329
  outcomes:,
2360
- # Human-readable Slack channel name, cached for display in the UI.
2361
- channel_name: nil,
2362
2330
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2363
2331
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2364
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2365
- # prompt_variables and structured_output keys. When null/empty a default template
2366
- # is used.
2332
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2333
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2334
+ # null/empty a default template is used.
2367
2335
  template: nil
2368
2336
  )
2369
2337
  end
@@ -2371,13 +2339,15 @@ module Revox
2371
2339
  sig do
2372
2340
  override.returns(
2373
2341
  {
2374
- channel_id: String,
2342
+ channels:
2343
+ T::Array[
2344
+ Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel
2345
+ ],
2375
2346
  connection_id: String,
2376
2347
  outcomes:
2377
2348
  T::Array[
2378
2349
  Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome::TaggedSymbol
2379
2350
  ],
2380
- channel_name: T.nilable(String),
2381
2351
  template: T.nilable(String)
2382
2352
  }
2383
2353
  )
@@ -2385,6 +2355,43 @@ module Revox
2385
2355
  def to_hash
2386
2356
  end
2387
2357
 
2358
+ class Channel < Revox::Internal::Type::BaseModel
2359
+ OrHash =
2360
+ T.type_alias do
2361
+ T.any(
2362
+ Revox::Models::AssistantCloneResponse::Assistant::Slack::Channel,
2363
+ Revox::Internal::AnyHash
2364
+ )
2365
+ end
2366
+
2367
+ # The Slack channel ID (e.g. 'C01234567').
2368
+ sig { returns(String) }
2369
+ attr_accessor :id
2370
+
2371
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2372
+ # LLM when the agent prompt routes by channel name.
2373
+ sig { returns(T.nilable(String)) }
2374
+ attr_accessor :name
2375
+
2376
+ sig do
2377
+ params(id: String, name: T.nilable(String)).returns(
2378
+ T.attached_class
2379
+ )
2380
+ end
2381
+ def self.new(
2382
+ # The Slack channel ID (e.g. 'C01234567').
2383
+ id:,
2384
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2385
+ # LLM when the agent prompt routes by channel name.
2386
+ name: nil
2387
+ )
2388
+ end
2389
+
2390
+ sig { override.returns({ id: String, name: T.nilable(String) }) }
2391
+ def to_hash
2392
+ end
2393
+ end
2394
+
2388
2395
  module Outcome
2389
2396
  extend Revox::Internal::Type::Enum
2390
2397
 
@@ -2417,21 +2424,6 @@ module Revox
2417
2424
  :requested_callback_later,
2418
2425
  Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome::TaggedSymbol
2419
2426
  )
2420
- REQUESTED_CALLBACK_NEW_NUMBER =
2421
- T.let(
2422
- :requested_callback_new_number,
2423
- Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome::TaggedSymbol
2424
- )
2425
- DO_NOT_CONTACT =
2426
- T.let(
2427
- :do_not_contact,
2428
- Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome::TaggedSymbol
2429
- )
2430
- AI_AVERSE =
2431
- T.let(
2432
- :ai_averse,
2433
- Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome::TaggedSymbol
2434
- )
2435
2427
  NONE =
2436
2428
  T.let(
2437
2429
  :none,
@@ -2744,6 +2736,34 @@ module Revox
2744
2736
  end
2745
2737
  end
2746
2738
 
2739
+ class TransferDestination < Revox::Internal::Type::BaseModel
2740
+ OrHash =
2741
+ T.type_alias do
2742
+ T.any(
2743
+ Revox::Models::AssistantCloneResponse::Assistant::TransferDestination,
2744
+ Revox::Internal::AnyHash
2745
+ )
2746
+ end
2747
+
2748
+ sig { returns(String) }
2749
+ attr_accessor :label
2750
+
2751
+ sig { returns(String) }
2752
+ attr_accessor :phone_number
2753
+
2754
+ sig do
2755
+ params(label: String, phone_number: String).returns(
2756
+ T.attached_class
2757
+ )
2758
+ end
2759
+ def self.new(label:, phone_number:)
2760
+ end
2761
+
2762
+ sig { override.returns({ label: String, phone_number: String }) }
2763
+ def to_hash
2764
+ end
2765
+ end
2766
+
2747
2767
  module Type
2748
2768
  extend Revox::Internal::Type::Enum
2749
2769
 
@@ -2824,7 +2844,7 @@ module Revox
2824
2844
  attr_writer :model
2825
2845
 
2826
2846
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
2827
- # 0.7–1.2. Default is 1.0.
2847
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
2828
2848
  sig { returns(T.nilable(Float)) }
2829
2849
  attr_reader :speed
2830
2850
 
@@ -2859,7 +2879,7 @@ module Revox
2859
2879
  # for other providers.
2860
2880
  model: nil,
2861
2881
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
2862
- # 0.7–1.2. Default is 1.0.
2882
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
2863
2883
  speed: nil,
2864
2884
  # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
2865
2885
  # providers.
@@ -2906,6 +2926,11 @@ module Revox
2906
2926
  :elevenlabs,
2907
2927
  Revox::Models::AssistantCloneResponse::Assistant::Voice::Provider::TaggedSymbol
2908
2928
  )
2929
+ GRADIUM =
2930
+ T.let(
2931
+ :gradium,
2932
+ Revox::Models::AssistantCloneResponse::Assistant::Voice::Provider::TaggedSymbol
2933
+ )
2909
2934
 
2910
2935
  sig do
2911
2936
  override.returns(
@@ -3136,21 +3161,6 @@ module Revox
3136
3161
  :requested_callback_later,
3137
3162
  Revox::Models::AssistantCloneResponse::Assistant::Zoho::Outcome::TaggedSymbol
3138
3163
  )
3139
- REQUESTED_CALLBACK_NEW_NUMBER =
3140
- T.let(
3141
- :requested_callback_new_number,
3142
- Revox::Models::AssistantCloneResponse::Assistant::Zoho::Outcome::TaggedSymbol
3143
- )
3144
- DO_NOT_CONTACT =
3145
- T.let(
3146
- :do_not_contact,
3147
- Revox::Models::AssistantCloneResponse::Assistant::Zoho::Outcome::TaggedSymbol
3148
- )
3149
- AI_AVERSE =
3150
- T.let(
3151
- :ai_averse,
3152
- Revox::Models::AssistantCloneResponse::Assistant::Zoho::Outcome::TaggedSymbol
3153
- )
3154
3164
  NONE =
3155
3165
  T.let(
3156
3166
  :none,