revox 0.1.0 → 0.2.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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +71 -0
  3. data/README.md +39 -14
  4. data/lib/revox/client.rb +15 -1
  5. data/lib/revox/internal/transport/base_client.rb +5 -0
  6. data/lib/revox/internal/util.rb +22 -7
  7. data/lib/revox/models/assistant_create_params.rb +1038 -13
  8. data/lib/revox/models/assistant_create_response.rb +1071 -11
  9. data/lib/revox/models/assistant_list_response.rb +1070 -11
  10. data/lib/revox/models/assistant_retrieve_response.rb +1066 -11
  11. data/lib/revox/models/assistant_update_params.rb +1038 -13
  12. data/lib/revox/models/assistant_update_response.rb +1097 -12
  13. data/lib/revox/models/call_create_params.rb +1065 -13
  14. data/lib/revox/models/call_create_response.rb +1813 -101
  15. data/lib/revox/models/call_retrieve_response.rb +1815 -101
  16. data/lib/revox/models/campaign_create_params.rb +67 -2
  17. data/lib/revox/models/campaign_create_response.rb +1314 -59
  18. data/lib/revox/models/campaign_get_rows_params.rb +1 -46
  19. data/lib/revox/models/campaign_get_rows_response.rb +1837 -129
  20. data/lib/revox/models/campaign_list_response.rb +1312 -59
  21. data/lib/revox/models/campaign_retrieve_response.rb +1312 -56
  22. data/lib/revox/models/users/me_retrieve_response.rb +13 -1
  23. data/lib/revox/models/users/me_update_response.rb +13 -1
  24. data/lib/revox/models/voice_list_response.rb +55 -1
  25. data/lib/revox/models/voice_preview_params.rb +49 -1
  26. data/lib/revox/models.rb +0 -2
  27. data/lib/revox/resources/assistants.rb +116 -8
  28. data/lib/revox/resources/call.rb +0 -29
  29. data/lib/revox/resources/campaigns.rb +12 -17
  30. data/lib/revox/resources/voices.rb +16 -10
  31. data/lib/revox/version.rb +1 -1
  32. data/lib/revox.rb +0 -2
  33. data/rbi/revox/internal/util.rbi +8 -0
  34. data/rbi/revox/models/assistant_create_params.rbi +2138 -103
  35. data/rbi/revox/models/assistant_create_response.rbi +2454 -199
  36. data/rbi/revox/models/assistant_list_response.rbi +2448 -195
  37. data/rbi/revox/models/assistant_retrieve_response.rbi +2401 -210
  38. data/rbi/revox/models/assistant_update_params.rbi +2138 -103
  39. data/rbi/revox/models/assistant_update_response.rbi +2504 -198
  40. data/rbi/revox/models/call_create_params.rbi +2382 -225
  41. data/rbi/revox/models/call_create_response.rbi +4104 -384
  42. data/rbi/revox/models/call_retrieve_response.rbi +4104 -382
  43. data/rbi/revox/models/campaign_create_params.rbi +136 -0
  44. data/rbi/revox/models/campaign_create_response.rbi +2911 -231
  45. data/rbi/revox/models/campaign_get_rows_params.rbi +2 -82
  46. data/rbi/revox/models/campaign_get_rows_response.rbi +4135 -410
  47. data/rbi/revox/models/campaign_list_response.rbi +2904 -230
  48. data/rbi/revox/models/campaign_retrieve_response.rbi +2911 -231
  49. data/rbi/revox/models/users/me_retrieve_response.rbi +13 -3
  50. data/rbi/revox/models/users/me_update_response.rbi +13 -3
  51. data/rbi/revox/models/voice_list_response.rbi +105 -3
  52. data/rbi/revox/models/voice_preview_params.rbi +69 -0
  53. data/rbi/revox/models.rbi +0 -2
  54. data/rbi/revox/resources/assistants.rbi +284 -8
  55. data/rbi/revox/resources/call.rbi +0 -21
  56. data/rbi/revox/resources/campaigns.rbi +12 -19
  57. data/rbi/revox/resources/voices.rbi +17 -9
  58. data/sig/revox/internal/util.rbs +4 -0
  59. data/sig/revox/models/assistant_create_params.rbs +844 -11
  60. data/sig/revox/models/assistant_create_response.rbs +860 -3
  61. data/sig/revox/models/assistant_list_response.rbs +860 -3
  62. data/sig/revox/models/assistant_retrieve_response.rbs +859 -3
  63. data/sig/revox/models/assistant_update_params.rbs +844 -11
  64. data/sig/revox/models/assistant_update_response.rbs +886 -6
  65. data/sig/revox/models/call_create_params.rbs +847 -13
  66. data/sig/revox/models/call_create_response.rbs +1514 -34
  67. data/sig/revox/models/call_retrieve_response.rbs +1514 -34
  68. data/sig/revox/models/campaign_create_params.rbs +54 -0
  69. data/sig/revox/models/campaign_create_response.rbs +1034 -6
  70. data/sig/revox/models/campaign_get_rows_params.rbs +2 -64
  71. data/sig/revox/models/campaign_get_rows_response.rbs +1522 -54
  72. data/sig/revox/models/campaign_list_response.rbs +1034 -6
  73. data/sig/revox/models/campaign_retrieve_response.rbs +1034 -6
  74. data/sig/revox/models/users/me_retrieve_response.rbs +8 -3
  75. data/sig/revox/models/users/me_update_response.rbs +8 -3
  76. data/sig/revox/models/voice_list_response.rbs +45 -3
  77. data/sig/revox/models/voice_preview_params.rbs +42 -1
  78. data/sig/revox/models.rbs +0 -2
  79. data/sig/revox/resources/assistants.rbs +56 -2
  80. data/sig/revox/resources/call.rbs +0 -7
  81. data/sig/revox/resources/campaigns.rbs +2 -5
  82. data/sig/revox/resources/voices.rbs +4 -0
  83. metadata +2 -8
  84. data/lib/revox/models/call_list_params.rb +0 -52
  85. data/lib/revox/models/call_list_response.rb +0 -259
  86. data/rbi/revox/models/call_list_params.rbi +0 -94
  87. data/rbi/revox/models/call_list_response.rbi +0 -563
  88. data/sig/revox/models/call_list_params.rbs +0 -63
  89. data/sig/revox/models/call_list_response.rbs +0 -226
