revox 0.3.0 → 0.5.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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -0
  3. data/README.md +40 -40
  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_launch_params.rb +182 -1
  22. data/lib/revox/models/campaign_launch_response.rb +3447 -1574
  23. data/lib/revox/models/campaign_list_response.rb +108 -119
  24. data/lib/revox/models/campaign_retrieve_response.rb +108 -119
  25. data/lib/revox/models/campaign_statistics_response.rb +51 -23
  26. data/lib/revox/models/campaign_update_params.rb +9 -78
  27. data/lib/revox/models/campaign_update_response.rb +108 -119
  28. data/lib/revox/models/phone_number_list_response.rb +87 -65
  29. data/lib/revox/models/phone_number_update_response.rb +87 -65
  30. data/lib/revox/models/voice_list_response.rb +1 -0
  31. data/lib/revox/models/voice_preview_params.rb +1 -0
  32. data/lib/revox/models/voice_retrieve_params.rb +1 -0
  33. data/lib/revox/resources/assistants.rb +10 -10
  34. data/lib/revox/resources/call.rb +4 -4
  35. data/lib/revox/resources/campaigns.rb +35 -31
  36. data/lib/revox/version.rb +1 -1
  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_launch_params.rbi +511 -2
  55. data/rbi/revox/models/campaign_launch_response.rbi +6882 -3163
  56. data/rbi/revox/models/campaign_list_response.rbi +188 -262
  57. data/rbi/revox/models/campaign_retrieve_response.rbi +188 -266
  58. data/rbi/revox/models/campaign_statistics_response.rbi +94 -36
  59. data/rbi/revox/models/campaign_update_params.rbi +10 -128
  60. data/rbi/revox/models/campaign_update_response.rbi +188 -266
  61. data/rbi/revox/models/phone_number_list_response.rbi +157 -147
  62. data/rbi/revox/models/phone_number_update_response.rbi +157 -147
  63. data/rbi/revox/models/voice_list_response.rbi +5 -0
  64. data/rbi/revox/models/voice_preview_params.rbi +2 -0
  65. data/rbi/revox/models/voice_retrieve_params.rbi +2 -0
  66. data/rbi/revox/resources/assistants.rbi +40 -22
  67. data/rbi/revox/resources/call.rbi +7 -4
  68. data/rbi/revox/resources/campaigns.rbi +30 -36
  69. data/sig/revox/models/assistant_clone_response.rbs +46 -54
  70. data/sig/revox/models/assistant_create_params.rbs +39 -58
  71. data/sig/revox/models/assistant_create_response.rbs +46 -54
  72. data/sig/revox/models/assistant_list_response.rbs +46 -54
  73. data/sig/revox/models/assistant_retrieve_response.rbs +46 -54
  74. data/sig/revox/models/assistant_update_params.rbs +39 -58
  75. data/sig/revox/models/assistant_update_response.rbs +46 -54
  76. data/sig/revox/models/call_create_params.rbs +50 -71
  77. data/sig/revox/models/call_create_response.rbs +468 -77
  78. data/sig/revox/models/call_export_params.rbs +2 -6
  79. data/sig/revox/models/call_phone_history_response.rbs +1 -10
  80. data/sig/revox/models/call_retrieve_response.rbs +468 -77
  81. data/sig/revox/models/call_search_params.rbs +2 -6
  82. data/sig/revox/models/call_search_response.rbs +468 -77
  83. data/sig/revox/models/campaign_create_params.rbs +5 -50
  84. data/sig/revox/models/campaign_create_response.rbs +62 -98
  85. data/sig/revox/models/campaign_get_rows_response.rbs +467 -73
  86. data/sig/revox/models/campaign_launch_params.rbs +215 -2
  87. data/sig/revox/models/campaign_launch_response.rbs +2721 -1219
  88. data/sig/revox/models/campaign_list_response.rbs +62 -98
  89. data/sig/revox/models/campaign_retrieve_response.rbs +62 -98
  90. data/sig/revox/models/campaign_statistics_response.rbs +55 -24
  91. data/sig/revox/models/campaign_update_params.rbs +1 -69
  92. data/sig/revox/models/campaign_update_response.rbs +62 -98
  93. data/sig/revox/models/phone_number_list_response.rbs +46 -54
  94. data/sig/revox/models/phone_number_update_response.rbs +46 -54
  95. data/sig/revox/models/voice_list_response.rbs +2 -1
  96. data/sig/revox/models/voice_preview_params.rbs +2 -1
  97. data/sig/revox/models/voice_retrieve_params.rbs +2 -1
  98. data/sig/revox/resources/assistants.rbs +4 -4
  99. data/sig/revox/resources/call.rbs +1 -1
  100. data/sig/revox/resources/campaigns.rbs +3 -7
  101. metadata +2 -2
