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
@@ -145,14 +145,6 @@ module Revox
145
145
  sig { returns(T.nilable(String)) }
146
146
  attr_accessor :email_notification_address
147
147
 
148
- # The language used for the notification email content. One of "en" or "fr".
149
- sig do
150
- returns(
151
- Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
152
- )
153
- end
154
- attr_accessor :email_notification_language
155
-
156
148
  # Which call outcomes trigger an email notification. E.g. ["interested",
157
149
  # "completed", "none"]. Use "none" when outcome is null.
158
150
  sig do
@@ -188,8 +180,8 @@ module Revox
188
180
  sig { returns(T.nilable(String)) }
189
181
  attr_accessor :from_phone_number
190
182
 
191
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
192
- # not configured.
183
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
184
+ # transfer is not configured.
193
185
  sig do
194
186
  returns(
195
187
  T.nilable(
@@ -252,6 +244,11 @@ module Revox
252
244
  end
253
245
  attr_writer :position
254
246
 
247
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
248
+ # variables. Null when no lookup is configured.
249
+ sig { returns(T.nilable(String)) }
250
+ attr_accessor :precall_lookup_url
251
+
255
252
  sig { returns(String) }
256
253
  attr_accessor :prompt
257
254
 
@@ -371,9 +368,18 @@ module Revox
371
368
  sig { returns(Float) }
372
369
  attr_accessor :thinking_sound_volume
373
370
 
374
- # Phone number to transfer calls to when users request to speak to a human agent.
375
- sig { returns(T.nilable(String)) }
376
- attr_accessor :transfer_phone_number
371
+ # Where calls can be transferred to when users ask to speak to a human. Null or
372
+ # empty when transfer is not configured.
373
+ sig do
374
+ returns(
375
+ T.nilable(
376
+ T::Array[
377
+ Revox::Models::AssistantCreateResponse::Assistant::TransferDestination
378
+ ]
379
+ )
380
+ )
381
+ end
382
+ attr_accessor :transfer_destinations
377
383
 
378
384
  sig do
379
385
  returns(
@@ -479,6 +485,12 @@ module Revox
479
485
  end
480
486
  attr_writer :faq_items
481
487
 
488
+ sig { returns(T.nilable(T::Boolean)) }
489
+ attr_reader :is_inbound_receptionist
490
+
491
+ sig { params(is_inbound_receptionist: T::Boolean).void }
492
+ attr_writer :is_inbound_receptionist
493
+
482
494
  sig { returns(T.nilable(T::Boolean)) }
483
495
  attr_reader :is_realestate_assistant
484
496
 
@@ -523,8 +535,6 @@ module Revox
523
535
  ]
524
536
  ),
525
537
  email_notification_address: T.nilable(String),
526
- email_notification_language:
527
- Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationLanguage::OrSymbol,
528
538
  email_notification_outcomes:
529
539
  T.nilable(
530
540
  T::Array[
@@ -558,6 +568,7 @@ module Revox
558
568
  T.nilable(
559
569
  Revox::Models::AssistantCreateResponse::Assistant::Position::OrHash
560
570
  ),
571
+ precall_lookup_url: T.nilable(String),
561
572
  prompt: String,
562
573
  prompt_flow:
563
574
  T.nilable(
@@ -588,7 +599,12 @@ module Revox
588
599
  ),
589
600
  thinking_sound_probability: Float,
590
601
  thinking_sound_volume: Float,
591
- transfer_phone_number: T.nilable(String),
602
+ transfer_destinations:
603
+ T.nilable(
604
+ T::Array[
605
+ Revox::Models::AssistantCreateResponse::Assistant::TransferDestination::OrHash
606
+ ]
607
+ ),
592
608
  type:
593
609
  Revox::Models::AssistantCreateResponse::Assistant::Type::OrSymbol,
594
610
  updated_at: T.anything,
@@ -612,6 +628,7 @@ module Revox
612
628
  T::Array[
613
629
  Revox::Models::AssistantCreateResponse::Assistant::FaqItem::OrHash
614
630
  ],
631
+ is_inbound_receptionist: T::Boolean,
615
632
  is_realestate_assistant: T::Boolean,
616
633
  pending_faq_count: Float
617
634
  ).returns(T.attached_class)
@@ -640,8 +657,6 @@ module Revox
640
657
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
641
658
  # bob@y.com").
642
659
  email_notification_address:,
643
- # The language used for the notification email content. One of "en" or "fr".
644
- email_notification_language:,
645
660
  # Which call outcomes trigger an email notification. E.g. ["interested",
646
661
  # "completed", "none"]. Use "none" when outcome is null.
647
662
  email_notification_outcomes:,
@@ -653,8 +668,8 @@ module Revox
653
668
  # Override the default outbound phone number for calls placed with this assistant.
654
669
  # When null, the organization's default phone number is used.
655
670
  from_phone_number:,
656
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
657
- # not configured.
671
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
672
+ # transfer is not configured.
658
673
  human_transfer_mode:,
659
674
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
660
675
  # skip turns to navigate phone menus.
@@ -673,6 +688,9 @@ module Revox
673
688
  name:,
674
689
  organization_id:,
675
690
  position:,
691
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
692
+ # variables. Null when no lookup is configured.
693
+ precall_lookup_url:,
676
694
  prompt:,
677
695
  prompt_flow:,
678
696
  slack:,
@@ -704,8 +722,9 @@ module Revox
704
722
  thinking_sound_probability:,
705
723
  # Volume of the thinking sound (0 = silent, 1 = max).
706
724
  thinking_sound_volume:,
707
- # Phone number to transfer calls to when users request to speak to a human agent.
708
- transfer_phone_number:,
725
+ # Where calls can be transferred to when users ask to speak to a human. Null or
726
+ # empty when transfer is not configured.
727
+ transfer_destinations:,
709
728
  type:,
710
729
  updated_at:,
711
730
  voice:,
@@ -724,6 +743,7 @@ module Revox
724
743
  # The user who created the assistant.
725
744
  created_by: nil,
726
745
  faq_items: nil,
746
+ is_inbound_receptionist: nil,
727
747
  is_realestate_assistant: nil,
728
748
  pending_faq_count: nil
729
749
  )
@@ -762,8 +782,6 @@ module Revox
762
782
  ]
