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
@@ -356,14 +356,6 @@ module Revox
356
356
  sig { returns(T.nilable(String)) }
357
357
  attr_accessor :email_notification_address
358
358
 
359
- # The language used for the notification email content. One of "en" or "fr".
360
- sig do
361
- returns(
362
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationLanguage::TaggedSymbol
363
- )
364
- end
365
- attr_accessor :email_notification_language
366
-
367
359
  # Which call outcomes trigger an email notification. E.g. ["interested",
368
360
  # "completed", "none"]. Use "none" when outcome is null.
369
361
  sig do
@@ -399,8 +391,8 @@ module Revox
399
391
  sig { returns(T.nilable(String)) }
400
392
  attr_accessor :from_phone_number
401
393
 
402
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
403
- # not configured.
394
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
395
+ # transfer is not configured.
404
396
  sig do
405
397
  returns(
406
398
  T.nilable(
@@ -463,6 +455,11 @@ module Revox
463
455
  end
464
456
  attr_writer :position
465
457
 
458
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
459
+ # variables. Null when no lookup is configured.
460
+ sig { returns(T.nilable(String)) }
461
+ attr_accessor :precall_lookup_url
462
+
466
463
  sig { returns(String) }
467
464
  attr_accessor :prompt
468
465
 
@@ -584,9 +581,18 @@ module Revox
584
581
  sig { returns(Float) }
585
582
  attr_accessor :thinking_sound_volume
586
583
 
587
- # Phone number to transfer calls to when users request to speak to a human agent.
588
- sig { returns(T.nilable(String)) }
589
- attr_accessor :transfer_phone_number
584
+ # Where calls can be transferred to when users ask to speak to a human. Null or
585
+ # empty when transfer is not configured.
586
+ sig do
587
+ returns(
588
+ T.nilable(
589
+ T::Array[
590
+ Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::TransferDestination
591
+ ]
592
+ )
593
+ )
594
+ end
595
+ attr_accessor :transfer_destinations
590
596
 
591
597
  sig do
592
598
  returns(
@@ -696,6 +702,12 @@ module Revox
696
702
  end
697
703
  attr_writer :faq_items
698
704
 
705
+ sig { returns(T.nilable(T::Boolean)) }
706
+ attr_reader :is_inbound_receptionist
707
+
708
+ sig { params(is_inbound_receptionist: T::Boolean).void }
709
+ attr_writer :is_inbound_receptionist
710
+
699
711
  sig { returns(T.nilable(T::Boolean)) }
700
712
  attr_reader :is_realestate_assistant
701
713
 
@@ -740,8 +752,6 @@ module Revox
740
752
  ]
741
753
  ),
742
754
  email_notification_address: T.nilable(String),
743
- email_notification_language:
744
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationLanguage::OrSymbol,
745
755
  email_notification_outcomes:
746
756
  T.nilable(
747
757
  T::Array[
@@ -775,6 +785,7 @@ module Revox
775
785
  T.nilable(
776
786
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Position::OrHash
777
787
  ),
788
+ precall_lookup_url: T.nilable(String),
778
789
  prompt: String,
779
790
  prompt_flow:
780
791
  T.nilable(
@@ -805,7 +816,12 @@ module Revox
805
816
  ),
806
817
  thinking_sound_probability: Float,
807
818
  thinking_sound_volume: Float,
808
- transfer_phone_number: T.nilable(String),
819
+ transfer_destinations:
820
+ T.nilable(
821
+ T::Array[
822
+ Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::TransferDestination::OrHash
823
+ ]
824
+ ),
809
825
  type:
810
826
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Type::OrSymbol,
811
827
  updated_at: T.anything,
@@ -829,6 +845,7 @@ module Revox
829
845
  T::Array[
830
846
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FaqItem::OrHash
831
847
  ],
848
+ is_inbound_receptionist: T::Boolean,
832
849
  is_realestate_assistant: T::Boolean,
833
850
  pending_faq_count: Float
834
851
  ).returns(T.attached_class)
@@ -857,8 +874,6 @@ module Revox
857
874
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
858
875
  # bob@y.com").
859
876
  email_notification_address:,
860
- # The language used for the notification email content. One of "en" or "fr".
861
- email_notification_language:,
862
877
  # Which call outcomes trigger an email notification. E.g. ["interested",
863
878
  # "completed", "none"]. Use "none" when outcome is null.
864
879
  email_notification_outcomes:,
@@ -870,8 +885,8 @@ module Revox
870
885
  # Override the default outbound phone number for calls placed with this assistant.
871
886
  # When null, the organization's default phone number is used.
872
887
  from_phone_number:,
873
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
874
- # not configured.
888
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
889
+ # transfer is not configured.
875
890
  human_transfer_mode:,
876
891
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
877
892
  # skip turns to navigate phone menus.
@@ -890,6 +905,9 @@ module Revox
890
905
  name:,
891
906
  organization_id:,
892
907
  position:,
908
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
909
+ # variables. Null when no lookup is configured.
910
+ precall_lookup_url:,
893
911
  prompt:,
894
912
  prompt_flow:,
895
913
  slack:,
@@ -921,8 +939,9 @@ module Revox
921
939
  thinking_sound_probability:,
922
940
  # Volume of the thinking sound (0 = silent, 1 = max).
923
941
  thinking_sound_volume:,
924
- # Phone number to transfer calls to when users request to speak to a human agent.
925
- transfer_phone_number:,
942
+ # Where calls can be transferred to when users ask to speak to a human. Null or
943
+ # empty when transfer is not configured.
944
+ transfer_destinations:,
926
945
  type:,
927
946
  updated_at:,
928
947
  voice:,
@@ -941,6 +960,7 @@ module Revox
941
960
  # The user who created the assistant.
942
961
  created_by: nil,
943
962
  faq_items: nil,
963
+ is_inbound_receptionist: nil,
944
964
  is_realestate_assistant: nil,
945
965
  pending_faq_count: nil
946
966
  )
@@ -979,8 +999,6 @@ module Revox
979
999
  ]