@@ -27,17 +27,13 @@ module Revox
27
27
  optional :assistant_id, String
28
28
 
29
29
  # @!attribute concurrency
30
- # Limit the number of concurrent calls for a given concurrency key.
30
+ # Limit the number of concurrent calls for a given concurrency key. The limit
31
+ # itself is set server-side; omit this to leave the call ungrouped (bounded only
32
+ # by your organization's limit).
31
33
  #
32
34
  # @return [Revox::Models::CallCreateParams::Concurrency, nil]
33
35
  optional :concurrency, -> { Revox::CallCreateParams::Concurrency }
34
36
 
35
- # @!attribute force_now
36
- # The prompt to use for the call. This will be given to the LLM (gpt-4.1)
37
- #
38
- # @return [Boolean, nil]
39
- optional :force_now, Revox::Internal::Type::Boolean
40
-
41
37
  # @!attribute from_phone_number
42
38
  # The phone number to use for making the call (e.g., +1234567890). If not
43
39
  # provided, uses the default trunk.
@@ -66,7 +62,14 @@ module Revox
66
62
  # @return [Time, Object, nil]
67
63
  optional :scheduled_at, union: -> { Revox::CallCreateParams::ScheduledAt }
68
64
 
69
- # @!method initialize(phone_number:, assistant: nil, assistant_id: nil, concurrency: nil, force_now: nil, from_phone_number: nil, metadata: nil, prompt_variables: nil, scheduled_at: nil, request_options: {})
65
+ # @!attribute skip_calling_window
66
+ # Bypass the calling-window check for this call so it dials even outside the
67
+ # assistant's configured window. Use for immediate 'call now' dials.
68
+ #
69
+ # @return [Boolean, nil]
70
+ optional :skip_calling_window, Revox::Internal::Type::Boolean
71
+
72
+ # @!method initialize(phone_number:, assistant: nil, assistant_id: nil, concurrency: nil, from_phone_number: nil, metadata: nil, prompt_variables: nil, scheduled_at: nil, skip_calling_window: nil, request_options: {})
70
73
  # Some parameter documentations has been truncated, see
71
74
  # {Revox::Models::CallCreateParams} for more details.
72
75
  #
@@ -76,9 +79,7 @@ module Revox
76
79
  #
77
80
  # @param assistant_id [String] The ID of the assistant to use for this call.
78
81
  #
79
- # @param concurrency [Revox::Models::CallCreateParams::Concurrency] Limit the number of concurrent calls for a given concurrency key.
80
- #
81
- # @param force_now [Boolean] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
82
+ # @param concurrency [Revox::Models::CallCreateParams::Concurrency] Limit the number of concurrent calls for a given concurrency key. The limit itse
82
83
  #
83
84
  # @param from_phone_number [String] The phone number to use for making the call (e.g., +1234567890). If not provided
84
85
  #
@@ -88,6 +89,8 @@ module Revox
88
89
  #
89
90
  # @param scheduled_at [Time, Object] Schedule the call to start at a specific date and time (ISO 8601 format). If not
90
91
  #
92
+ # @param skip_calling_window [Boolean] Bypass the calling-window check for this call so it dials even outside the assis
93
+ #
91
94
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}]
92
95
 