@@ -64,7 +64,17 @@ module Revox
64
64
  # @return [Object]
65
65
  required :updated_at, Revox::Internal::Type::Unknown
66
66
 
67
- # @!method initialize(id:, created_at:, email:, first_name:, has_completed_onboarding:, last_name:, organization_id:, updated_at:)
67
+ # @!attribute organization_country
68
+ # ISO 3166-1 alpha-2 country code of the organization (e.g. FR). Used as the
69
+ # default region when normalizing national-format phone numbers.
70
+ #
71
+ # @return [String, nil]
72
+ optional :organization_country, String, nil?: true
73
+
74
+ # @!method initialize(id:, created_at:, email:, first_name:, has_completed_onboarding:, last_name:, organization_id:, updated_at:, organization_country: nil)
75
+ # Some parameter documentations has been truncated, see
76
+ # {Revox::Models::Users::MeRetrieveResponse::User} for more details.
77
+ #
68
78
  # The current authenticated user.
69
79
  #
70
80
  # @param id [String] The unique identifier of the user.
@@ -82,6 +92,8 @@ module Revox
82
92
  # @param organization_id [String] The ID of the organization the user belongs to.
83
93
  #
84
94
  # @param updated_at [Object] The time the user was last updated.
95
+ #
96
+ # @param organization_country [String, nil] ISO 3166-1 alpha-2 country code of the organization (e.g. FR). Used as the defau
85
97
  end
86
98
  end
87
99
  end
@@ -64,7 +64,17 @@ module Revox
64
64
  # @return [Object]
65
65
  required :updated_at, Revox::Internal::Type::Unknown
66
66
 
67
- # @!method initialize(id:, created_at:, email:, first_name:, has_completed_onboarding:, last_name:, organization_id:, updated_at:)
67
+ # @!attribute organization_country
68
+ # ISO 3166-1 alpha-2 country code of the organization (e.g. FR). Used as the
69
+ # default region when normalizing national-format phone numbers.
70
+ #
71
+ # @return [String, nil]
72
+ optional :organization_country, String, nil?: true
73
+
74
+ # @!method initialize(id:, created_at:, email:, first_name:, has_completed_onboarding:, last_name:, organization_id:, updated_at:, organization_country: nil)
75
+ # Some parameter documentations has been truncated, see
76
+ # {Revox::Models::Users::MeUpdateResponse::User} for more details.
77
+ #
68
78
  # The current authenticated user.
69
79
  #
70
80
  # @param id [String] The unique identifier of the user.
@@ -82,6 +92,8 @@ module Revox
82
92
  # @param organization_id [String] The ID of the organization the user belongs to.
83
93
  #
84
94
  # @param updated_at [Object] The time the user was last updated.