980
1000
  ),
981
1001
  email_notification_address: T.nilable(String),
982
- email_notification_language:
983
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationLanguage::TaggedSymbol,
984
1002
  email_notification_outcomes:
985
1003
  T.nilable(
986
1004
  T::Array[
@@ -1009,6 +1027,7 @@ module Revox
1009
1027
  T.nilable(
1010
1028
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Position
1011
1029
  ),
1030
+ precall_lookup_url: T.nilable(String),
1012
1031
  prompt: String,
1013
1032
  prompt_flow:
1014
1033
  T.nilable(
@@ -1039,7 +1058,12 @@ module Revox
1039
1058
  ),
1040
1059
  thinking_sound_probability: Float,
1041
1060
  thinking_sound_volume: Float,
1042
- transfer_phone_number: T.nilable(String),
1061
+ transfer_destinations:
1062
+ T.nilable(
1063
+ T::Array[
1064
+ Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::TransferDestination
1065
+ ]
1066
+ ),
1043
1067
  type:
1044
1068
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Type::TaggedSymbol,
1045
1069
  updated_at: T.anything,
@@ -1063,6 +1087,7 @@ module Revox
1063
1087
  T::Array[
1064
1088
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::FaqItem
1065
1089
  ],
1090
+ is_inbound_receptionist: T::Boolean,
1066
1091
  is_realestate_assistant: T::Boolean,
1067
1092
  pending_faq_count: Float
1068
1093
  }
@@ -1103,21 +1128,6 @@ module Revox
1103
1128
  :requested_callback_later,
1104
1129
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::AfterCallSMSOutcome::TaggedSymbol
1105
1130
  )
1106
- REQUESTED_CALLBACK_NEW_NUMBER =
1107
- T.let(
1108
- :requested_callback_new_number,
1109
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::AfterCallSMSOutcome::TaggedSymbol
1110
- )
1111
- DO_NOT_CONTACT =
1112
- T.let(
1113
- :do_not_contact,
1114
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::AfterCallSMSOutcome::TaggedSymbol
1115
- )
1116
- AI_AVERSE =
1117
- T.let(
1118
- :ai_averse,
1119
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::AfterCallSMSOutcome::TaggedSymbol
1120
- )
1121
1131
  NONE =