93
96
  class Assistant < Revox::Internal::Type::BaseModel
@@ -168,14 +171,6 @@ module Revox
168
171
  # @return [String, nil]
169
172
  optional :email_notification_address, String, nil?: true
170
173
 
171
- # @!attribute email_notification_language
172
- # The language used for the notification email content. One of "en" or "fr".
173
- # Defaults to "en".
174
- #
175
- # @return [Symbol, Revox::Models::CallCreateParams::Assistant::EmailNotificationLanguage, nil]
176
- optional :email_notification_language,
177
- enum: -> { Revox::CallCreateParams::Assistant::EmailNotificationLanguage }
178
-
179
174
  # @!attribute email_notification_outcomes
180
175
  # Which call outcomes trigger an email notification. E.g. ["interested",
181
176
  # "completed", "none"]. Use "none" when outcome is null.
@@ -230,8 +225,8 @@ module Revox
230
225
  optional :from_phone_number, String, nil?: true
231
226
 
232
227
  # @!attribute human_transfer_mode
233
- # When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER;
234
- # trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
228
+ # When transfer_destinations is non-empty: "warm" (AI bridges) or "cold" (SIP
229
+ # REFER; trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
235
230
  #
236
231
  # @return [Symbol, Revox::Models::CallCreateParams::Assistant::HumanTransferMode, nil]
237
232
  optional :human_transfer_mode,
@@ -278,6 +273,16 @@ module Revox
278
273
  # @return [Revox::Models::CallCreateParams::Assistant::Position, nil]
279
274
  optional :position, -> { Revox::CallCreateParams::Assistant::Position }, nil?: true
280
275
 
276
+ # @!attribute precall_lookup_url
277
+ # Inbound calls only. URL fetched over HTTP GET right before the call is answered,
278
+ # with `{{phone}}` replaced by the caller's number in E.164 format (URL-encoded).
279
+ # It must return `{"prompt_variables": {...}}` covering every `{{variable}}` the
280
+ # assistant declares, otherwise the call is errored. Must be an http(s) URL
281
+ # containing `{{phone}}`. When null, no lookup is performed.
282
+ #
283
+ # @return [String, nil]
284
+ optional :precall_lookup_url, String, nil?: true
285
+
281
286
  # @!attribute prompt_flow
282
287
  # Visual prompt constructor data (nodes, edges, positions). Used by the UI to
283
288
  # re-open the visual editor. Does not affect call behavior — the flattened prompt
@@ -359,12 +364,18 @@ module Revox
359
364
  # @return [Float, nil]
360
365
  optional :thinking_sound_volume, Float
361
366
 
362
- # @!attribute transfer_phone_number
363
- # Phone number to transfer calls to when users request to speak to a human agent
364
- # in E.164 format (e.g. +1234567890).
367
+ # @!attribute transfer_destinations
368
+ # Where calls can be transferred to when users ask to speak to a human. With a
369
+ # single entry the assistant always transfers there; with several, it picks one at
370
+ # transfer time by applying the routing rules written in the assistant's own
371
+ # prompt (which refer to the destination labels). Empty or null disables transfer.
365
372
  #
366
- # @return [String, nil]
367
- optional :transfer_phone_number, String, nil?: true
373
+ # @return [Array<Revox::Models::CallCreateParams::Assistant::TransferDestination>, nil]
374
+ optional :transfer_destinations,
375
+ -> {
376
+ Revox::Internal::Type::ArrayOf[Revox::CallCreateParams::Assistant::TransferDestination]
377
+ },
378
+ nil?: true
368
379
 
369
380
  # @!attribute type
370
381
  # Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step'
@@ -418,7 +429,7 @@ module Revox
418
429
  # @return [Revox::Models::CallCreateParams::Assistant::Zoho, nil]
419
430
  optional :zoho, -> { Revox::CallCreateParams::Assistant::Zoho }, nil?: true
420
431
 
