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
@@ -102,14 +102,6 @@ module Revox
102
102
  sig { returns(T.nilable(String)) }
103
103
  attr_accessor :email_notification_address
104
104
 
105
- # The language used for the notification email content. One of "en" or "fr".
106
- sig do
107
- returns(
108
- Revox::Models::AssistantRetrieveResponse::EmailNotificationLanguage::TaggedSymbol
109
- )
110
- end
111
- attr_accessor :email_notification_language
112
-
113
105
  # Which call outcomes trigger an email notification. E.g. ["interested",
114
106
  # "completed", "none"]. Use "none" when outcome is null.
115
107
  sig do
@@ -145,8 +137,8 @@ module Revox
145
137
  sig { returns(T.nilable(String)) }
146
138
  attr_accessor :from_phone_number
147
139
 
148
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
149
- # not configured.
140
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
141
+ # transfer is not configured.
150
142
  sig do
151
143
  returns(
152
144
  T.nilable(
@@ -203,6 +195,11 @@ module Revox
203
195
  end
204
196
  attr_writer :position
205
197
 
198
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
199
+ # variables. Null when no lookup is configured.
200
+ sig { returns(T.nilable(String)) }
201
+ attr_accessor :precall_lookup_url
202
+
206
203
  sig { returns(String) }
207
204
  attr_accessor :prompt
208
205
 
@@ -310,9 +307,18 @@ module Revox
310
307
  sig { returns(Float) }
311
308
  attr_accessor :thinking_sound_volume
312
309
 
313
- # Phone number to transfer calls to when users request to speak to a human agent.
314
- sig { returns(T.nilable(String)) }
315
- attr_accessor :transfer_phone_number
310
+ # Where calls can be transferred to when users ask to speak to a human. Null or
311
+ # empty when transfer is not configured.
312
+ sig do
313
+ returns(
314
+ T.nilable(
315
+ T::Array[
316
+ Revox::Models::AssistantRetrieveResponse::TransferDestination
317
+ ]
318
+ )
319
+ )
320
+ end
321
+ attr_accessor :transfer_destinations
316
322
 
317
323
  sig do
318
324
  returns(Revox::Models::AssistantRetrieveResponse::Type::TaggedSymbol)
@@ -396,6 +402,12 @@ module Revox
396
402
  end
397
403
  attr_writer :faq_items
398
404
 
405
+ sig { returns(T.nilable(T::Boolean)) }
406
+ attr_reader :is_inbound_receptionist
407
+
408
+ sig { params(is_inbound_receptionist: T::Boolean).void }
409
+ attr_writer :is_inbound_receptionist
410
+
399
411
  sig { returns(T.nilable(T::Boolean)) }
400
412
  attr_reader :is_realestate_assistant
401
413
 
@@ -440,8 +452,6 @@ module Revox
440
452
  ]
441
453
  ),
442
454
  email_notification_address: T.nilable(String),
443
- email_notification_language:
444
- Revox::Models::AssistantRetrieveResponse::EmailNotificationLanguage::OrSymbol,
445
455
  email_notification_outcomes:
446
456
  T.nilable(
447
457
  T::Array[
@@ -475,6 +485,7 @@ module Revox
475
485
  T.nilable(
476
486
  Revox::Models::AssistantRetrieveResponse::Position::OrHash
477
487
  ),
488
+ precall_lookup_url: T.nilable(String),
478
489
  prompt: String,
479
490
  prompt_flow:
480
491
  T.nilable(
@@ -503,7 +514,12 @@ module Revox
503
514
  ),
504
515
  thinking_sound_probability: Float,
505
516
  thinking_sound_volume: Float,
506
- transfer_phone_number: T.nilable(String),
517
+ transfer_destinations:
518
+ T.nilable(
519
+ T::Array[
520
+ Revox::Models::AssistantRetrieveResponse::TransferDestination::OrHash
521
+ ]
522
+ ),
507
523
  type: Revox::Models::AssistantRetrieveResponse::Type::OrSymbol,
508
524
  updated_at: T.anything,
509
525
  voice:
@@ -520,6 +536,7 @@ module Revox
520
536
  ),
521
537
  faq_items:
522
538
  T::Array[Revox::Models::AssistantRetrieveResponse::FaqItem::OrHash],
539
+ is_inbound_receptionist: T::Boolean,
523
540
  is_realestate_assistant: T::Boolean,
524
541
  pending_faq_count: Float
525
542
  ).returns(T.attached_class)