1122
1132
  T.let(
1123
1133
  :none,
@@ -1386,7 +1396,8 @@ module Revox
1386
1396
  sig { returns(String) }
1387
1397
  attr_accessor :calling_window_start_time
1388
1398
 
1389
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1399
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1400
+ # allows. Default: 7200 (2 hours).
1390
1401
  sig { returns(Integer) }
1391
1402
  attr_accessor :retry_delay_seconds
1392
1403
 
@@ -1406,7 +1417,8 @@ module Revox
1406
1417
  # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
1407
1418
  # Examples: '09:00', '10am'. Default: '10:00'.
1408
1419
  calling_window_start_time:,
1409
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1420
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1421
+ # allows. Default: 7200 (2 hours).
1410
1422
  retry_delay_seconds:
1411
1423
  )
1412
1424
  end
@@ -1793,41 +1805,6 @@ module Revox
1793
1805
  end
1794
1806
  end
1795
1807
 
1796
- # The language used for the notification email content. One of "en" or "fr".
1797
- module EmailNotificationLanguage
1798
- extend Revox::Internal::Type::Enum
1799
-
1800
- TaggedSymbol =
1801
- T.type_alias do
1802
- T.all(
1803
- Symbol,
1804
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationLanguage
1805
- )
1806
- end
1807
- OrSymbol = T.type_alias { T.any(Symbol, String) }
1808
-
1809
- EN =
1810
- T.let(
1811
- :en,
1812
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationLanguage::TaggedSymbol
1813
- )
1814
- FR =
1815
- T.let(
1816
- :fr,
1817
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationLanguage::TaggedSymbol
1818
- )
1819
-
1820
- sig do
1821
- override.returns(
1822
- T::Array[
1823
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationLanguage::TaggedSymbol
1824
- ]
1825
- )
1826
- end
1827
- def self.values
1828
- end
1829
- end
1830
-
1831
1808
  module EmailNotificationOutcome
1832
1809
  extend Revox::Internal::Type::Enum
1833
1810
 
@@ -1860,21 +1837,6 @@ module Revox
1860
1837
  :requested_callback_later,
1861
1838
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationOutcome::TaggedSymbol
1862
1839
  )
1863
- REQUESTED_CALLBACK_NEW_NUMBER =
1864
- T.let(
1865
- :requested_callback_new_number,
1866
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationOutcome::TaggedSymbol
1867
- )
1868
- DO_NOT_CONTACT =
1869
- T.let(
1870
- :do_not_contact,
1871
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationOutcome::TaggedSymbol
1872
- )
1873
- AI_AVERSE =
1874
- T.let(
1875
- :ai_averse,
1876
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::EmailNotificationOutcome::TaggedSymbol
1877
- )
1878
1840
  NONE =
1879
1841
  T.let(
1880
1842
  :none,
@@ -1931,8 +1893,8 @@ module Revox
1931
1893
  end
1932
1894
  end
1933
1895
 
1934
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1935
- # not configured.
1896
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
1897
+ # transfer is not configured.
1936
1898
  module HumanTransferMode
1937
1899
  extend Revox::Internal::Type::Enum
1938
1900
 
@@ -2530,9 +2492,17 @@ module Revox
2530
2492
  )
2531
2493
  end
2532
2494
 
2533
- # The Slack channel ID where the notification will be posted.
2534
- sig { returns(String) }
2535
- attr_accessor :channel_id
2495
+ # The Slack channels eligible to receive the notification. When more than one is
2496
+ # configured, the agent prompt may define routing rules to narrow it down per
2497
+ # call; with no such rules every channel here is notified.
2498
+ sig do
2499
+ returns(
2500
+ T::Array[
2501
+ Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Channel
2502
+ ]
2503
+ )
2504
+ end
2505
+ attr_accessor :channels
2536
2506
 