421
- # @!method initialize(prompt:, after_call_sms_outcomes: nil, after_call_sms_prompt: nil, background_sound: nil, background_sound_volume: nil, calendly: nil, call_retry_config: nil, cartesia_dictionary_pronunciation_id: nil, custom_tools: nil, email_notification_address: nil, email_notification_language: nil, email_notification_outcomes: nil, end_of_call_sentence: nil, faq_items: nil, first_sentence: nil, first_sentence_delay_ms: nil, first_sentence_mode: nil, from_phone_number: nil, human_transfer_mode: nil, ivr_navigation_enabled: nil, llm_model: nil, logo_url: nil, max_call_duration_secs: nil, max_duration_end_message: nil, position: nil, prompt_flow: nil, slack: nil, sms_enabled: nil, sms_template: nil, structured_output_config: nil, structured_output_prompt: nil, stt_context: nil, stt_model: nil, thinking_sound: nil, thinking_sound_probability: nil, thinking_sound_volume: nil, transfer_phone_number: nil, type: nil, voice: nil, voicemail_message: nil, voicemail_sms_prompt: nil, warm_transfer_summary_instructions: nil, webhook_url: nil, zoho: nil)
432
+ # @!method initialize(prompt:, after_call_sms_outcomes: nil, after_call_sms_prompt: nil, background_sound: nil, background_sound_volume: nil, calendly: nil, call_retry_config: nil, cartesia_dictionary_pronunciation_id: nil, custom_tools: nil, email_notification_address: nil, email_notification_outcomes: nil, end_of_call_sentence: nil, faq_items: nil, first_sentence: nil, first_sentence_delay_ms: nil, first_sentence_mode: nil, from_phone_number: nil, human_transfer_mode: nil, ivr_navigation_enabled: nil, llm_model: nil, logo_url: nil, max_call_duration_secs: nil, max_duration_end_message: nil, position: nil, precall_lookup_url: nil, prompt_flow: nil, slack: nil, sms_enabled: nil, sms_template: nil, structured_output_config: nil, structured_output_prompt: nil, stt_context: nil, stt_model: nil, thinking_sound: nil, thinking_sound_probability: nil, thinking_sound_volume: nil, transfer_destinations: nil, type: nil, voice: nil, voicemail_message: nil, voicemail_sms_prompt: nil, warm_transfer_summary_instructions: nil, webhook_url: nil, zoho: nil)
422
433
  # Some parameter documentations has been truncated, see
423
434
  # {Revox::Models::CallCreateParams::Assistant} for more details.
424
435
  #
@@ -445,8 +456,6 @@ module Revox
445
456
  #
446
457
  # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
447
458
  #
448
- # @param email_notification_language [Symbol, Revox::Models::CallCreateParams::Assistant::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr". Defau
449
- #
450
459
  # @param email_notification_outcomes [Array<Symbol, Revox::Models::CallCreateParams::Assistant::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
451
460
  #
452
461
  # @param end_of_call_sentence [String] Optional message to say when the agent decides to end the call.
@@ -461,7 +470,7 @@ module Revox
461
470
  #
462
471
  # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
463
472
  #
464
- # @param human_transfer_mode [Symbol, Revox::Models::CallCreateParams::Assistant::HumanTransferMode, nil] When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER; tru
473
+ # @param human_transfer_mode [Symbol, Revox::Models::CallCreateParams::Assistant::HumanTransferMode, nil] When transfer_destinations is non-empty: "warm" (AI bridges) or "cold" (SIP REFE
465
474
  #
466
475
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
467
476
  #
@@ -475,6 +484,8 @@ module Revox
475
484
  #
476
485
  # @param position [Revox::Models::CallCreateParams::Assistant::Position, nil] Canvas position of this assistant's node in its multi-step flow editor.
477
486
  #
487
+ # @param precall_lookup_url [String, nil] Inbound calls only. URL fetched over HTTP GET right before the call is answered,
488
+ #
478
489
  # @param prompt_flow [Revox::Models::CallCreateParams::Assistant::PromptFlow, nil] Visual prompt constructor data (nodes, edges, positions). Used by the UI to re-o