95
+ #
96
+ # @param organization_country [String, nil] ISO 3166-1 alpha-2 country code of the organization (e.g. FR). Used as the defau
85
97
  end
86
98
  end
87
99
  end
@@ -43,7 +43,38 @@ module Revox
43
43
  # @return [Symbol, Revox::Models::VoiceListResponse::Voice::Provider]
44
44
  required :provider, enum: -> { Revox::Models::VoiceListResponse::Voice::Provider }
45
45
 
46
- # @!method initialize(id:, description:, language:, name:, provider:)
46
+ # @!attribute accent
47
+ # The accent/dialect of the voice (e.g. 'american', 'british', 'australian',
48
+ # 'quebec').
49
+ #
50
+ # @return [String, nil]
51
+ optional :accent, String
52
+
53
+ # @!attribute gender
54
+ # The gender of the voice (e.g. 'male', 'female', 'neutral').
55
+ #
56
+ # @return [String, nil]
57
+ optional :gender, String
58
+
59
+ # @!attribute is_cloned
60
+ # Whether this is a cloned voice.
61
+ #
62
+ # @return [Boolean, nil]
63
+ optional :is_cloned, Revox::Internal::Type::Boolean, api_name: :isCloned
64
+
65
+ # @!attribute model_compat
66
+ # Cartesia model compatibility. Used to filter the voice list by the selected
67
+ # model. Absent/undefined is treated as 'universal'.
68
+ #
69
+ # @return [Symbol, Revox::Models::VoiceListResponse::Voice::ModelCompat, nil]
70
+ optional :model_compat,
71
+ enum: -> { Revox::Models::VoiceListResponse::Voice::ModelCompat },
72
+ api_name: :modelCompat
73
+
74
+ # @!method initialize(id:, description:, language:, name:, provider:, accent: nil, gender: nil, is_cloned: nil, model_compat: nil)
75
+ # Some parameter documentations has been truncated, see
76
+ # {Revox::Models::VoiceListResponse::Voice} for more details.
77
+ #
47
78
  # @param id [String] The ID of the voice.
48
79
  #
49
80
  # @param description [String] The description of the voice.
@@ -53,6 +84,14 @@ module Revox
53
84
  # @param name [String] The name of the voice.
54
85
  #
55
86
  # @param provider [Symbol, Revox::Models::VoiceListResponse::Voice::Provider] The provider of the voice.
87
+ #
88
+ # @param accent [String] The accent/dialect of the voice (e.g. 'american', 'british', 'australian', 'queb
89
+ #
90
+ # @param gender [String] The gender of the voice (e.g. 'male', 'female', 'neutral').
91
+ #
92
+ # @param is_cloned [Boolean] Whether this is a cloned voice.
93
+ #
94
+ # @param model_compat [Symbol, Revox::Models::VoiceListResponse::Voice::ModelCompat] Cartesia model compatibility. Used to filter the voice list by the selected mode
56
95
 
57
96
  # The language of the voice.
58
97
  #
@@ -85,6 +124,21 @@ module Revox
85
124
  # @!method self.values
86
125
  # @return [Array<Symbol>]
87
126
  end
127
+
128
+ # Cartesia model compatibility. Used to filter the voice list by the selected
129
+ # model. Absent/undefined is treated as 'universal'.
130
+ #
131
+ # @see Revox::Models::VoiceListResponse::Voice#model_compat
132
+ module ModelCompat
133
+ extend Revox::Internal::Type::Enum
134
+
135
+ UNIVERSAL = :universal
136
+ SONIC_3 = :"sonic-3"
137
+ SONIC_3_5 = :"sonic-3.5"
138
+
139
+ # @!method self.values
140
+ # @return [Array<Symbol>]
141
+ end
88
142
  end
89
143
  end
90
144
  end
@@ -19,11 +19,47 @@ module Revox
19
19
  # @return [String]
20
20
  required :voice_id, String, api_name: :voiceId
21
21
 