763
783
  ),
764
784
  email_notification_address: T.nilable(String),
765
- email_notification_language:
766
- Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationLanguage::TaggedSymbol,
767
785
  email_notification_outcomes:
768
786
  T.nilable(
769
787
  T::Array[
@@ -792,6 +810,7 @@ module Revox
792
810
  T.nilable(
793
811
  Revox::Models::AssistantCreateResponse::Assistant::Position
794
812
  ),
813
+ precall_lookup_url: T.nilable(String),
795
814
  prompt: String,
796
815
  prompt_flow:
797
816
  T.nilable(
@@ -822,7 +841,12 @@ module Revox
822
841
  ),
823
842
  thinking_sound_probability: Float,
824
843
  thinking_sound_volume: Float,
825
- transfer_phone_number: T.nilable(String),
844
+ transfer_destinations:
845
+ T.nilable(
846
+ T::Array[
847
+ Revox::Models::AssistantCreateResponse::Assistant::TransferDestination
848
+ ]
849
+ ),
826
850
  type:
827
851
  Revox::Models::AssistantCreateResponse::Assistant::Type::TaggedSymbol,
828
852
  updated_at: T.anything,
@@ -846,6 +870,7 @@ module Revox
846
870
  T::Array[
847
871
  Revox::Models::AssistantCreateResponse::Assistant::FaqItem
848
872
  ],
873
+ is_inbound_receptionist: T::Boolean,
849
874
  is_realestate_assistant: T::Boolean,
850
875
  pending_faq_count: Float
851
876
  }
@@ -886,21 +911,6 @@ module Revox
886
911
  :requested_callback_later,
887
912
  Revox::Models::AssistantCreateResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
888
913
  )
889
- REQUESTED_CALLBACK_NEW_NUMBER =
890
- T.let(
891
- :requested_callback_new_number,
892
- Revox::Models::AssistantCreateResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
893
- )
894
- DO_NOT_CONTACT =
895
- T.let(
896
- :do_not_contact,
897
- Revox::Models::AssistantCreateResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
898
- )
899
- AI_AVERSE =
900
- T.let(
901
- :ai_averse,
902
- Revox::Models::AssistantCreateResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
903
- )
904
914
  NONE =
