revox 0.0.2
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.
- checksums.yaml +7 -0
- data/.ignore +2 -0
- data/CHANGELOG.md +10 -0
- data/README.md +234 -0
- data/SECURITY.md +23 -0
- data/lib/revox/client.rb +86 -0
- data/lib/revox/errors.rb +228 -0
- data/lib/revox/file_part.rb +58 -0
- data/lib/revox/internal/transport/base_client.rb +570 -0
- data/lib/revox/internal/transport/pooled_net_requester.rb +210 -0
- data/lib/revox/internal/type/array_of.rb +168 -0
- data/lib/revox/internal/type/base_model.rb +529 -0
- data/lib/revox/internal/type/base_page.rb +55 -0
- data/lib/revox/internal/type/boolean.rb +77 -0
- data/lib/revox/internal/type/converter.rb +327 -0
- data/lib/revox/internal/type/enum.rb +131 -0
- data/lib/revox/internal/type/file_input.rb +110 -0
- data/lib/revox/internal/type/hash_of.rb +188 -0
- data/lib/revox/internal/type/request_parameters.rb +42 -0
- data/lib/revox/internal/type/union.rb +237 -0
- data/lib/revox/internal/type/unknown.rb +81 -0
- data/lib/revox/internal/util.rb +920 -0
- data/lib/revox/internal.rb +20 -0
- data/lib/revox/models/assistant_create_params.rb +467 -0
- data/lib/revox/models/assistant_create_response.rb +535 -0
- data/lib/revox/models/assistant_delete_params.rb +14 -0
- data/lib/revox/models/assistant_delete_response.rb +16 -0
- data/lib/revox/models/assistant_list_params.rb +14 -0
- data/lib/revox/models/assistant_list_response.rb +533 -0
- data/lib/revox/models/assistant_retrieve_params.rb +14 -0
- data/lib/revox/models/assistant_retrieve_response.rb +518 -0
- data/lib/revox/models/assistant_update_params.rb +467 -0
- data/lib/revox/models/assistant_update_response.rb +535 -0
- data/lib/revox/models/call_create_params.rb +592 -0
- data/lib/revox/models/call_create_response.rb +684 -0
- data/lib/revox/models/call_list_params.rb +29 -0
- data/lib/revox/models/call_list_response.rb +197 -0
- data/lib/revox/models/call_retrieve_params.rb +14 -0
- data/lib/revox/models/call_retrieve_response.rb +684 -0
- data/lib/revox/models/users/me_retrieve_params.rb +16 -0
- data/lib/revox/models/users/me_retrieve_response.rb +89 -0
- data/lib/revox/models/users/me_update_params.rb +22 -0
- data/lib/revox/models/users/me_update_response.rb +89 -0
- data/lib/revox/models/voice_list_params.rb +14 -0
- data/lib/revox/models/voice_list_response.rb +91 -0
- data/lib/revox/models/voice_preview_params.rb +49 -0
- data/lib/revox/models/voice_retrieve_params.rb +30 -0
- data/lib/revox/models/voice_retrieve_response.rb +39 -0
- data/lib/revox/models.rb +65 -0
- data/lib/revox/request_options.rb +77 -0
- data/lib/revox/resources/assistants.rb +180 -0
- data/lib/revox/resources/call.rb +100 -0
- data/lib/revox/resources/users/me.rb +55 -0
- data/lib/revox/resources/users.rb +18 -0
- data/lib/revox/resources/voices.rb +83 -0
- data/lib/revox/version.rb +5 -0
- data/lib/revox.rb +85 -0
- data/manifest.yaml +17 -0
- data/rbi/revox/client.rbi +58 -0
- data/rbi/revox/errors.rbi +205 -0
- data/rbi/revox/file_part.rbi +37 -0
- data/rbi/revox/internal/transport/base_client.rbi +297 -0
- data/rbi/revox/internal/transport/pooled_net_requester.rbi +82 -0
- data/rbi/revox/internal/type/array_of.rbi +104 -0
- data/rbi/revox/internal/type/base_model.rbi +299 -0
- data/rbi/revox/internal/type/base_page.rbi +42 -0
- data/rbi/revox/internal/type/boolean.rbi +58 -0
- data/rbi/revox/internal/type/converter.rbi +204 -0
- data/rbi/revox/internal/type/enum.rbi +82 -0
- data/rbi/revox/internal/type/file_input.rbi +58 -0
- data/rbi/revox/internal/type/hash_of.rbi +104 -0
- data/rbi/revox/internal/type/request_parameters.rbi +29 -0
- data/rbi/revox/internal/type/union.rbi +126 -0
- data/rbi/revox/internal/type/unknown.rbi +58 -0
- data/rbi/revox/internal/util.rbi +478 -0
- data/rbi/revox/internal.rbi +16 -0
- data/rbi/revox/models/assistant_create_params.rbi +929 -0
- data/rbi/revox/models/assistant_create_response.rbi +1089 -0
- data/rbi/revox/models/assistant_delete_params.rbi +27 -0
- data/rbi/revox/models/assistant_delete_response.rbi +26 -0
- data/rbi/revox/models/assistant_list_params.rbi +27 -0
- data/rbi/revox/models/assistant_list_response.rbi +1079 -0
- data/rbi/revox/models/assistant_retrieve_params.rbi +27 -0
- data/rbi/revox/models/assistant_retrieve_response.rbi +1024 -0
- data/rbi/revox/models/assistant_update_params.rbi +935 -0
- data/rbi/revox/models/assistant_update_response.rbi +1089 -0
- data/rbi/revox/models/call_create_params.rbi +1147 -0
- data/rbi/revox/models/call_create_response.rbi +1335 -0
- data/rbi/revox/models/call_list_params.rbi +47 -0
- data/rbi/revox/models/call_list_response.rbi +401 -0
- data/rbi/revox/models/call_retrieve_params.rbi +27 -0
- data/rbi/revox/models/call_retrieve_response.rbi +1346 -0
- data/rbi/revox/models/users/me_retrieve_params.rbi +29 -0
- data/rbi/revox/models/users/me_retrieve_response.rbi +139 -0
- data/rbi/revox/models/users/me_update_params.rbi +43 -0
- data/rbi/revox/models/users/me_update_response.rbi +139 -0
- data/rbi/revox/models/voice_list_params.rbi +25 -0
- data/rbi/revox/models/voice_list_response.rbi +204 -0
- data/rbi/revox/models/voice_preview_params.rbi +84 -0
- data/rbi/revox/models/voice_retrieve_params.rbi +59 -0
- data/rbi/revox/models/voice_retrieve_response.rbi +70 -0
- data/rbi/revox/models.rbi +27 -0
- data/rbi/revox/request_options.rbi +55 -0
- data/rbi/revox/resources/assistants.rbi +206 -0
- data/rbi/revox/resources/call.rbi +86 -0
- data/rbi/revox/resources/users/me.rbi +33 -0
- data/rbi/revox/resources/users.rbi +15 -0
- data/rbi/revox/resources/voices.rbi +58 -0
- data/rbi/revox/version.rbi +5 -0
- data/sig/revox/client.rbs +32 -0
- data/sig/revox/errors.rbs +117 -0
- data/sig/revox/file_part.rbs +21 -0
- data/sig/revox/internal/transport/base_client.rbs +133 -0
- data/sig/revox/internal/transport/pooled_net_requester.rbs +48 -0
- data/sig/revox/internal/type/array_of.rbs +48 -0
- data/sig/revox/internal/type/base_model.rbs +102 -0
- data/sig/revox/internal/type/base_page.rbs +24 -0
- data/sig/revox/internal/type/boolean.rbs +26 -0
- data/sig/revox/internal/type/converter.rbs +79 -0
- data/sig/revox/internal/type/enum.rbs +32 -0
- data/sig/revox/internal/type/file_input.rbs +25 -0
- data/sig/revox/internal/type/hash_of.rbs +48 -0
- data/sig/revox/internal/type/request_parameters.rbs +17 -0
- data/sig/revox/internal/type/union.rbs +52 -0
- data/sig/revox/internal/type/unknown.rbs +26 -0
- data/sig/revox/internal/util.rbs +185 -0
- data/sig/revox/internal.rbs +9 -0
- data/sig/revox/models/assistant_create_params.rbs +413 -0
- data/sig/revox/models/assistant_create_response.rbs +461 -0
- data/sig/revox/models/assistant_delete_params.rbs +15 -0
- data/sig/revox/models/assistant_delete_response.rbs +13 -0
- data/sig/revox/models/assistant_list_params.rbs +15 -0
- data/sig/revox/models/assistant_list_response.rbs +461 -0
- data/sig/revox/models/assistant_retrieve_params.rbs +15 -0
- data/sig/revox/models/assistant_retrieve_response.rbs +446 -0
- data/sig/revox/models/assistant_update_params.rbs +417 -0
- data/sig/revox/models/assistant_update_response.rbs +461 -0
- data/sig/revox/models/call_create_params.rbs +507 -0
- data/sig/revox/models/call_create_response.rbs +551 -0
- data/sig/revox/models/call_list_params.rbs +28 -0
- data/sig/revox/models/call_list_response.rbs +171 -0
- data/sig/revox/models/call_retrieve_params.rbs +14 -0
- data/sig/revox/models/call_retrieve_response.rbs +551 -0
- data/sig/revox/models/users/me_retrieve_params.rbs +16 -0
- data/sig/revox/models/users/me_retrieve_response.rbs +70 -0
- data/sig/revox/models/users/me_update_params.rbs +28 -0
- data/sig/revox/models/users/me_update_response.rbs +70 -0
- data/sig/revox/models/voice_list_params.rbs +14 -0
- data/sig/revox/models/voice_list_response.rbs +83 -0
- data/sig/revox/models/voice_preview_params.rbs +49 -0
- data/sig/revox/models/voice_retrieve_params.rbs +35 -0
- data/sig/revox/models/voice_retrieve_response.rbs +32 -0
- data/sig/revox/models.rbs +25 -0
- data/sig/revox/request_options.rbs +34 -0
- data/sig/revox/resources/assistants.rbs +66 -0
- data/sig/revox/resources/call.rbs +31 -0
- data/sig/revox/resources/users/me.rbs +18 -0
- data/sig/revox/resources/users.rbs +9 -0
- data/sig/revox/resources/voices.rbs +24 -0
- data/sig/revox/version.rbs +3 -0
- metadata +232 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Revox
|
|
4
|
+
module Resources
|
|
5
|
+
class Assistants
|
|
6
|
+
# Some parameter documentations has been truncated, see
|
|
7
|
+
# {Revox::Models::AssistantCreateParams} for more details.
|
|
8
|
+
#
|
|
9
|
+
# @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: {})
|
|
10
|
+
#
|
|
11
|
+
# @param name [String]
|
|
12
|
+
#
|
|
13
|
+
# @param prompt [String] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
|
|
14
|
+
#
|
|
15
|
+
# @param background_sound [Symbol, Revox::Models::AssistantCreateParams::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
|
|
16
|
+
#
|
|
17
|
+
# @param calendly [Revox::Models::AssistantCreateParams::Calendly, nil]
|
|
18
|
+
#
|
|
19
|
+
# @param call_retry_config [Revox::Models::AssistantCreateParams::CallRetryConfig] Configuration for call retry behavior including time windows, delays, and max it
|
|
20
|
+
#
|
|
21
|
+
# @param end_of_call_sentence [String] Optional message to say when the agent decides to end the call.
|
|
22
|
+
#
|
|
23
|
+
# @param faq_items [Array<Revox::Models::AssistantCreateParams::FaqItem>] FAQ items to associate with this assistant. When provided, replaces all existing
|
|
24
|
+
#
|
|
25
|
+
# @param first_sentence [String] The first sentence to use for the call. This will be given to the LLM
|
|
26
|
+
#
|
|
27
|
+
# @param first_sentence_delay_ms [Integer] Delay in milliseconds before speaking the first sentence. Default: 400.
|
|
28
|
+
#
|
|
29
|
+
# @param first_sentence_mode [Symbol, Revox::Models::AssistantCreateParams::FirstSentenceMode] How the first sentence should be handled. "generated" means the LLM will generat
|
|
30
|
+
#
|
|
31
|
+
# @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
32
|
+
#
|
|
33
|
+
# @param llm_model [Revox::Models::AssistantCreateParams::LlmModel::UnionMember0, Revox::Models::AssistantCreateParams::LlmModel::UnionMember1]
|
|
34
|
+
#
|
|
35
|
+
# @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
|
|
36
|
+
#
|
|
37
|
+
# @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
|
|
38
|
+
#
|
|
39
|
+
# @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent i
|
|
40
|
+
#
|
|
41
|
+
# @param voice [Revox::Models::AssistantCreateParams::Voice] The voice to use for the call. You can get the list of voices using the /voices
|
|
42
|
+
#
|
|
43
|
+
# @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
|
|
44
|
+
#
|
|
45
|
+
# @param webhook_url [String] The webhook URL to call when the call is completed.
|
|
46
|
+
#
|
|
47
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
48
|
+
#
|
|
49
|
+
# @return [Revox::Models::AssistantCreateResponse]
|
|
50
|
+
#
|
|
51
|
+
# @see Revox::Models::AssistantCreateParams
|
|
52
|
+
def create(params)
|
|
53
|
+
parsed, options = Revox::AssistantCreateParams.dump_request(params)
|
|
54
|
+
@client.request(
|
|
55
|
+
method: :post,
|
|
56
|
+
path: "assistants",
|
|
57
|
+
body: parsed,
|
|
58
|
+
model: Revox::Models::AssistantCreateResponse,
|
|
59
|
+
options: options
|
|
60
|
+
)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# @overload retrieve(id, request_options: {})
|
|
64
|
+
#
|
|
65
|
+
# @param id [String]
|
|
66
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
67
|
+
#
|
|
68
|
+
# @return [Revox::Models::AssistantRetrieveResponse]
|
|
69
|
+
#
|
|
70
|
+
# @see Revox::Models::AssistantRetrieveParams
|
|
71
|
+
def retrieve(id, params = {})
|
|
72
|
+
@client.request(
|
|
73
|
+
method: :get,
|
|
74
|
+
path: ["assistants/%1$s", id],
|
|
75
|
+
model: Revox::Models::AssistantRetrieveResponse,
|
|
76
|
+
options: params[:request_options]
|
|
77
|
+
)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Some parameter documentations has been truncated, see
|
|
81
|
+
# {Revox::Models::AssistantUpdateParams} for more details.
|
|
82
|
+
#
|
|
83
|
+
# @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: {})
|
|
84
|
+
#
|
|
85
|
+
# @param id [String]
|
|
86
|
+
#
|
|
87
|
+
# @param background_sound [Symbol, Revox::Models::AssistantUpdateParams::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
|
|
88
|
+
#
|
|
89
|
+
# @param calendly [Revox::Models::AssistantUpdateParams::Calendly, nil]
|
|
90
|
+
#
|
|
91
|
+
# @param call_retry_config [Revox::Models::AssistantUpdateParams::CallRetryConfig] Configuration for call retry behavior including time windows, delays, and max it
|
|
92
|
+
#
|
|
93
|
+
# @param end_of_call_sentence [String] Optional message to say when the agent decides to end the call.
|
|
94
|
+
#
|
|
95
|
+
# @param faq_items [Array<Revox::Models::AssistantUpdateParams::FaqItem>] FAQ items to associate with this assistant. When provided, replaces all existing
|
|
96
|
+
#
|
|
97
|
+
# @param first_sentence [String] The first sentence to use for the call. This will be given to the LLM
|
|
98
|
+
#
|
|
99
|
+
# @param first_sentence_delay_ms [Integer] Delay in milliseconds before speaking the first sentence. Default: 400.
|
|
100
|
+
#
|
|
101
|
+
# @param first_sentence_mode [Symbol, Revox::Models::AssistantUpdateParams::FirstSentenceMode] How the first sentence should be handled. "generated" means the LLM will generat
|
|
102
|
+
#
|
|
103
|
+
# @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
|
|
104
|
+
#
|
|
105
|
+
# @param llm_model [Revox::Models::AssistantUpdateParams::LlmModel::UnionMember0, Revox::Models::AssistantUpdateParams::LlmModel::UnionMember1]
|
|
106
|
+
#
|
|
107
|
+
# @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
|
|
108
|
+
#
|
|
109
|
+
# @param name [String]
|
|
110
|
+
#
|
|
111
|
+
# @param prompt [String] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
|
|
112
|
+
#
|
|
113
|
+
# @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
|
|
114
|
+
#
|
|
115
|
+
# @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent i
|
|
116
|
+
#
|
|
117
|
+
# @param voice [Revox::Models::AssistantUpdateParams::Voice] The voice to use for the call. You can get the list of voices using the /voices
|
|
118
|
+
#
|
|
119
|
+
# @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
|
|
120
|
+
#
|
|
121
|
+
# @param webhook_url [String] The webhook URL to call when the call is completed.
|
|
122
|
+
#
|
|
123
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
124
|
+
#
|
|
125
|
+
# @return [Revox::Models::AssistantUpdateResponse]
|
|
126
|
+
#
|
|
127
|
+
# @see Revox::Models::AssistantUpdateParams
|
|
128
|
+
def update(id, params = {})
|
|
129
|
+
parsed, options = Revox::AssistantUpdateParams.dump_request(params)
|
|
130
|
+
@client.request(
|
|
131
|
+
method: :patch,
|
|
132
|
+
path: ["assistants/%1$s", id],
|
|
133
|
+
body: parsed,
|
|
134
|
+
model: Revox::Models::AssistantUpdateResponse,
|
|
135
|
+
options: options
|
|
136
|
+
)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# @overload list(request_options: {})
|
|
140
|
+
#
|
|
141
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
142
|
+
#
|
|
143
|
+
# @return [Revox::Models::AssistantListResponse]
|
|
144
|
+
#
|
|
145
|
+
# @see Revox::Models::AssistantListParams
|
|
146
|
+
def list(params = {})
|
|
147
|
+
@client.request(
|
|
148
|
+
method: :get,
|
|
149
|
+
path: "assistants",
|
|
150
|
+
model: Revox::Models::AssistantListResponse,
|
|
151
|
+
options: params[:request_options]
|
|
152
|
+
)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# @overload delete(id, request_options: {})
|
|
156
|
+
#
|
|
157
|
+
# @param id [String]
|
|
158
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
159
|
+
#
|
|
160
|
+
# @return [Revox::Models::AssistantDeleteResponse]
|
|
161
|
+
#
|
|
162
|
+
# @see Revox::Models::AssistantDeleteParams
|
|
163
|
+
def delete(id, params = {})
|
|
164
|
+
@client.request(
|
|
165
|
+
method: :delete,
|
|
166
|
+
path: ["assistants/%1$s", id],
|
|
167
|
+
model: Revox::Models::AssistantDeleteResponse,
|
|
168
|
+
options: params[:request_options]
|
|
169
|
+
)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# @api private
|
|
173
|
+
#
|
|
174
|
+
# @param client [Revox::Client]
|
|
175
|
+
def initialize(client:)
|
|
176
|
+
@client = client
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Revox
|
|
4
|
+
module Resources
|
|
5
|
+
class Call
|
|
6
|
+
# Some parameter documentations has been truncated, see
|
|
7
|
+
# {Revox::Models::CallCreateParams} for more details.
|
|
8
|
+
#
|
|
9
|
+
# Place a new call order. A call order can be resolved over multiple call attempts
|
|
10
|
+
# spanning up to a few days.
|
|
11
|
+
#
|
|
12
|
+
# @overload create(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: {})
|
|
13
|
+
#
|
|
14
|
+
# @param phone_number [String] The phone number to call in the E.164 format. Example: +1234567890
|
|
15
|
+
#
|
|
16
|
+
# @param assistant [Revox::Models::CallCreateParams::Assistant] You can provide a custom assistant configuration here. If you don't provide an a
|
|
17
|
+
#
|
|
18
|
+
# @param assistant_id [String] The ID of the assistant to use for this call.
|
|
19
|
+
#
|
|
20
|
+
# @param concurrency [Revox::Models::CallCreateParams::Concurrency] Limit the number of concurrent calls for a given concurrency key.
|
|
21
|
+
#
|
|
22
|
+
# @param force_now [Boolean] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
|
|
23
|
+
#
|
|
24
|
+
# @param from_phone_number [String] The phone number to use for making the call (e.g., +1234567890). If not provided
|
|
25
|
+
#
|
|
26
|
+
# @param metadata [Hash{Symbol=>String}] Metadata to store with the call.
|
|
27
|
+
#
|
|
28
|
+
# @param prompt_variables [Hash{Symbol=>String}] Variables to interpolate into the prompt. Wether you use an assistant_id or an a
|
|
29
|
+
#
|
|
30
|
+
# @param scheduled_at [Time, Object] Schedule the call to start at a specific date and time (ISO 8601 format). If not
|
|
31
|
+
#
|
|
32
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
33
|
+
#
|
|
34
|
+
# @return [Revox::Models::CallCreateResponse]
|
|
35
|
+
#
|
|
36
|
+
# @see Revox::Models::CallCreateParams
|
|
37
|
+
def create(params)
|
|
38
|
+
parsed, options = Revox::CallCreateParams.dump_request(params)
|
|
39
|
+
@client.request(
|
|
40
|
+
method: :post,
|
|
41
|
+
path: "call",
|
|
42
|
+
body: parsed,
|
|
43
|
+
model: Revox::Models::CallCreateResponse,
|
|
44
|
+
options: options
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Get a call order by ID.
|
|
49
|
+
#
|
|
50
|
+
# @overload retrieve(id, request_options: {})
|
|
51
|
+
#
|
|
52
|
+
# @param id [String] The ID of the call to get.
|
|
53
|
+
#
|
|
54
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
55
|
+
#
|
|
56
|
+
# @return [Revox::Models::CallRetrieveResponse]
|
|
57
|
+
#
|
|
58
|
+
# @see Revox::Models::CallRetrieveParams
|
|
59
|
+
def retrieve(id, params = {})
|
|
60
|
+
@client.request(
|
|
61
|
+
method: :get,
|
|
62
|
+
path: ["call/%1$s", id],
|
|
63
|
+
model: Revox::Models::CallRetrieveResponse,
|
|
64
|
+
options: params[:request_options]
|
|
65
|
+
)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Get the list of call orders.
|
|
69
|
+
#
|
|
70
|
+
# @overload list(page:, page_size:, request_options: {})
|
|
71
|
+
#
|
|
72
|
+
# @param page [Float] The page number you want to get. Starting at 0.
|
|
73
|
+
#
|
|
74
|
+
# @param page_size [Float]
|
|
75
|
+
#
|
|
76
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
77
|
+
#
|
|
78
|
+
# @return [Revox::Models::CallListResponse]
|
|
79
|
+
#
|
|
80
|
+
# @see Revox::Models::CallListParams
|
|
81
|
+
def list(params)
|
|
82
|
+
parsed, options = Revox::CallListParams.dump_request(params)
|
|
83
|
+
@client.request(
|
|
84
|
+
method: :get,
|
|
85
|
+
path: "call",
|
|
86
|
+
query: parsed,
|
|
87
|
+
model: Revox::Models::CallListResponse,
|
|
88
|
+
options: options
|
|
89
|
+
)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# @api private
|
|
93
|
+
#
|
|
94
|
+
# @param client [Revox::Client]
|
|
95
|
+
def initialize(client:)
|
|
96
|
+
@client = client
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Revox
|
|
4
|
+
module Resources
|
|
5
|
+
class Users
|
|
6
|
+
class Me
|
|
7
|
+
# Get the current authenticated user.
|
|
8
|
+
#
|
|
9
|
+
# @overload retrieve(request_options: {})
|
|
10
|
+
#
|
|
11
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
12
|
+
#
|
|
13
|
+
# @return [Revox::Models::Users::MeRetrieveResponse]
|
|
14
|
+
#
|
|
15
|
+
# @see Revox::Models::Users::MeRetrieveParams
|
|
16
|
+
def retrieve(params = {})
|
|
17
|
+
@client.request(
|
|
18
|
+
method: :get,
|
|
19
|
+
path: "users/me",
|
|
20
|
+
model: Revox::Models::Users::MeRetrieveResponse,
|
|
21
|
+
options: params[:request_options]
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Update the current authenticated user.
|
|
26
|
+
#
|
|
27
|
+
# @overload update(has_completed_onboarding: nil, request_options: {})
|
|
28
|
+
#
|
|
29
|
+
# @param has_completed_onboarding [Boolean]
|
|
30
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
31
|
+
#
|
|
32
|
+
# @return [Revox::Models::Users::MeUpdateResponse]
|
|
33
|
+
#
|
|
34
|
+
# @see Revox::Models::Users::MeUpdateParams
|
|
35
|
+
def update(params = {})
|
|
36
|
+
parsed, options = Revox::Users::MeUpdateParams.dump_request(params)
|
|
37
|
+
@client.request(
|
|
38
|
+
method: :patch,
|
|
39
|
+
path: "users/me",
|
|
40
|
+
body: parsed,
|
|
41
|
+
model: Revox::Models::Users::MeUpdateResponse,
|
|
42
|
+
options: options
|
|
43
|
+
)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @api private
|
|
47
|
+
#
|
|
48
|
+
# @param client [Revox::Client]
|
|
49
|
+
def initialize(client:)
|
|
50
|
+
@client = client
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Revox
|
|
4
|
+
module Resources
|
|
5
|
+
class Users
|
|
6
|
+
# @return [Revox::Resources::Users::Me]
|
|
7
|
+
attr_reader :me
|
|
8
|
+
|
|
9
|
+
# @api private
|
|
10
|
+
#
|
|
11
|
+
# @param client [Revox::Client]
|
|
12
|
+
def initialize(client:)
|
|
13
|
+
@client = client
|
|
14
|
+
@me = Revox::Resources::Users::Me.new(client: client)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Revox
|
|
4
|
+
module Resources
|
|
5
|
+
class Voices
|
|
6
|
+
# Get a single voice by ID.
|
|
7
|
+
#
|
|
8
|
+
# @overload retrieve(id, provider:, request_options: {})
|
|
9
|
+
#
|
|
10
|
+
# @param id [String] The voice ID to get.
|
|
11
|
+
#
|
|
12
|
+
# @param provider [Symbol, Revox::Models::VoiceRetrieveParams::Provider]
|
|
13
|
+
#
|
|
14
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
15
|
+
#
|
|
16
|
+
# @return [Revox::Models::VoiceRetrieveResponse]
|
|
17
|
+
#
|
|
18
|
+
# @see Revox::Models::VoiceRetrieveParams
|
|
19
|
+
def retrieve(id, params)
|
|
20
|
+
parsed, options = Revox::VoiceRetrieveParams.dump_request(params)
|
|
21
|
+
@client.request(
|
|
22
|
+
method: :get,
|
|
23
|
+
path: ["voices/%1$s", id],
|
|
24
|
+
query: parsed,
|
|
25
|
+
model: Revox::Models::VoiceRetrieveResponse,
|
|
26
|
+
options: options
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Get the list of voices available for the call. Supports Cartesia, ElevenLabs,
|
|
31
|
+
# Inworld voices.
|
|
32
|
+
#
|
|
33
|
+
# @overload list(request_options: {})
|
|
34
|
+
#
|
|
35
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
36
|
+
#
|
|
37
|
+
# @return [Revox::Models::VoiceListResponse]
|
|
38
|
+
#
|
|
39
|
+
# @see Revox::Models::VoiceListParams
|
|
40
|
+
def list(params = {})
|
|
41
|
+
@client.request(
|
|
42
|
+
method: :get,
|
|
43
|
+
path: "voices",
|
|
44
|
+
model: Revox::Models::VoiceListResponse,
|
|
45
|
+
options: params[:request_options]
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Generate a voice preview audio sample for a given voice ID.
|
|
50
|
+
#
|
|
51
|
+
# @overload preview(provider:, voice_id:, text: nil, request_options: {})
|
|
52
|
+
#
|
|
53
|
+
# @param provider [Symbol, Revox::Models::VoicePreviewParams::Provider] The provider to use for the preview.
|
|
54
|
+
#
|
|
55
|
+
# @param voice_id [String] The voice ID to generate a preview for.
|
|
56
|
+
#
|
|
57
|
+
# @param text [String] The text to generate a preview for.
|
|
58
|
+
#
|
|
59
|
+
# @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
60
|
+
#
|
|
61
|
+
# @return [nil]
|
|
62
|
+
#
|
|
63
|
+
# @see Revox::Models::VoicePreviewParams
|
|
64
|
+
def preview(params)
|
|
65
|
+
parsed, options = Revox::VoicePreviewParams.dump_request(params)
|
|
66
|
+
@client.request(
|
|
67
|
+
method: :post,
|
|
68
|
+
path: "voices/preview",
|
|
69
|
+
body: parsed,
|
|
70
|
+
model: NilClass,
|
|
71
|
+
options: options
|
|
72
|
+
)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# @api private
|
|
76
|
+
#
|
|
77
|
+
# @param client [Revox::Client]
|
|
78
|
+
def initialize(client:)
|
|
79
|
+
@client = client
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
data/lib/revox.rb
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Standard libraries.
|
|
4
|
+
# rubocop:disable Lint/RedundantRequireStatement
|
|
5
|
+
require "English"
|
|
6
|
+
require "base64"
|
|
7
|
+
require "cgi"
|
|
8
|
+
require "date"
|
|
9
|
+
require "erb"
|
|
10
|
+
require "etc"
|
|
11
|
+
require "json"
|
|
12
|
+
require "net/http"
|
|
13
|
+
require "openssl"
|
|
14
|
+
require "pathname"
|
|
15
|
+
require "rbconfig"
|
|
16
|
+
require "securerandom"
|
|
17
|
+
require "set"
|
|
18
|
+
require "stringio"
|
|
19
|
+
require "time"
|
|
20
|
+
require "uri"
|
|
21
|
+
# rubocop:enable Lint/RedundantRequireStatement
|
|
22
|
+
|
|
23
|
+
# We already ship the preferred sorbet manifests in the package itself.
|
|
24
|
+
# `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
|
|
25
|
+
if Object.const_defined?(:Tapioca) &&
|
|
26
|
+
caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
|
|
27
|
+
ARGV.none?(/dsl/)
|
|
28
|
+
return
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Gems.
|
|
32
|
+
require "connection_pool"
|
|
33
|
+
|
|
34
|
+
# Package files.
|
|
35
|
+
require_relative "revox/version"
|
|
36
|
+
require_relative "revox/internal/util"
|
|
37
|
+
require_relative "revox/internal/type/converter"
|
|
38
|
+
require_relative "revox/internal/type/unknown"
|
|
39
|
+
require_relative "revox/internal/type/boolean"
|
|
40
|
+
require_relative "revox/internal/type/file_input"
|
|
41
|
+
require_relative "revox/internal/type/enum"
|
|
42
|
+
require_relative "revox/internal/type/union"
|
|
43
|
+
require_relative "revox/internal/type/array_of"
|
|
44
|
+
require_relative "revox/internal/type/hash_of"
|
|
45
|
+
require_relative "revox/internal/type/base_model"
|
|
46
|
+
require_relative "revox/internal/type/base_page"
|
|
47
|
+
require_relative "revox/internal/type/request_parameters"
|
|
48
|
+
require_relative "revox/internal"
|
|
49
|
+
require_relative "revox/request_options"
|
|
50
|
+
require_relative "revox/file_part"
|
|
51
|
+
require_relative "revox/errors"
|
|
52
|
+
require_relative "revox/internal/transport/base_client"
|
|
53
|
+
require_relative "revox/internal/transport/pooled_net_requester"
|
|
54
|
+
require_relative "revox/client"
|
|
55
|
+
require_relative "revox/models/assistant_create_params"
|
|
56
|
+
require_relative "revox/models/assistant_create_response"
|
|
57
|
+
require_relative "revox/models/assistant_delete_params"
|
|
58
|
+
require_relative "revox/models/assistant_delete_response"
|
|
59
|
+
require_relative "revox/models/assistant_list_params"
|
|
60
|
+
require_relative "revox/models/assistant_list_response"
|
|
61
|
+
require_relative "revox/models/assistant_retrieve_params"
|
|
62
|
+
require_relative "revox/models/assistant_retrieve_response"
|
|
63
|
+
require_relative "revox/models/assistant_update_params"
|
|
64
|
+
require_relative "revox/models/assistant_update_response"
|
|
65
|
+
require_relative "revox/models/call_create_params"
|
|
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
|
+
require_relative "revox/models/call_retrieve_params"
|
|
70
|
+
require_relative "revox/models/call_retrieve_response"
|
|
71
|
+
require_relative "revox/models/users/me_retrieve_params"
|
|
72
|
+
require_relative "revox/models/users/me_retrieve_response"
|
|
73
|
+
require_relative "revox/models/users/me_update_params"
|
|
74
|
+
require_relative "revox/models/users/me_update_response"
|
|
75
|
+
require_relative "revox/models/voice_list_params"
|
|
76
|
+
require_relative "revox/models/voice_list_response"
|
|
77
|
+
require_relative "revox/models/voice_preview_params"
|
|
78
|
+
require_relative "revox/models/voice_retrieve_params"
|
|
79
|
+
require_relative "revox/models/voice_retrieve_response"
|
|
80
|
+
require_relative "revox/models"
|
|
81
|
+
require_relative "revox/resources/assistants"
|
|
82
|
+
require_relative "revox/resources/call"
|
|
83
|
+
require_relative "revox/resources/users"
|
|
84
|
+
require_relative "revox/resources/users/me"
|
|
85
|
+
require_relative "revox/resources/voices"
|
data/manifest.yaml
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Revox
|
|
4
|
+
class Client < Revox::Internal::Transport::BaseClient
|
|
5
|
+
DEFAULT_MAX_RETRIES = 2
|
|
6
|
+
|
|
7
|
+
DEFAULT_TIMEOUT_IN_SECONDS = T.let(60.0, Float)
|
|
8
|
+
|
|
9
|
+
DEFAULT_INITIAL_RETRY_DELAY = T.let(0.5, Float)
|
|
10
|
+
|
|
11
|
+
DEFAULT_MAX_RETRY_DELAY = T.let(8.0, Float)
|
|
12
|
+
|
|
13
|
+
sig { returns(String) }
|
|
14
|
+
attr_reader :api_key
|
|
15
|
+
|
|
16
|
+
sig { returns(Revox::Resources::Assistants) }
|
|
17
|
+
attr_reader :assistants
|
|
18
|
+
|
|
19
|
+
sig { returns(Revox::Resources::Call) }
|
|
20
|
+
attr_reader :call
|
|
21
|
+
|
|
22
|
+
sig { returns(Revox::Resources::Voices) }
|
|
23
|
+
attr_reader :voices
|
|
24
|
+
|
|
25
|
+
sig { returns(Revox::Resources::Users) }
|
|
26
|
+
attr_reader :users
|
|
27
|
+
|
|
28
|
+
# @api private
|
|
29
|
+
sig { override.returns(T::Hash[String, String]) }
|
|
30
|
+
private def auth_headers
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Creates and returns a new client for interacting with the API.
|
|
34
|
+
sig do
|
|
35
|
+
params(
|
|
36
|
+
api_key: T.nilable(String),
|
|
37
|
+
base_url: T.nilable(String),
|
|
38
|
+
max_retries: Integer,
|
|
39
|
+
timeout: Float,
|
|
40
|
+
initial_retry_delay: Float,
|
|
41
|
+
max_retry_delay: Float
|
|
42
|
+
).returns(T.attached_class)
|
|
43
|
+
end
|
|
44
|
+
def self.new(
|
|
45
|
+
# Defaults to `ENV["REVOX_API_KEY"]`
|
|
46
|
+
api_key: ENV["REVOX_API_KEY"],
|
|
47
|
+
# Override the default base URL for the API, e.g.,
|
|
48
|
+
# `"https://api.example.com/v2/"`. Defaults to `ENV["REVOX_BASE_URL"]`
|
|
49
|
+
base_url: ENV["REVOX_BASE_URL"],
|
|
50
|
+
# Max number of retries to attempt after a failed retryable request.
|
|
51
|
+
max_retries: Revox::Client::DEFAULT_MAX_RETRIES,
|
|
52
|
+
timeout: Revox::Client::DEFAULT_TIMEOUT_IN_SECONDS,
|
|
53
|
+
initial_retry_delay: Revox::Client::DEFAULT_INITIAL_RETRY_DELAY,
|
|
54
|
+
max_retry_delay: Revox::Client::DEFAULT_MAX_RETRY_DELAY
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|