479
490
  #
480
491
  # @param slack [Revox::Models::CallCreateParams::Assistant::Slack, nil] Slack notification config. When set, posts a message to the chosen channel after
@@ -497,7 +508,7 @@ module Revox
497
508
  #
498
509
  # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
499
510
  #
500
- # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent i
511
+ # @param transfer_destinations [Array<Revox::Models::CallCreateParams::Assistant::TransferDestination>, nil] Where calls can be transferred to when users ask to speak to a human. With a sin
501
512
  #
502
513
  # @param type [Symbol, Revox::Models::CallCreateParams::Assistant::Type] Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step' orche
503
514
  #
@@ -520,9 +531,6 @@ module Revox
520
531
  INTERESTED = :interested
521
532
  COMPLETED = :completed
522
533
  REQUESTED_CALLBACK_LATER = :requested_callback_later
523
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
524
- DO_NOT_CONTACT = :do_not_contact
525
- AI_AVERSE = :ai_averse
526
534
  NONE = :none
527
535
 
528
536
  # @!method self.values
@@ -654,7 +662,8 @@ module Revox
654
662
  required :calling_window_start_time, String
655
663
 
656
664
  # @!attribute retry_delay_seconds
657
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
665
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
666
+ # allows. Default: 7200 (2 hours).
658
667
  #
659
668
  # @return [Integer]
660
669
  required :retry_delay_seconds, Integer
@@ -668,7 +677,7 @@ module Revox
668
677
  #
669
678
  # @param calling_window_start_time [String] Start time for the calling window in the recipient's timezone (or timezone_overr
670
679
  #
671
- # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. Default: 7200 (2 hours).
680
+ # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. 0 retries as soon as the calling window
672
681
  end
673
682
  end
674
683
 
@@ -851,20 +860,6 @@ module Revox
851
860
  end
852
861
  end
853
862
 
854
- # The language used for the notification email content. One of "en" or "fr".
855
- # Defaults to "en".
856
- #
857
- # @see Revox::Models::CallCreateParams::Assistant#email_notification_language
858
- module EmailNotificationLanguage
859
- extend Revox::Internal::Type::Enum
860
-
861
- EN = :en
862
- FR = :fr
863
-
864
- # @!method self.values
865
- # @return [Array<Symbol>]
866
- end
867
-
868
863
  module EmailNotificationOutcome
869
864
  extend Revox::Internal::Type::Enum
870
865
 
@@ -872,9 +867,6 @@ module Revox
872
867
  INTERESTED = :interested
873
868
  COMPLETED = :completed
874
869
  REQUESTED_CALLBACK_LATER = :requested_callback_later
875
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
876
- DO_NOT_CONTACT = :do_not_contact
877
- AI_AVERSE = :ai_averse
878
870
  NONE = :none
879
871
 
880
872
  # @!method self.values
@@ -914,8 +906,8 @@ module Revox
914
906
  # @return [Array<Symbol>]
915
907
  end
916
908
 
917
- # When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER;
918
- # trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
909
+ # When transfer_destinations is non-empty: "warm" (AI bridges) or "cold" (SIP
910
+ # REFER; trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
919
911
  #
920
912
  # @see Revox::Models::CallCreateParams::Assistant#human_transfer_mode
921
913
  module HumanTransferMode
@@ -1209,11 +1201,14 @@ module Revox
1209
1201
 
1210
1202
  # @see Revox::Models::CallCreateParams::Assistant#slack
1211
1203
  class Slack < Revox::Internal::Type::BaseModel
1212
- # @!attribute channel_id
1213
- # The Slack channel ID where the notification will be posted.
1204
+ # @!attribute channels
1205
+ # The Slack channels eligible to receive the notification. When more than one is
1206
+ # configured, the agent prompt may define routing rules to narrow it down per
1207
+ # call; with no such rules every channel here is notified.
1214
1208
  #