22
- # @!method initialize(provider:, voice_id:, request_options: {})
22
+ # @!attribute model
23
+ # Cartesia model for the preview. Defaults to sonic-3. Ignored for other
24
+ # providers.
25
+ #
26
+ # @return [Symbol, Revox::Models::VoicePreviewParams::Model, nil]
27
+ optional :model, enum: -> { Revox::VoicePreviewParams::Model }
28
+
29
+ # @!attribute speed
30
+ # Speed for preview. Cartesia 0.6–1.5, ElevenLabs 0.7–1.2. Default 1.0.
31
+ #
32
+ # @return [Float, nil]
33
+ optional :speed, Float
34
+
35
+ # @!attribute text
36
+ # Custom text for the preview. If omitted, a short default is used.
37
+ #
38
+ # @return [String, nil]
39
+ optional :text, String
40
+
41
+ # @!attribute volume
42
+ # Volume for Cartesia preview (0.5–2.0). Ignored for other providers.
43
+ #
44
+ # @return [Float, nil]
45
+ optional :volume, Float
46
+
47
+ # @!method initialize(provider:, voice_id:, model: nil, speed: nil, text: nil, volume: nil, request_options: {})
48
+ # Some parameter documentations has been truncated, see
49
+ # {Revox::Models::VoicePreviewParams} for more details.
50
+ #
23
51
  # @param provider [Symbol, Revox::Models::VoicePreviewParams::Provider] The provider to use for the preview.
24
52
  #
25
53
  # @param voice_id [String] The voice ID to generate a preview for.
26
54
  #
55
+ # @param model [Symbol, Revox::Models::VoicePreviewParams::Model] Cartesia model for the preview. Defaults to sonic-3. Ignored for other providers
56
+ #
57
+ # @param speed [Float] Speed for preview. Cartesia 0.6–1.5, ElevenLabs 0.7–1.2. Default 1.0.
58
+ #
59
+ # @param text [String] Custom text for the preview. If omitted, a short default is used.
60
+ #
61
+ # @param volume [Float] Volume for Cartesia preview (0.5–2.0). Ignored for other providers.
62
+ #
27
63
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}]
28
64
 
29
65
  # The provider to use for the preview.
@@ -36,6 +72,18 @@ module Revox
36
72
  # @!method self.values
37
73
  # @return [Array<Symbol>]
38
74
  end
75
+
76
+ # Cartesia model for the preview. Defaults to sonic-3. Ignored for other
77
+ # providers.
78
+ module Model
79
+ extend Revox::Internal::Type::Enum
80
+
81
+ SONIC_3 = :"sonic-3"
82
+ SONIC_3_5 = :"sonic-3.5"
83
+
84
+ # @!method self.values
85
+ # @return [Array<Symbol>]
86
+ end
39
87
  end
40
88
  end
41
89
  end
data/lib/revox/models.rb CHANGED
@@ -51,8 +51,6 @@ module Revox
51
51
 
52
52
  CallCreateParams = Revox::Models::CallCreateParams
53
53
 
54
- CallListParams = Revox::Models::CallListParams
55
-
56
54
  CallRetrieveParams = Revox::Models::CallRetrieveParams
57
55
 
58
56
  CampaignCancelParams = Revox::Models::CampaignCancelParams
@@ -12,18 +12,34 @@ module Revox
12
12
  # voice provider and voice ID (Cartesia or ElevenLabs), and end-of-call behavior.
13
13
  # Once created, reference the assistant by its ID when placing calls.
14
14
  #
15
- # @overload create(name:, prompt:, background_sound: nil, calendly: nil, call_retry_config: nil, end_of_call_sentence: nil, faq_items: nil, first_sentence: nil, first_sentence_delay_ms: nil, first_sentence_mode: nil, ivr_navigation_enabled: nil, llm_model: nil, max_call_duration_secs: nil, structured_output_config: nil, transfer_phone_number: nil, voice: nil, voicemail_message: nil, webhook_url: nil, request_options: {})
15
+ # @overload create(name:, 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, request_options: {})
16
16
  #
17
17
  # @param name [String]
18
18
  #
19
19
  # @param prompt [String] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
20
20
  #
21
- # @param background_sound [Symbol, Revox::Models::AssistantCreateParams::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
21
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::AssistantCreateParams::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
22
22
  #
23
- # @param calendly [Revox::Models::AssistantCreateParams::Calendly]
23
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
24
+ #
25
+ # @param background_sound [Symbol, Revox::Models::AssistantCreateParams::BackgroundSound, nil] Ambient background sound to play during the call. null/omitted disables it.
26
+ #
27
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
28
+ #
29
+ # @param calendly [Revox::Models::AssistantCreateParams::Calendly, nil]
24
30
  #
25
31
  # @param call_retry_config [Revox::Models::AssistantCreateParams::CallRetryConfig] Configuration for call retry behavior including time windows, delays, and max it
26
32
  #
33
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID to use for this assistant's calls.
34
+ #
35
+ # @param custom_tools [Array<Revox::Models::AssistantCreateParams::CustomTool>, nil] Custom API tools the assistant can call during conversations. Each tool defines
36
+ #
37
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
38
+ #
39
+ # @param email_notification_language [Symbol, Revox::Models::AssistantCreateParams::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr". Defau
40
+ #
41
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::AssistantCreateParams::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
42
+ #
27
43
  # @param end_of_call_sentence [String] Optional message to say when the agent decides to end the call.