2537
2507
  # The Nango connection ID linking the org's Slack workspace to Revox.
2538
2508
  sig { returns(String) }
@@ -2549,45 +2519,43 @@ module Revox
2549
2519
  end
2550
2520
  attr_accessor :outcomes
2551
2521
 
2552
- # Human-readable Slack channel name, cached for display in the UI.
2553
- sig { returns(T.nilable(String)) }
2554
- attr_accessor :channel_name
2555
-
2556
2522
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2557
2523
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2558
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2559
- # prompt_variables and structured_output keys. When null/empty a default template
2560
- # is used.
2524
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2525
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2526
+ # null/empty a default template is used.
2561
2527
  sig { returns(T.nilable(String)) }
2562
2528
  attr_accessor :template
2563
2529
 
2564
2530
  sig do
2565
2531
  params(
2566
- channel_id: String,
2532
+ channels:
2533
+ T::Array[
2534
+ Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Channel::OrHash
2535
+ ],
2567
2536
  connection_id: String,
2568
2537
  outcomes:
2569
2538
  T::Array[
2570
2539
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Outcome::OrSymbol
2571
2540
  ],
2572
- channel_name: T.nilable(String),
2573
2541
  template: T.nilable(String)
2574
2542
  ).returns(T.attached_class)
2575
2543
  end
2576
2544
  def self.new(
2577
- # The Slack channel ID where the notification will be posted.
2578
- channel_id:,
2545
+ # The Slack channels eligible to receive the notification. When more than one is
2546
+ # configured, the agent prompt may define routing rules to narrow it down per
2547
+ # call; with no such rules every channel here is notified.
2548
+ channels:,
2579
2549
  # The Nango connection ID linking the org's Slack workspace to Revox.
2580
2550
  connection_id:,
2581
2551
  # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
2582
2552
  # Use 'none' to notify when outcome is null.
2583
2553
  outcomes:,
2584
- # Human-readable Slack channel name, cached for display in the UI.
2585
- channel_name: nil,
2586
2554
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2587
2555
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2588
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2589
- # prompt_variables and structured_output keys. When null/empty a default template
2590
- # is used.
2556
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2557
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2558
+ # null/empty a default template is used.
2591
2559
  template: nil
2592
2560
  )
2593
2561
  end
@@ -2595,13 +2563,15 @@ module Revox
2595
2563
  sig do
2596
2564
  override.returns(
2597
2565
  {
2598
- channel_id: String,
2566
+ channels:
2567
+ T::Array[
2568
+ Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Channel
2569
+ ],
2599
2570
  connection_id: String,
2600
2571
  outcomes:
2601
2572
  T::Array[
2602
2573
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Outcome::TaggedSymbol
2603
2574
  ],
2604
- channel_name: T.nilable(String),
2605
2575
  template: T.nilable(String)
2606
2576
  }
2607
2577
  )
@@ -2609,6 +2579,43 @@ module Revox
2609
2579
  def to_hash
2610
2580
  end
2611
2581
 
2582
+ class Channel < Revox::Internal::Type::BaseModel
2583
+ OrHash =
2584
+ T.type_alias do
2585
+ T.any(
2586
+ Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Channel,
2587
+ Revox::Internal::AnyHash
2588
+ )
2589
+ end
2590
+
2591
+ # The Slack channel ID (e.g. 'C01234567').
2592
+ sig { returns(String) }
2593
+ attr_accessor :id
2594
+
2595
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2596
+ # LLM when the agent prompt routes by channel name.
2597
+ sig { returns(T.nilable(String)) }
2598
+ attr_accessor :name
2599
+
2600
+ sig do
2601
+ params(id: String, name: T.nilable(String)).returns(
2602
+ T.attached_class
2603
+ )
2604
+ end
2605
+ def self.new(
2606
+ # The Slack channel ID (e.g. 'C01234567').
2607
+ id:,
2608
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2609
+ # LLM when the agent prompt routes by channel name.
2610
+ name: nil
2611
+ )
2612
+ end
2613
+
2614
+ sig { override.returns({ id: String, name: T.nilable(String) }) }
2615
+ def to_hash
2616
+ end
2617
+ end
2618
+
2612
2619
  module Outcome