@@ -548,8 +565,6 @@ module Revox
548
565
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
549
566
  # bob@y.com").
550
567
  email_notification_address:,
551
- # The language used for the notification email content. One of "en" or "fr".
552
- email_notification_language:,
553
568
  # Which call outcomes trigger an email notification. E.g. ["interested",
554
569
  # "completed", "none"]. Use "none" when outcome is null.
555
570
  email_notification_outcomes:,
@@ -561,8 +576,8 @@ module Revox
561
576
  # Override the default outbound phone number for calls placed with this assistant.
562
577
  # When null, the organization's default phone number is used.
563
578
  from_phone_number:,
564
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
565
- # not configured.
579
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
580
+ # transfer is not configured.
566
581
  human_transfer_mode:,
567
582
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
568
583
  # skip turns to navigate phone menus.
@@ -581,6 +596,9 @@ module Revox
581
596
  name:,
582
597
  organization_id:,
583
598
  position:,
599
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
600
+ # variables. Null when no lookup is configured.
601
+ precall_lookup_url:,
584
602
  prompt:,
585
603
  prompt_flow:,
586
604
  slack:,
@@ -612,8 +630,9 @@ module Revox
612
630
  thinking_sound_probability:,
613
631
  # Volume of the thinking sound (0 = silent, 1 = max).
614
632
  thinking_sound_volume:,
615
- # Phone number to transfer calls to when users request to speak to a human agent.
616
- transfer_phone_number:,
633
+ # Where calls can be transferred to when users ask to speak to a human. Null or
634
+ # empty when transfer is not configured.
635
+ transfer_destinations:,
617
636
  type:,
618
637
  updated_at:,
619
638
  voice:,
@@ -632,6 +651,7 @@ module Revox
632
651
  # The user who created the assistant.
633
652
  created_by: nil,
634
653
  faq_items: nil,
654
+ is_inbound_receptionist: nil,
635
655
  is_realestate_assistant: nil,
636
656
  pending_faq_count: nil
637
657
  )
@@ -666,8 +686,6 @@ module Revox
666
686
  T::Array[Revox::Models::AssistantRetrieveResponse::CustomTool]
667
687
  ),
668
688
  email_notification_address: T.nilable(String),
669
- email_notification_language:
670
- Revox::Models::AssistantRetrieveResponse::EmailNotificationLanguage::TaggedSymbol,
671
689
  email_notification_outcomes:
672
690
  T.nilable(
673
691
  T::Array[
@@ -694,6 +712,7 @@ module Revox
694
712
  organization_id: String,
695
713
  position:
696
714
  T.nilable(Revox::Models::AssistantRetrieveResponse::Position),
715
+ precall_lookup_url: T.nilable(String),
697
716
  prompt: String,
698
717
  prompt_flow:
699
718
  T.nilable(Revox::Models::AssistantRetrieveResponse::PromptFlow),
@@ -717,7 +736,12 @@ module Revox
717
736
  ),
718
737
  thinking_sound_probability: Float,
719
738
  thinking_sound_volume: Float,
720
- transfer_phone_number: T.nilable(String),
739
+ transfer_destinations:
740
+ T.nilable(
741
+ T::Array[
742
+ Revox::Models::AssistantRetrieveResponse::TransferDestination
743
+ ]
744
+ ),
721
745
  type: Revox::Models::AssistantRetrieveResponse::Type::TaggedSymbol,
722
746
  updated_at: T.anything,
723
747
  voice: T.nilable(Revox::Models::AssistantRetrieveResponse::Voice),
@@ -730,6 +754,7 @@ module Revox
730
754
  T.nilable(Revox::Models::AssistantRetrieveResponse::CreatedBy),
731
755
  faq_items:
732
756
  T::Array[Revox::Models::AssistantRetrieveResponse::FaqItem],
757
+ is_inbound_receptionist: T::Boolean,
733
758
  is_realestate_assistant: T::Boolean,
734
759
  pending_faq_count: Float
735
760
  }
@@ -770,21 +795,6 @@ module Revox
770
795
  :requested_callback_later,
771
796
  Revox::Models::AssistantRetrieveResponse::AfterCallSMSOutcome::TaggedSymbol
772
797
  )
773
- REQUESTED_CALLBACK_NEW_NUMBER =
774
- T.let(
775
- :requested_callback_new_number,
776
- Revox::Models::AssistantRetrieveResponse::AfterCallSMSOutcome::TaggedSymbol
777
- )
778
- DO_NOT_CONTACT =
779
- T.let(
780
- :do_not_contact,
781
- Revox::Models::AssistantRetrieveResponse::AfterCallSMSOutcome::TaggedSymbol
782
- )
783
- AI_AVERSE =
784
- T.let(
785
- :ai_averse,
786
- Revox::Models::AssistantRetrieveResponse::AfterCallSMSOutcome::TaggedSymbol
787
- )
788
798
  NONE =