28
44
  #
29
45
  # @param faq_items [Array<Revox::Models::AssistantCreateParams::FaqItem>] FAQ items to associate with this assistant. When provided, replaces all existing
@@ -34,22 +50,60 @@ module Revox
34
50
  #
35
51
  # @param first_sentence_mode [Symbol, Revox::Models::AssistantCreateParams::FirstSentenceMode] How the first sentence should be handled. "generated" means the LLM will generat
36
52
  #
53
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
54
+ #
55
+ # @param human_transfer_mode [Symbol, Revox::Models::AssistantCreateParams::HumanTransferMode, nil] When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER; tru
56
+ #
37
57
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
38
58
  #
39
- # @param llm_model [Revox::Models::AssistantCreateParams::LlmModel::UnionMember0, Revox::Models::AssistantCreateParams::LlmModel::UnionMember1]
59
+ # @param llm_model [Revox::Models::AssistantCreateParams::LlmModel::UnionMember0, Revox::Models::AssistantCreateParams::LlmModel::UnionMember1, Revox::Models::AssistantCreateParams::LlmModel::UnionMember2, Revox::Models::AssistantCreateParams::LlmModel::UnionMember3]
60
+ #
61
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Upload a new lo
40
62
  #
41
63
  # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
42
64
  #
65
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
66
+ #
67
+ # @param position [Revox::Models::AssistantCreateParams::Position, nil] Canvas position of this assistant's node in its multi-step flow editor.
68
+ #
69
+ # @param prompt_flow [Revox::Models::AssistantCreateParams::PromptFlow, nil] Visual prompt constructor data (nodes, edges, positions). Used by the UI to re-o
70
+ #
71
+ # @param slack [Revox::Models::AssistantCreateParams::Slack, nil] Slack notification config. When set, posts a message to the chosen channel after
72
+ #
73
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
74
+ #
75
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
76
+ #
43
77
  # @param structured_output_config [Array<Revox::Models::AssistantCreateParams::StructuredOutputConfig>] The structured output config to use for the call. This is used to extract the da
44
78
  #
79
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
80
+ #
81
+ # @param stt_context [Revox::Models::AssistantCreateParams::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
82
+ #
83
+ # @param stt_model [Symbol, Revox::Models::AssistantCreateParams::SttModel] Transcriber (speech-to-text) model. Defaults to the newest Soniox realtime model
84
+ #
85
+ # @param thinking_sound [Symbol, Revox::Models::AssistantCreateParams::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
86
+ #
87
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
88
+ #
89
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
90
+ #
45
91
  # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent i
46
92
  #
93
+ # @param type [Symbol, Revox::Models::AssistantCreateParams::Type] Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step' orche
94
+ #
47
95
  # @param voice [Revox::Models::AssistantCreateParams::Voice] The voice to use for the call. You can get the list of voices using the /voices
48
96
  #
49
97
  # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
50
98
  #
99
+ # @param voicemail_sms_prompt [String, nil] SMS message to send when the call reaches voicemail. Supports {{variable}} place
100
+ #
101
+ # @param warm_transfer_summary_instructions [String, nil] When using warm transfer: extra instructions for the supervisor handoff summary.
102
+ #
51
103
  # @param webhook_url [String] The webhook URL to call when the call is completed.
52
104
  #
105
+ # @param zoho [Revox::Models::AssistantCreateParams::Zoho, nil] Zoho CRM integration config. When set, upserts the prospect (keyed on phone) int
106
+ #
53
107
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
54
108
  #
55
109
  # @return [Revox::Models::AssistantCreateResponse]
@@ -96,16 +150,32 @@ module Revox
96
150
  # the prompt, voice, first sentence, name, or any other assistant property without
97
151
  # affecting the rest of the configuration.
98
152
  #
99
- # @overload update(id, background_sound: nil, calendly: nil, call_retry_config: nil, end_of_call_sentence: nil, faq_items: nil, first_sentence: nil, first_sentence_delay_ms: nil, first_sentence_mode: nil, ivr_navigation_enabled: nil, llm_model: nil, max_call_duration_secs: nil, name: nil, prompt: nil, structured_output_config: nil, transfer_phone_number: nil, voice: nil, voicemail_message: nil, webhook_url: nil, request_options: {})
153
+ # @overload update(id, 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, name: nil, position: nil, prompt: 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, request_options: {})
100
154
  #