905
915
  T.let(
906
916
  :none,
@@ -1169,7 +1179,8 @@ module Revox
1169
1179
  sig { returns(String) }
1170
1180
  attr_accessor :calling_window_start_time
1171
1181
 
1172
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1182
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1183
+ # allows. Default: 7200 (2 hours).
1173
1184
  sig { returns(Integer) }
1174
1185
  attr_accessor :retry_delay_seconds
1175
1186
 
@@ -1189,7 +1200,8 @@ module Revox
1189
1200
  # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
1190
1201
  # Examples: '09:00', '10am'. Default: '10:00'.
1191
1202
  calling_window_start_time:,
1192
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1203
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1204
+ # allows. Default: 7200 (2 hours).
1193
1205
  retry_delay_seconds:
1194
1206
  )
1195
1207
  end
@@ -1572,41 +1584,6 @@ module Revox
1572
1584
  end
1573
1585
  end
1574
1586
 
1575
- # The language used for the notification email content. One of "en" or "fr".
1576
- module EmailNotificationLanguage
1577
- extend Revox::Internal::Type::Enum
1578
-
1579
- TaggedSymbol =
1580
- T.type_alias do
1581
- T.all(
1582
- Symbol,
1583
- Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationLanguage
1584
- )
1585
- end
1586
- OrSymbol = T.type_alias { T.any(Symbol, String) }
1587
-
1588
- EN =
1589
- T.let(
1590
- :en,
1591
- Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1592
- )
1593
- FR =
1594
- T.let(
1595
- :fr,
1596
- Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1597
- )
1598
-
1599
- sig do
1600
- override.returns(
1601
- T::Array[
1602
- Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1603
- ]
1604
- )
1605
- end
1606
- def self.values
1607
- end
1608
- end
1609
-
1610
1587
  module EmailNotificationOutcome
1611
1588
  extend Revox::Internal::Type::Enum
1612
1589
 
@@ -1639,21 +1616,6 @@ module Revox
1639
1616
  :requested_callback_later,
1640
1617
  Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1641
1618
  )
1642
- REQUESTED_CALLBACK_NEW_NUMBER =
1643
- T.let(
1644
- :requested_callback_new_number,
1645
- Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1646
- )
1647
- DO_NOT_CONTACT =
1648
- T.let(
1649
- :do_not_contact,
1650
- Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1651
- )
1652
- AI_AVERSE =
1653
- T.let(
1654
- :ai_averse,
1655
- Revox::Models::AssistantCreateResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1656
- )
1657
1619
  NONE =
1658
1620
  T.let(
1659
1621
  :none,
@@ -1710,8 +1672,8 @@ module Revox
1710
1672
  end
1711
1673
  end
1712
1674
 
1713
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1714
- # not configured.
1675
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
1676
+ # transfer is not configured.
1715
1677
  module HumanTransferMode
1716
1678
  extend Revox::Internal::Type::Enum
1717
1679
 
@@ -2309,9 +2271,17 @@ module Revox
2309
2271
  )
2310
2272
  end
2311
2273
 
2312
- # The Slack channel ID where the notification will be posted.
2313
- sig { returns(String) }
2314
- attr_accessor :channel_id
2274
+ # The Slack channels eligible to receive the notification. When more than one is
2275
+ # configured, the agent prompt may define routing rules to narrow it down per
2276
+ # call; with no such rules every channel here is notified.
2277
+ sig do
2278
+ returns(
2279
+ T::Array[
2280
+ Revox::Models::AssistantCreateResponse::Assistant::Slack::Channel
2281
+ ]
2282
+ )
2283
+ end
2284
+ attr_accessor :channels
2315
2285
 
2316
2286
  # The Nango connection ID linking the org's Slack workspace to Revox.
2317
2287
  sig { returns(String) }
@@ -2328,45 +2298,43 @@ module Revox
2328
2298
  end
2329
2299
  attr_accessor :outcomes
2330
2300
 
2331
- # Human-readable Slack channel name, cached for display in the UI.
2332
- sig { returns(T.nilable(String)) }
2333
- attr_accessor :channel_name
2334
-
2335
2301
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2336
2302
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2337
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2338
- # prompt_variables and structured_output keys. When null/empty a default template
2339
- # is used.
2303
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2304
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2305
+ # null/empty a default template is used.
2340
2306
  sig { returns(T.nilable(String)) }