789
799
  T.let(
790
800
  :none,
@@ -1053,7 +1063,8 @@ module Revox
1053
1063
  sig { returns(String) }
1054
1064
  attr_accessor :calling_window_start_time
1055
1065
 
1056
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1066
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1067
+ # allows. Default: 7200 (2 hours).
1057
1068
  sig { returns(Integer) }
1058
1069
  attr_accessor :retry_delay_seconds
1059
1070
 
@@ -1073,7 +1084,8 @@ module Revox
1073
1084
  # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
1074
1085
  # Examples: '09:00', '10am'. Default: '10:00'.
1075
1086
  calling_window_start_time:,
1076
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1087
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1088
+ # allows. Default: 7200 (2 hours).
1077
1089
  retry_delay_seconds:
1078
1090
  )
1079
1091
  end
@@ -1456,41 +1468,6 @@ module Revox
1456
1468
  end
1457
1469
  end
1458
1470
 
1459
- # The language used for the notification email content. One of "en" or "fr".
1460
- module EmailNotificationLanguage
1461
- extend Revox::Internal::Type::Enum
1462
-
1463
- TaggedSymbol =
1464
- T.type_alias do
1465
- T.all(
1466
- Symbol,
1467
- Revox::Models::AssistantRetrieveResponse::EmailNotificationLanguage
1468
- )
1469
- end
1470
- OrSymbol = T.type_alias { T.any(Symbol, String) }
1471
-
1472
- EN =
1473
- T.let(
1474
- :en,
1475
- Revox::Models::AssistantRetrieveResponse::EmailNotificationLanguage::TaggedSymbol
1476
- )
1477
- FR =
1478
- T.let(
1479
- :fr,
1480
- Revox::Models::AssistantRetrieveResponse::EmailNotificationLanguage::TaggedSymbol
1481
- )
1482
-
1483
- sig do
1484
- override.returns(
1485
- T::Array[
1486
- Revox::Models::AssistantRetrieveResponse::EmailNotificationLanguage::TaggedSymbol
1487
- ]
1488
- )
1489
- end
1490
- def self.values
1491
- end
1492
- end
1493
-
1494
1471
  module EmailNotificationOutcome
1495
1472
  extend Revox::Internal::Type::Enum
1496
1473
 
@@ -1523,21 +1500,6 @@ module Revox
1523
1500
  :requested_callback_later,
1524
1501
  Revox::Models::AssistantRetrieveResponse::EmailNotificationOutcome::TaggedSymbol
1525
1502
  )
1526
- REQUESTED_CALLBACK_NEW_NUMBER =
1527
- T.let(
1528
- :requested_callback_new_number,
1529
- Revox::Models::AssistantRetrieveResponse::EmailNotificationOutcome::TaggedSymbol
1530
- )
1531
- DO_NOT_CONTACT =
1532
- T.let(
1533
- :do_not_contact,
1534
- Revox::Models::AssistantRetrieveResponse::EmailNotificationOutcome::TaggedSymbol
1535
- )
1536
- AI_AVERSE =
1537
- T.let(
1538
- :ai_averse,
1539
- Revox::Models::AssistantRetrieveResponse::EmailNotificationOutcome::TaggedSymbol
1540
- )
1541
1503
  NONE =
1542
1504
  T.let(
1543
1505
  :none,
@@ -1594,8 +1556,8 @@ module Revox
1594
1556
  end
1595
1557
  end
1596
1558
 
1597
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1598
- # not configured.
1559
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
1560
+ # transfer is not configured.
1599
1561
  module HumanTransferMode
1600
1562
  extend Revox::Internal::Type::Enum
1601
1563
 
@@ -2189,9 +2151,15 @@ module Revox
2189
2151
  )
2190
2152
  end
2191
2153
 
2192
- # The Slack channel ID where the notification will be posted.
2193
- sig { returns(String) }
2194
- attr_accessor :channel_id
2154
+ # The Slack channels eligible to receive the notification. When more than one is
2155
+ # configured, the agent prompt may define routing rules to narrow it down per
2156
+ # call; with no such rules every channel here is notified.
2157
+ sig do
2158
+ returns(
2159
+ T::Array[Revox::Models::AssistantRetrieveResponse::Slack::Channel]
2160
+ )
2161
+ end
2162
+ attr_accessor :channels
2195
2163
 