101
155
  # @param id [String]
102
156
  #
103
- # @param background_sound [Symbol, Revox::Models::AssistantUpdateParams::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
157
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::AssistantUpdateParams::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
104
158
  #
105
- # @param calendly [Revox::Models::AssistantUpdateParams::Calendly]
159
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
160
+ #
161
+ # @param background_sound [Symbol, Revox::Models::AssistantUpdateParams::BackgroundSound, nil] Ambient background sound to play during the call. null/omitted disables it.
162
+ #
163
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
164
+ #
165
+ # @param calendly [Revox::Models::AssistantUpdateParams::Calendly, nil]
106
166
  #
107
167
  # @param call_retry_config [Revox::Models::AssistantUpdateParams::CallRetryConfig] Configuration for call retry behavior including time windows, delays, and max it
108
168
  #
169
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID to use for this assistant's calls.
170
+ #
171
+ # @param custom_tools [Array<Revox::Models::AssistantUpdateParams::CustomTool>, nil] Custom API tools the assistant can call during conversations. Each tool defines
172
+ #
173
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
174
+ #
175
+ # @param email_notification_language [Symbol, Revox::Models::AssistantUpdateParams::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr". Defau
176
+ #
177
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::AssistantUpdateParams::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
178
+ #
109
179
  # @param end_of_call_sentence [String] Optional message to say when the agent decides to end the call.
110
180
  #
111
181
  # @param faq_items [Array<Revox::Models::AssistantUpdateParams::FaqItem>] FAQ items to associate with this assistant. When provided, replaces all existing
@@ -116,26 +186,64 @@ module Revox
116
186
  #
117
187
  # @param first_sentence_mode [Symbol, Revox::Models::AssistantUpdateParams::FirstSentenceMode] How the first sentence should be handled. "generated" means the LLM will generat
118
188
  #
189
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
190
+ #
191
+ # @param human_transfer_mode [Symbol, Revox::Models::AssistantUpdateParams::HumanTransferMode, nil] When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER; tru
192
+ #
119
193
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
120
194
  #
121
- # @param llm_model [Revox::Models::AssistantUpdateParams::LlmModel::UnionMember0, Revox::Models::AssistantUpdateParams::LlmModel::UnionMember1]
195
+ # @param llm_model [Revox::Models::AssistantUpdateParams::LlmModel::UnionMember0, Revox::Models::AssistantUpdateParams::LlmModel::UnionMember1, Revox::Models::AssistantUpdateParams::LlmModel::UnionMember2, Revox::Models::AssistantUpdateParams::LlmModel::UnionMember3]
196
+ #
197
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Upload a new lo
122
198
  #
123
199
  # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
124
200
  #
201
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
202
+ #
125
203
  # @param name [String]
126
204
  #
205
+ # @param position [Revox::Models::AssistantUpdateParams::Position, nil] Canvas position of this assistant's node in its multi-step flow editor.
206
+ #
127
207
  # @param prompt [String] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
128
208
  #
209
+ # @param prompt_flow [Revox::Models::AssistantUpdateParams::PromptFlow, nil] Visual prompt constructor data (nodes, edges, positions). Used by the UI to re-o
210
+ #
211
+ # @param slack [Revox::Models::AssistantUpdateParams::Slack, nil] Slack notification config. When set, posts a message to the chosen channel after
212
+ #
213
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
214
+ #
215
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
216
+ #
129
217
  # @param structured_output_config [Array<Revox::Models::AssistantUpdateParams::StructuredOutputConfig>] The structured output config to use for the call. This is used to extract the da
130
218
  #
219
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
220
+ #
221
+ # @param stt_context [Revox::Models::AssistantUpdateParams::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
222
+ #
223
+ # @param stt_model [Symbol, Revox::Models::AssistantUpdateParams::SttModel] Transcriber (speech-to-text) model. Defaults to the newest Soniox realtime model
224
+ #
225
+ # @param thinking_sound [Symbol, Revox::Models::AssistantUpdateParams::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
226
+ #
227
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
228
+ #
229
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
230
+ #
131
231
  # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent i
132
232
  #
233
+ # @param type [Symbol, Revox::Models::AssistantUpdateParams::Type] Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step' orche
234
+ #
133
235
  # @param voice [Revox::Models::AssistantUpdateParams::Voice] The voice to use for the call. You can get the list of voices using the /voices
134
236
  #
135
237
  # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
136
238
  #