2341
2307
  attr_accessor :template
2342
2308
 
2343
2309
  sig do
2344
2310
  params(
2345
- channel_id: String,
2311
+ channels:
2312
+ T::Array[
2313
+ Revox::Models::AssistantCreateResponse::Assistant::Slack::Channel::OrHash
2314
+ ],
2346
2315
  connection_id: String,
2347
2316
  outcomes:
2348
2317
  T::Array[
2349
2318
  Revox::Models::AssistantCreateResponse::Assistant::Slack::Outcome::OrSymbol
2350
2319
  ],
2351
- channel_name: T.nilable(String),
2352
2320
  template: T.nilable(String)
2353
2321
  ).returns(T.attached_class)
2354
2322
  end
2355
2323
  def self.new(
2356
- # The Slack channel ID where the notification will be posted.
2357
- channel_id:,
2324
+ # The Slack channels eligible to receive the notification. When more than one is
2325
+ # configured, the agent prompt may define routing rules to narrow it down per
2326
+ # call; with no such rules every channel here is notified.
2327
+ channels:,
2358
2328
  # The Nango connection ID linking the org's Slack workspace to Revox.
2359
2329
  connection_id:,
2360
2330
  # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
2361
2331
  # Use 'none' to notify when outcome is null.
2362
2332
  outcomes:,
2363
- # Human-readable Slack channel name, cached for display in the UI.
2364
- channel_name: nil,
2365
2333
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2366
2334
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2367
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2368
- # prompt_variables and structured_output keys. When null/empty a default template
2369
- # is used.
2335
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2336
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2337
+ # null/empty a default template is used.
2370
2338
  template: nil
2371
2339
  )
2372
2340
  end
@@ -2374,13 +2342,15 @@ module Revox
2374
2342
  sig do
2375
2343
  override.returns(
2376
2344
  {
2377
- channel_id: String,
2345
+ channels:
2346
+ T::Array[
2347
+ Revox::Models::AssistantCreateResponse::Assistant::Slack::Channel
2348
+ ],
2378
2349
  connection_id: String,
2379
2350
  outcomes:
2380
2351
  T::Array[
2381
2352
  Revox::Models::AssistantCreateResponse::Assistant::Slack::Outcome::TaggedSymbol
2382
2353
  ],
2383
- channel_name: T.nilable(String),
2384
2354
  template: T.nilable(String)
2385
2355
  }
2386
2356
  )
@@ -2388,6 +2358,43 @@ module Revox
2388
2358
  def to_hash
2389
2359
  end
2390
2360
 
2361
+ class Channel < Revox::Internal::Type::BaseModel
2362
+ OrHash =
2363
+ T.type_alias do
2364
+ T.any(
2365
+ Revox::Models::AssistantCreateResponse::Assistant::Slack::Channel,
2366
+ Revox::Internal::AnyHash
2367
+ )
2368
+ end
2369
+
2370
+ # The Slack channel ID (e.g. 'C01234567').
2371
+ sig { returns(String) }
2372
+ attr_accessor :id
2373
+
2374
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2375
+ # LLM when the agent prompt routes by channel name.
2376
+ sig { returns(T.nilable(String)) }
2377
+ attr_accessor :name
2378
+
2379
+ sig do
2380
+ params(id: String, name: T.nilable(String)).returns(
2381
+ T.attached_class
2382
+ )
2383
+ end
2384
+ def self.new(
2385
+ # The Slack channel ID (e.g. 'C01234567').
2386
+ id:,
2387
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2388
+ # LLM when the agent prompt routes by channel name.
2389
+ name: nil
2390
+ )
2391
+ end
2392
+
2393
+ sig { override.returns({ id: String, name: T.nilable(String) }) }
2394
+ def to_hash
2395
+ end
2396
+ end
2397
+
2391
2398
  module Outcome
2392
2399
  extend Revox::Internal::Type::Enum
2393
2400
 
@@ -2420,21 +2427,6 @@ module Revox
2420
2427
  :requested_callback_later,