2196
2164
  # The Nango connection ID linking the org's Slack workspace to Revox.
2197
2165
  sig { returns(String) }
@@ -2208,45 +2176,43 @@ module Revox
2208
2176
  end
2209
2177
  attr_accessor :outcomes
2210
2178
 
2211
- # Human-readable Slack channel name, cached for display in the UI.
2212
- sig { returns(T.nilable(String)) }
2213
- attr_accessor :channel_name
2214
-
2215
2179
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2216
2180
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2217
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2218
- # prompt_variables and structured_output keys. When null/empty a default template
2219
- # is used.
2181
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2182
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2183
+ # null/empty a default template is used.
2220
2184
  sig { returns(T.nilable(String)) }
2221
2185
  attr_accessor :template
2222
2186
 
2223
2187
  sig do
2224
2188
  params(
2225
- channel_id: String,
2189
+ channels:
2190
+ T::Array[
2191
+ Revox::Models::AssistantRetrieveResponse::Slack::Channel::OrHash
2192
+ ],
2226
2193
  connection_id: String,
2227
2194
  outcomes:
2228
2195
  T::Array[
2229
2196
  Revox::Models::AssistantRetrieveResponse::Slack::Outcome::OrSymbol
2230
2197
  ],
2231
- channel_name: T.nilable(String),
2232
2198
  template: T.nilable(String)
2233
2199
  ).returns(T.attached_class)
2234
2200
  end
2235
2201
  def self.new(
2236
- # The Slack channel ID where the notification will be posted.
2237
- channel_id:,
2202
+ # The Slack channels eligible to receive the notification. When more than one is
2203
+ # configured, the agent prompt may define routing rules to narrow it down per
2204
+ # call; with no such rules every channel here is notified.
2205
+ channels:,
2238
2206
  # The Nango connection ID linking the org's Slack workspace to Revox.
2239
2207
  connection_id:,
2240
2208
  # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
2241
2209
  # Use 'none' to notify when outcome is null.
2242
2210
  outcomes:,
2243
- # Human-readable Slack channel name, cached for display in the UI.
2244
- channel_name: nil,
2245
2211
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2246
2212
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2247
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2248
- # prompt_variables and structured_output keys. When null/empty a default template
2249
- # is used.
2213
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2214
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2215
+ # null/empty a default template is used.
2250
2216
  template: nil
2251
2217
  )
2252
2218
  end
@@ -2254,13 +2220,15 @@ module Revox
2254
2220
  sig do
2255
2221
  override.returns(
2256
2222
  {
2257
- channel_id: String,
2223
+ channels:
2224
+ T::Array[
2225
+ Revox::Models::AssistantRetrieveResponse::Slack::Channel
2226
+ ],
2258
2227
  connection_id: String,
2259
2228
  outcomes:
2260
2229
  T::Array[
2261
2230
  Revox::Models::AssistantRetrieveResponse::Slack::Outcome::TaggedSymbol
2262
2231
  ],
2263
- channel_name: T.nilable(String),
2264
2232
  template: T.nilable(String)
2265
2233
  }
2266
2234
  )
@@ -2268,6 +2236,43 @@ module Revox
2268
2236
  def to_hash
2269
2237
  end
2270
2238
 
2239
+ class Channel < Revox::Internal::Type::BaseModel
2240
+ OrHash =
2241
+ T.type_alias do
2242
+ T.any(
2243
+ Revox::Models::AssistantRetrieveResponse::Slack::Channel,
2244
+ Revox::Internal::AnyHash
2245
+ )
2246
+ end
2247
+
2248
+ # The Slack channel ID (e.g. 'C01234567').
2249
+ sig { returns(String) }
2250
+ attr_accessor :id
2251
+
2252
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2253
+ # LLM when the agent prompt routes by channel name.
2254
+ sig { returns(T.nilable(String)) }
2255
+ attr_accessor :name
2256
+
2257
+ sig do
2258
+ params(id: String, name: T.nilable(String)).returns(
2259
+ T.attached_class
2260
+ )
2261
+ end
2262
+ def self.new(
2263
+ # The Slack channel ID (e.g. 'C01234567').
2264
+ id:,
2265
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2266
+ # LLM when the agent prompt routes by channel name.
2267
+ name: nil
2268
+ )
2269
+ end
2270
+
2271
+ sig { override.returns({ id: String, name: T.nilable(String) }) }
2272
+ def to_hash
2273
+ end
2274
+ end
2275
+
2271
2276
  module Outcome