239
+ # @param voicemail_sms_prompt [String, nil] SMS message to send when the call reaches voicemail. Supports {{variable}} place
240
+ #
241
+ # @param warm_transfer_summary_instructions [String, nil] When using warm transfer: extra instructions for the supervisor handoff summary.
242
+ #
137
243
  # @param webhook_url [String] The webhook URL to call when the call is completed.
138
244
  #
245
+ # @param zoho [Revox::Models::AssistantUpdateParams::Zoho, nil] Zoho CRM integration config. When set, upserts the prospect (keyed on phone) int
246
+ #
139
247
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
140
248
  #
141
249
  # @return [Revox::Models::AssistantUpdateResponse]
@@ -72,35 +72,6 @@ module Revox
72
72
  )
73
73
  end
74
74
 
75
- # Retrieve a paginated list of call attempts. Each entry includes the call status,
76
- # phone number, assistant used, transcript, and timestamps. Use the page and
77
- # page_size query parameters to navigate through results.
78
- #
79
- # @overload list(page:, page_size:, statuses: nil, request_options: {})
80
- #
81
- # @param page [Integer] The page number you want to get. Starting at 0.
82
- #
83
- # @param page_size [Integer] The number of calls to return per page.
84
- #
85
- # @param statuses [Array<Symbol, Revox::Models::CallListParams::Status>]
86
- #
87
- # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
88
- #
89
- # @return [Revox::Models::CallListResponse]
90
- #
91
- # @see Revox::Models::CallListParams
92
- def list(params)
93
- parsed, options = Revox::CallListParams.dump_request(params)
94
- query = Revox::Internal::Util.encode_query_params(parsed)
95
- @client.request(
96
- method: :get,
97
- path: "call",
98
- query: query,
99
- model: Revox::Models::CallListResponse,
100
- options: options
101
- )
102
- end
103
-
104
75
  # @api private
105
76
  #
106
77
  # @param client [Revox::Client]
@@ -6,18 +6,21 @@ module Revox
6
6
  # Some parameter documentations has been truncated, see
7
7
  # {Revox::Models::CampaignCreateParams} for more details.
8
8
  #
9
- # Create a new outbound calling campaign and launch it immediately. If
10
- # scheduled_at is set, all calls will be queued until the specified time instead
11
- # of starting right away.
9
+ # Create a new outbound calling campaign. By default the campaign launches
10
+ # immediately. Set launch to false to save as a draft for later review.
12
11
  #
13
- # @overload create(assistant_id:, contacts:, name:, call_retry_config: nil, from_phone_number: nil, max_concurrent_calls: nil, scheduled_at: nil, request_options: {})
12
+ # @overload create(assistant_id:, contacts:, launch:, name:, type:, call_retry_config: nil, from_phone_number: nil, max_concurrent_calls: nil, scheduled_at: nil, request_options: {})
14
13
  #
15
14
  # @param assistant_id [String] The ID of the assistant to use
16
15
  #
17
16
  # @param contacts [Array<Revox::Models::CampaignCreateParams::Contact>] The list of contacts to call
18
17
  #
18
+ # @param launch [Boolean] Whether to launch the campaign immediately. Set to false to save as a draft.
19
+ #
19
20
  # @param name [String] The name of the campaign
20
21
  #
22
+ # @param type [Symbol, Revox::Models::CampaignCreateParams::Type] Campaign type. 'jump_in' campaigns only dial while someone is on the campaign pa
23
+ #
21
24
  # @param call_retry_config [Revox::Models::CampaignCreateParams::CallRetryConfig] Override retry configuration for calls in this campaign. If not provided, uses t
22
25
  #
23
26
  # @param from_phone_number [String] The phone number to use for outbound calls (E.164 format, e.g., +1234567890)
@@ -142,31 +145,23 @@ module Revox
142
145
  )
143
146
  end
144
147
 
145
- # Retrieve a paginated list of rows (contacts) for a given campaign. Supports
146
- # filtering by text query, call statuses, and call result.
148
+ # Retrieve all contact rows for a campaign. Useful for loading draft campaign data
149
+ # for editing.
147
150
  #
148
- # @overload get_rows(id, page:, page_size:, query: nil, result: nil, statuses: nil, request_options: {})
151
+ # @overload get_rows(id, request_options: {})
149
152
  #
150
153
  # @param id [String]
151
- # @param page [Float]
152
- # @param page_size [Float]
153
- # @param query [String]
154
- # @param result [Symbol, Revox::Models::CampaignGetRowsParams::Result]
155
- # @param statuses [String]
156
154
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
157
155
  #
158
156
  # @return [Revox::Models::CampaignGetRowsResponse]