2421
2428
  Revox::Models::AssistantCreateResponse::Assistant::Slack::Outcome::TaggedSymbol
2422
2429
  )
2423
- REQUESTED_CALLBACK_NEW_NUMBER =
2424
- T.let(
2425
- :requested_callback_new_number,
2426
- Revox::Models::AssistantCreateResponse::Assistant::Slack::Outcome::TaggedSymbol
2427
- )
2428
- DO_NOT_CONTACT =
2429
- T.let(
2430
- :do_not_contact,
2431
- Revox::Models::AssistantCreateResponse::Assistant::Slack::Outcome::TaggedSymbol
2432
- )
2433
- AI_AVERSE =
2434
- T.let(
2435
- :ai_averse,
2436
- Revox::Models::AssistantCreateResponse::Assistant::Slack::Outcome::TaggedSymbol
2437
- )
2438
2430
  NONE =
2439
2431
  T.let(
2440
2432
  :none,
@@ -2747,6 +2739,34 @@ module Revox
2747
2739
  end
2748
2740
  end
2749
2741
 
2742
+ class TransferDestination < Revox::Internal::Type::BaseModel
2743
+ OrHash =
2744
+ T.type_alias do
2745
+ T.any(
2746
+ Revox::Models::AssistantCreateResponse::Assistant::TransferDestination,
2747
+ Revox::Internal::AnyHash
2748
+ )
2749
+ end
2750
+
2751
+ sig { returns(String) }
2752
+ attr_accessor :label
2753
+
2754
+ sig { returns(String) }
2755
+ attr_accessor :phone_number
2756
+
2757
+ sig do
2758
+ params(label: String, phone_number: String).returns(
2759
+ T.attached_class
2760
+ )
2761
+ end
2762
+ def self.new(label:, phone_number:)
2763
+ end
2764
+
2765
+ sig { override.returns({ label: String, phone_number: String }) }
2766
+ def to_hash
2767
+ end
2768
+ end
2769
+
2750
2770
  module Type
2751
2771
  extend Revox::Internal::Type::Enum
2752
2772
 
@@ -2827,7 +2847,7 @@ module Revox
2827
2847
  attr_writer :model
2828
2848
 
2829
2849
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
2830
- # 0.7–1.2. Default is 1.0.
2850
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
2831
2851
  sig { returns(T.nilable(Float)) }
2832
2852
  attr_reader :speed
2833
2853
 
@@ -2862,7 +2882,7 @@ module Revox
2862
2882
  # for other providers.
2863
2883
  model: nil,
2864
2884
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
2865
- # 0.7–1.2. Default is 1.0.
2885
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
2866
2886
  speed: nil,
2867
2887
  # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
2868
2888
  # providers.
@@ -2909,6 +2929,11 @@ module Revox
2909
2929
  :elevenlabs,
2910
2930
  Revox::Models::AssistantCreateResponse::Assistant::Voice::Provider::TaggedSymbol
2911
2931
  )
2932
+ GRADIUM =
2933
+ T.let(
2934
+ :gradium,
2935
+ Revox::Models::AssistantCreateResponse::Assistant::Voice::Provider::TaggedSymbol
2936
+ )
2912
2937
 
2913
2938
  sig do
2914
2939
  override.returns(
@@ -3139,21 +3164,6 @@ module Revox
3139
3164
  :requested_callback_later,
3140
3165
  Revox::Models::AssistantCreateResponse::Assistant::Zoho::Outcome::TaggedSymbol
3141
3166
  )
3142
- REQUESTED_CALLBACK_NEW_NUMBER =
3143
- T.let(
3144
- :requested_callback_new_number,
3145
- Revox::Models::AssistantCreateResponse::Assistant::Zoho::Outcome::TaggedSymbol
3146
- )
3147
- DO_NOT_CONTACT =
3148
- T.let(
3149
- :do_not_contact,
3150
- Revox::Models::AssistantCreateResponse::Assistant::Zoho::Outcome::TaggedSymbol
3151
- )
3152
- AI_AVERSE =
3153
- T.let(
3154
- :ai_averse,
3155
- Revox::Models::AssistantCreateResponse::Assistant::Zoho::Outcome::TaggedSymbol
3156
- )
3157
3167
  NONE =
3158
3168
  T.let(
3159
3169
  :none,