2272
2277
  extend Revox::Internal::Type::Enum
2273
2278
 
@@ -2300,21 +2305,6 @@ module Revox
2300
2305
  :requested_callback_later,
2301
2306
  Revox::Models::AssistantRetrieveResponse::Slack::Outcome::TaggedSymbol
2302
2307
  )
2303
- REQUESTED_CALLBACK_NEW_NUMBER =
2304
- T.let(
2305
- :requested_callback_new_number,
2306
- Revox::Models::AssistantRetrieveResponse::Slack::Outcome::TaggedSymbol
2307
- )
2308
- DO_NOT_CONTACT =
2309
- T.let(
2310
- :do_not_contact,
2311
- Revox::Models::AssistantRetrieveResponse::Slack::Outcome::TaggedSymbol
2312
- )
2313
- AI_AVERSE =
2314
- T.let(
2315
- :ai_averse,
2316
- Revox::Models::AssistantRetrieveResponse::Slack::Outcome::TaggedSymbol
2317
- )
2318
2308
  NONE =
2319
2309
  T.let(
2320
2310
  :none,
@@ -2624,6 +2614,32 @@ module Revox
2624
2614
  end
2625
2615
  end
2626
2616
 
2617
+ class TransferDestination < Revox::Internal::Type::BaseModel
2618
+ OrHash =
2619
+ T.type_alias do
2620
+ T.any(
2621
+ Revox::Models::AssistantRetrieveResponse::TransferDestination,
2622
+ Revox::Internal::AnyHash
2623
+ )
2624
+ end
2625
+
2626
+ sig { returns(String) }
2627
+ attr_accessor :label
2628
+
2629
+ sig { returns(String) }
2630
+ attr_accessor :phone_number
2631
+
2632
+ sig do
2633
+ params(label: String, phone_number: String).returns(T.attached_class)
2634
+ end
2635
+ def self.new(label:, phone_number:)
2636
+ end
2637
+
2638
+ sig { override.returns({ label: String, phone_number: String }) }
2639
+ def to_hash
2640
+ end
2641
+ end
2642
+
2627
2643
  module Type
2628
2644
  extend Revox::Internal::Type::Enum
2629
2645
 
@@ -2701,7 +2717,7 @@ module Revox
2701
2717
  attr_writer :model
2702
2718
 
2703
2719
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
2704
- # 0.7–1.2. Default is 1.0.
2720
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
2705
2721
  sig { returns(T.nilable(Float)) }
2706
2722
  attr_reader :speed
2707
2723
 
@@ -2736,7 +2752,7 @@ module Revox
2736
2752
  # for other providers.
2737
2753
  model: nil,
2738
2754
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
2739
- # 0.7–1.2. Default is 1.0.
2755
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
2740
2756
  speed: nil,
2741
2757
  # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
2742
2758
  # providers.
@@ -2783,6 +2799,11 @@ module Revox
2783
2799
  :elevenlabs,
2784
2800
  Revox::Models::AssistantRetrieveResponse::Voice::Provider::TaggedSymbol
2785
2801
  )
2802
+ GRADIUM =
2803
+ T.let(
2804
+ :gradium,
2805
+ Revox::Models::AssistantRetrieveResponse::Voice::Provider::TaggedSymbol
2806
+ )
2786
2807
 
2787
2808
  sig do
2788
2809
  override.returns(
@@ -3011,21 +3032,6 @@ module Revox
3011
3032
  :requested_callback_later,
3012
3033
  Revox::Models::AssistantRetrieveResponse::Zoho::Outcome::TaggedSymbol
3013
3034
  )
3014
- REQUESTED_CALLBACK_NEW_NUMBER =
3015
- T.let(
3016
- :requested_callback_new_number,
3017
- Revox::Models::AssistantRetrieveResponse::Zoho::Outcome::TaggedSymbol
3018
- )
3019
- DO_NOT_CONTACT =
3020
- T.let(
3021
- :do_not_contact,
3022
- Revox::Models::AssistantRetrieveResponse::Zoho::Outcome::TaggedSymbol
3023
- )
3024
- AI_AVERSE =
3025
- T.let(
3026
- :ai_averse,
3027
- Revox::Models::AssistantRetrieveResponse::Zoho::Outcome::TaggedSymbol
3028
- )
3029
3035
  NONE =
3030
3036
  T.let(
3031
3037
  :none,