159
157
  #
160
158
  # @see Revox::Models::CampaignGetRowsParams
161
- def get_rows(id, params)
162
- parsed, options = Revox::CampaignGetRowsParams.dump_request(params)
163
- query = Revox::Internal::Util.encode_query_params(parsed)
159
+ def get_rows(id, params = {})
164
160
  @client.request(
165
161
  method: :get,
166
162
  path: ["campaigns/%1$s/rows", id],
167
- query: query,
168
163
  model: Revox::Models::CampaignGetRowsResponse,
169
- options: options
164
+ options: params[:request_options]
170
165
  )
171
166
  end
172
167
 
@@ -3,8 +3,7 @@
3
3
  module Revox
4
4
  module Resources
5
5
  class Voices
6
- # Retrieve details for a single voice by its unique ID and provider. Returns the
7
- # voice name, description, and provider metadata.
6
+ # Retrieve details for a single voice by its unique ID and provider.
8
7
  #
9
8
  # @overload retrieve(id, provider:, request_options: {})
10
9
  #
@@ -29,10 +28,8 @@ module Revox
29
28
  )
30
29
  end
31
30
 
32
- # Retrieve the full catalog of voices available for AI calls. The list includes
33
- # voices from Cartesia and ElevenLabs, each with a name, language, accent, and
34
- # provider-specific ID. Use this endpoint to browse voices before assigning one to
35
- # an assistant or a call.
31
+ # Retrieve all voices available for AI calls, including preset voices from
32
+ # Cartesia/ElevenLabs and your organization's cloned voices.
36
33
  #
37
34
  # @overload list(request_options: {})
38
35
  #
@@ -50,16 +47,25 @@ module Revox
50
47
  )
51
48
  end
52
49
 
53
- # Generate a short audio preview for a given voice. Provide the voice ID and
54
- # provider, and the API returns an audio/mpeg stream you can play back to hear how
55
- # the voice sounds before assigning it to an assistant.
50
+ # Some parameter documentations has been truncated, see
51
+ # {Revox::Models::VoicePreviewParams} for more details.
56
52
  #
57
- # @overload preview(provider:, voice_id:, request_options: {})
53
+ # Generate a short audio preview for a given voice.
54
+ #
55
+ # @overload preview(provider:, voice_id:, model: nil, speed: nil, text: nil, volume: nil, request_options: {})
58
56
  #
59
57
  # @param provider [Symbol, Revox::Models::VoicePreviewParams::Provider] The provider to use for the preview.
60
58
  #
61
59
  # @param voice_id [String] The voice ID to generate a preview for.
62
60
  #
61
+ # @param model [Symbol, Revox::Models::VoicePreviewParams::Model] Cartesia model for the preview. Defaults to sonic-3. Ignored for other providers
62
+ #
63
+ # @param speed [Float] Speed for preview. Cartesia 0.6–1.5, ElevenLabs 0.7–1.2. Default 1.0.
64
+ #
65
+ # @param text [String] Custom text for the preview. If omitted, a short default is used.
66
+ #
67
+ # @param volume [Float] Volume for Cartesia preview (0.5–2.0). Ignored for other providers.
68
+ #
63
69
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
64
70
  #
65
71
  # @return [nil]
data/lib/revox/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Revox
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/revox.rb CHANGED
@@ -64,8 +64,6 @@ require_relative "revox/models/assistant_update_params"
64
64
  require_relative "revox/models/assistant_update_response"
65
65
  require_relative "revox/models/call_create_params"
66
66
  require_relative "revox/models/call_create_response"
67
- require_relative "revox/models/call_list_params"
68
- require_relative "revox/models/call_list_response"
69
67
  require_relative "revox/models/call_retrieve_params"
70
68
  require_relative "revox/models/call_retrieve_response"
71
69
  require_relative "revox/models/campaign_cancel_params"
@@ -144,12 +144,20 @@ module Revox
144
144
  end
145
145
  end
146
146
 
147
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
148
+ RFC_3986_NOT_PCHARS = T.let(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/, Regexp)
149
+
147
150
  class << self
148
151
  # @api private
149
152
  sig { params(uri: URI::Generic).returns(String) }
150
153
  def uri_origin(uri)
151
154
  end
152
155
 
156
+ # @api private
157
+ sig { params(path: T.any(String, Integer)).returns(String) }
158
+ def encode_path(path)
159
+ end
160
+
153
161
  # @api private
154
162
  sig { params(path: T.any(String, T::Array[String])).returns(String) }
155
163
  def interpolate_path(path)