2613
2620
  extend Revox::Internal::Type::Enum
2614
2621
 
@@ -2641,21 +2648,6 @@ module Revox
2641
2648
  :requested_callback_later,
2642
2649
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Outcome::TaggedSymbol
2643
2650
  )
2644
- REQUESTED_CALLBACK_NEW_NUMBER =
2645
- T.let(
2646
- :requested_callback_new_number,
2647
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Outcome::TaggedSymbol
2648
- )
2649
- DO_NOT_CONTACT =
2650
- T.let(
2651
- :do_not_contact,
2652
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Outcome::TaggedSymbol
2653
- )
2654
- AI_AVERSE =
2655
- T.let(
2656
- :ai_averse,
2657
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Slack::Outcome::TaggedSymbol
2658
- )
2659
2651
  NONE =
2660
2652
  T.let(
2661
2653
  :none,
@@ -2970,6 +2962,34 @@ module Revox
2970
2962
  end
2971
2963
  end
2972
2964
 
2965
+ class TransferDestination < Revox::Internal::Type::BaseModel
2966
+ OrHash =
2967
+ T.type_alias do
2968
+ T.any(
2969
+ Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::TransferDestination,
2970
+ Revox::Internal::AnyHash
2971
+ )
2972
+ end
2973
+
2974
+ sig { returns(String) }
2975
+ attr_accessor :label
2976
+
2977
+ sig { returns(String) }
2978
+ attr_accessor :phone_number
2979
+
2980
+ sig do
2981
+ params(label: String, phone_number: String).returns(
2982
+ T.attached_class
2983
+ )
2984
+ end
2985
+ def self.new(label:, phone_number:)
2986
+ end
2987
+
2988
+ sig { override.returns({ label: String, phone_number: String }) }
2989
+ def to_hash
2990
+ end
2991
+ end
2992
+
2973
2993
  module Type
2974
2994
  extend Revox::Internal::Type::Enum
2975
2995
 
@@ -3050,7 +3070,7 @@ module Revox
3050
3070
  attr_writer :model
3051
3071
 
3052
3072
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
3053
- # 0.7–1.2. Default is 1.0.
3073
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
3054
3074
  sig { returns(T.nilable(Float)) }
3055
3075
  attr_reader :speed
3056
3076
 
@@ -3085,7 +3105,7 @@ module Revox
3085
3105
  # for other providers.
3086
3106
  model: nil,
3087
3107
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
3088
- # 0.7–1.2. Default is 1.0.
3108
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
3089
3109
  speed: nil,
3090
3110
  # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
3091
3111
  # providers.
@@ -3132,6 +3152,11 @@ module Revox
3132
3152
  :elevenlabs,
3133
3153
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice::Provider::TaggedSymbol
3134
3154
  )
3155
+ GRADIUM =
3156
+ T.let(
3157
+ :gradium,
3158
+ Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Voice::Provider::TaggedSymbol
3159
+ )
3135
3160
 
3136
3161
  sig do
3137
3162
  override.returns(
@@ -3362,21 +3387,6 @@ module Revox
3362
3387
  :requested_callback_later,
3363
3388
  Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::Outcome::TaggedSymbol
3364
3389
  )
3365
- REQUESTED_CALLBACK_NEW_NUMBER =
3366
- T.let(
3367
- :requested_callback_new_number,
3368
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::Outcome::TaggedSymbol
3369
- )
3370
- DO_NOT_CONTACT =
3371
- T.let(
3372
- :do_not_contact,
3373
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::Outcome::TaggedSymbol
3374
- )
3375
- AI_AVERSE =
3376
- T.let(
3377
- :ai_averse,
3378
- Revox::Models::PhoneNumberListResponse::PhoneNumber::InboundAssistant::Zoho::Outcome::TaggedSymbol
3379
- )
3380
3390
  NONE =
3381
3391
  T.let(
3382
3392
  :none,