1215
- # @return [String]
1216
- required :channel_id, String
1209
+ # @return [Array<Revox::Models::CallCreateParams::Assistant::Slack::Channel>]
1210
+ required :channels,
1211
+ -> { Revox::Internal::Type::ArrayOf[Revox::CallCreateParams::Assistant::Slack::Channel] }
1217
1212
 
1218
1213
  # @!attribute connection_id
1219
1214
  # The Nango connection ID linking the org's Slack workspace to Revox.
@@ -1229,40 +1224,55 @@ module Revox
1229
1224
  required :outcomes,
1230
1225
  -> { Revox::Internal::Type::ArrayOf[enum: Revox::CallCreateParams::Assistant::Slack::Outcome] }
1231
1226
 
1232
- # @!attribute channel_name
1233
- # Human-readable Slack channel name, cached for display in the UI.
1234
- #
1235
- # @return [String, nil]
1236
- optional :channel_name, String, nil?: true
1237
-
1238
1227
  # @!attribute template
1239
1228
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1240
1229
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1241
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1242
- # prompt_variables and structured_output keys. When null/empty a default template
1243
- # is used.
1230
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
1231
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
1232
+ # null/empty a default template is used.
1244
1233
  #
1245
1234
  # @return [String, nil]
1246
1235
  optional :template, String, nil?: true
1247
1236
 
1248
- # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1237
+ # @!method initialize(channels:, connection_id:, outcomes:, template: nil)
1249
1238
  # Some parameter documentations has been truncated, see
1250
1239
  # {Revox::Models::CallCreateParams::Assistant::Slack} for more details.
1251
1240
  #
1252
1241
  # Slack notification config. When set, posts a message to the chosen channel after
1253
1242
  # a call ends with one of the configured outcomes.
1254
1243
  #
1255
- # @param channel_id [String] The Slack channel ID where the notification will be posted.
1244
+ # @param channels [Array<Revox::Models::CallCreateParams::Assistant::Slack::Channel>] The Slack channels eligible to receive the notification. When more than one is c
1256
1245
  #
1257
1246
  # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1258
1247
  #
1259
1248
  # @param outcomes [Array<Symbol, Revox::Models::CallCreateParams::Assistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1260
1249
  #
1261
- # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1262
- #
1263
1250
  # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1264
1251
  # {{call\_
1265
1252
 
1253
+ class Channel < Revox::Internal::Type::BaseModel
1254
+ # @!attribute id
1255
+ # The Slack channel ID (e.g. 'C01234567').
1256
+ #
1257
+ # @return [String]
1258
+ required :id, String
1259
+
1260
+ # @!attribute name
1261
+ # Human-readable Slack channel name, cached for display in the UI and given to the
1262
+ # LLM when the agent prompt routes by channel name.
1263
+ #
1264
+ # @return [String, nil]
1265
+ optional :name, String, nil?: true
1266
+
1267
+ # @!method initialize(id:, name: nil)
1268
+ # Some parameter documentations has been truncated, see
1269
+ # {Revox::Models::CallCreateParams::Assistant::Slack::Channel} for more details.
1270
+ #
1271
+ # @param id [String] The Slack channel ID (e.g. 'C01234567').
1272
+ #
1273
+ # @param name [String, nil] Human-readable Slack channel name, cached for display in the UI and given to the
1274
+ end
1275
+
1266
1276
  module Outcome
1267
1277
  extend Revox::Internal::Type::Enum
1268
1278
 
@@ -1270,9 +1280,6 @@ module Revox
1270
1280
  INTERESTED = :interested
1271
1281
  COMPLETED = :completed
1272
1282
  REQUESTED_CALLBACK_LATER = :requested_callback_later
1273
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1274
- DO_NOT_CONTACT = :do_not_contact
1275
- AI_AVERSE = :ai_averse
1276
1283
  NONE = :none
1277
1284
 
1278
1285
  # @!method self.values
@@ -1400,6 +1407,30 @@ module Revox
1400
1407
  # @return [Array<Symbol>]
1401
1408
  end
1402
1409
 
1410
+ class TransferDestination < Revox::Internal::Type::BaseModel
1411
+ # @!attribute label
1412
+ # Human-meaningful name for this destination (e.g. "Sales"). The assistant's
1413
+ # prompt refers to these labels when describing who to transfer to.
1414
+ #
1415
+ # @return [String]
1416
+ required :label, String
1417
+
1418
+ # @!attribute phone_number
1419
+ # Destination phone number in E.164 format (e.g. +1234567890).
1420
+ #
1421
+ # @return [String]
1422
+ required :phone_number, String
1423
+
1424
+ # @!method initialize(label:, phone_number:)
1425
+ # Some parameter documentations has been truncated, see
1426
+ # {Revox::Models::CallCreateParams::Assistant::TransferDestination} for more
1427
+ # details.
1428
+ #
1429
+ # @param label [String] Human-meaningful name for this destination (e.g. "Sales"). The assistant's promp
1430
+ #
1431
+ # @param phone_number [String] Destination phone number in E.164 format (e.g. +1234567890).
1432
+ end
1433
+
1403
1434
  # Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step'
1404
1435
  # orchestrates a flow of sub-assistants, 'sub-assistant' is a step inside a
1405
1436
  # multi-step flow (hidden from the assistants list). Flow transitions are managed
@@ -1440,7 +1471,7 @@ module Revox
1440
1471
 
1441
1472
  # @!attribute speed
1442
1473
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1443
- # 0.7–1.2. Default is 1.0.
1474
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
1444
1475
  #
1445
1476
  # @return [Float, nil]
1446
1477
  optional :speed, Float
@@ -1477,6 +1508,7 @@ module Revox
1477
1508
 
1478
1509
  CARTESIA = :cartesia
1479
1510
  ELEVENLABS = :elevenlabs
1511
+ GRADIUM = :gradium
1480
1512
 
1481
1513
  # @!method self.values
1482
1514
  # @return [Array<Symbol>]
@@ -1595,9 +1627,6 @@ module Revox
1595
1627
  INTERESTED = :interested
1596
1628
  COMPLETED = :completed
1597
1629
  REQUESTED_CALLBACK_LATER = :requested_callback_later
1598
- REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1599
- DO_NOT_CONTACT = :do_not_contact
1600
- AI_AVERSE = :ai_averse
1601
1630
  NONE = :none
1602
1631
 
1603
1632
  # @!method self.values
@@ -1608,23 +1637,21 @@ module Revox
1608
1637
 
1609
1638
  class Concurrency < Revox::Internal::Type::BaseModel
1610
1639
  # @!attribute key
1611
- # The key for which you want to limit the number of concurrent calls.
1640
+ # Groups this call with every other call sharing the same key, for concurrency
1641
+ # purposes.
1612
1642
  #
1613
1643
  # @return [String]
1614
1644
  required :key, String
1615
1645
 
1616
- # @!attribute max
1617
- # The maximum number of concurrent calls to allow for the given concurrency key.
1618
- #
1619
- # @return [Float]
1620
- required :max, Float
1621
-
1622
- # @!method initialize(key:, max:)
1623
- # Limit the number of concurrent calls for a given concurrency key.
1646
+ # @!method initialize(key:)
1647
+ # Some parameter documentations has been truncated, see
1648
+ # {Revox::Models::CallCreateParams::Concurrency} for more details.
1624
1649
  #
1625
- # @param key [String] The key for which you want to limit the number of concurrent calls.
1650
+ # Limit the number of concurrent calls for a given concurrency key. The limit
1651
+ # itself is set server-side; omit this to leave the call ungrouped (bounded only
1652
+ # by your organization's limit).
1626
1653
  #
1627
- # @param max [Float] The maximum number of concurrent calls to allow for the given concurrency key.
1654
+ # @param key [String] Groups this call with every other call sharing the same key, for concurrency pur
1628
1655
  end
1629
1656
 
1630
1657
  # Schedule the call to start at a specific date and time (ISO 8601 format). If not