1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct AssistantOverrides {
16 #[serde(rename = "transcriber", skip_serializing_if = "Option::is_none")]
17 pub transcriber: Option<Box<models::CreateAssistantDtoTranscriber>>,
18 #[serde(rename = "model", skip_serializing_if = "Option::is_none")]
19 pub model: Option<Box<models::CreateAssistantDtoModel>>,
20 #[serde(rename = "voice", skip_serializing_if = "Option::is_none")]
21 pub voice: Option<Box<models::CreateAssistantDtoVoice>>,
22 #[serde(rename = "firstMessage", skip_serializing_if = "Option::is_none")]
24 pub first_message: Option<String>,
25 #[serde(rename = "firstMessageMode", skip_serializing_if = "Option::is_none")]
27 pub first_message_mode: Option<FirstMessageMode>,
28 #[serde(rename = "voicemailDetection", skip_serializing_if = "Option::is_none")]
29 pub voicemail_detection: Option<Box<models::CreateAssistantDtoVoicemailDetection>>,
30 #[serde(rename = "clientMessages", skip_serializing_if = "Option::is_none")]
32 pub client_messages: Option<Vec<ClientMessages>>,
33 #[serde(rename = "serverMessages", skip_serializing_if = "Option::is_none")]
35 pub server_messages: Option<Vec<ServerMessages>>,
36 #[serde(rename = "silenceTimeoutSeconds", skip_serializing_if = "Option::is_none")]
38 pub silence_timeout_seconds: Option<f64>,
39 #[serde(rename = "maxDurationSeconds", skip_serializing_if = "Option::is_none")]
41 pub max_duration_seconds: Option<f64>,
42 #[serde(rename = "backgroundSound", skip_serializing_if = "Option::is_none")]
44 pub background_sound: Option<BackgroundSound>,
45 #[serde(rename = "backgroundDenoisingEnabled", skip_serializing_if = "Option::is_none")]
47 pub background_denoising_enabled: Option<bool>,
48 #[serde(rename = "modelOutputInMessagesEnabled", skip_serializing_if = "Option::is_none")]
50 pub model_output_in_messages_enabled: Option<bool>,
51 #[serde(rename = "transportConfigurations", skip_serializing_if = "Option::is_none")]
53 pub transport_configurations: Option<Vec<models::CreateAssistantDtoTransportConfigurationsInner>>,
54 #[serde(rename = "observabilityPlan", skip_serializing_if = "Option::is_none")]
56 pub observability_plan: Option<Box<models::LangfuseObservabilityPlan>>,
57 #[serde(rename = "credentials", skip_serializing_if = "Option::is_none")]
59 pub credentials: Option<Vec<models::CreateAssistantDtoCredentialsInner>>,
60 #[serde(rename = "variableValues", skip_serializing_if = "Option::is_none")]
62 pub variable_values: Option<serde_json::Value>,
63 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
65 pub name: Option<String>,
66 #[serde(rename = "voicemailMessage", skip_serializing_if = "Option::is_none")]
68 pub voicemail_message: Option<String>,
69 #[serde(rename = "endCallMessage", skip_serializing_if = "Option::is_none")]
71 pub end_call_message: Option<String>,
72 #[serde(rename = "endCallPhrases", skip_serializing_if = "Option::is_none")]
74 pub end_call_phrases: Option<Vec<String>>,
75 #[serde(rename = "compliancePlan", skip_serializing_if = "Option::is_none")]
76 pub compliance_plan: Option<Box<models::CompliancePlan>>,
77 #[serde(rename = "metadata", skip_serializing_if = "Option::is_none")]
79 pub metadata: Option<serde_json::Value>,
80 #[serde(rename = "analysisPlan", skip_serializing_if = "Option::is_none")]
82 pub analysis_plan: Option<Box<models::AnalysisPlan>>,
83 #[serde(rename = "artifactPlan", skip_serializing_if = "Option::is_none")]
85 pub artifact_plan: Option<Box<models::ArtifactPlan>>,
86 #[serde(rename = "messagePlan", skip_serializing_if = "Option::is_none")]
88 pub message_plan: Option<Box<models::MessagePlan>>,
89 #[serde(rename = "startSpeakingPlan", skip_serializing_if = "Option::is_none")]
91 pub start_speaking_plan: Option<Box<models::StartSpeakingPlan>>,
92 #[serde(rename = "stopSpeakingPlan", skip_serializing_if = "Option::is_none")]
94 pub stop_speaking_plan: Option<Box<models::StopSpeakingPlan>>,
95 #[serde(rename = "monitorPlan", skip_serializing_if = "Option::is_none")]
97 pub monitor_plan: Option<Box<models::MonitorPlan>>,
98 #[serde(rename = "credentialIds", skip_serializing_if = "Option::is_none")]
100 pub credential_ids: Option<Vec<String>>,
101 #[serde(rename = "server", skip_serializing_if = "Option::is_none")]
103 pub server: Option<Box<models::Server>>,
104 #[serde(rename = "hooks", skip_serializing_if = "Option::is_none")]
106 pub hooks: Option<Vec<models::AssistantHooks>>,
107 #[serde(rename = "keypadInputPlan", skip_serializing_if = "Option::is_none")]
108 pub keypad_input_plan: Option<Box<models::KeypadInputPlan>>,
109}
110
111impl AssistantOverrides {
112 pub fn new() -> AssistantOverrides {
113 AssistantOverrides {
114 transcriber: None,
115 model: None,
116 voice: None,
117 first_message: None,
118 first_message_mode: None,
119 voicemail_detection: None,
120 client_messages: None,
121 server_messages: None,
122 silence_timeout_seconds: None,
123 max_duration_seconds: None,
124 background_sound: None,
125 background_denoising_enabled: None,
126 model_output_in_messages_enabled: None,
127 transport_configurations: None,
128 observability_plan: None,
129 credentials: None,
130 variable_values: None,
131 name: None,
132 voicemail_message: None,
133 end_call_message: None,
134 end_call_phrases: None,
135 compliance_plan: None,
136 metadata: None,
137 analysis_plan: None,
138 artifact_plan: None,
139 message_plan: None,
140 start_speaking_plan: None,
141 stop_speaking_plan: None,
142 monitor_plan: None,
143 credential_ids: None,
144 server: None,
145 hooks: None,
146 keypad_input_plan: None,
147 }
148 }
149}
150#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
152pub enum FirstMessageMode {
153 #[serde(rename = "assistant-speaks-first")]
154 AssistantSpeaksFirst,
155 #[serde(rename = "assistant-speaks-first-with-model-generated-message")]
156 AssistantSpeaksFirstWithModelGeneratedMessage,
157 #[serde(rename = "assistant-waits-for-user")]
158 AssistantWaitsForUser,
159}
160
161impl Default for FirstMessageMode {
162 fn default() -> FirstMessageMode {
163 Self::AssistantSpeaksFirst
164 }
165}
166#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
168pub enum ClientMessages {
169 #[serde(rename = "conversation-update")]
170 ConversationUpdate,
171 #[serde(rename = "function-call")]
172 FunctionCall,
173 #[serde(rename = "function-call-result")]
174 FunctionCallResult,
175 #[serde(rename = "hang")]
176 Hang,
177 #[serde(rename = "language-changed")]
178 LanguageChanged,
179 #[serde(rename = "metadata")]
180 Metadata,
181 #[serde(rename = "model-output")]
182 ModelOutput,
183 #[serde(rename = "speech-update")]
184 SpeechUpdate,
185 #[serde(rename = "status-update")]
186 StatusUpdate,
187 #[serde(rename = "transcript")]
188 Transcript,
189 #[serde(rename = "tool-calls")]
190 ToolCalls,
191 #[serde(rename = "tool-calls-result")]
192 ToolCallsResult,
193 #[serde(rename = "transfer-update")]
194 TransferUpdate,
195 #[serde(rename = "user-interrupted")]
196 UserInterrupted,
197 #[serde(rename = "voice-input")]
198 VoiceInput,
199}
200
201impl Default for ClientMessages {
202 fn default() -> ClientMessages {
203 Self::ConversationUpdate
204 }
205}
206#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
208pub enum ServerMessages {
209 #[serde(rename = "conversation-update")]
210 ConversationUpdate,
211 #[serde(rename = "end-of-call-report")]
212 EndOfCallReport,
213 #[serde(rename = "function-call")]
214 FunctionCall,
215 #[serde(rename = "hang")]
216 Hang,
217 #[serde(rename = "language-changed")]
218 LanguageChanged,
219 #[serde(rename = "language-change-detected")]
220 LanguageChangeDetected,
221 #[serde(rename = "model-output")]
222 ModelOutput,
223 #[serde(rename = "phone-call-control")]
224 PhoneCallControl,
225 #[serde(rename = "speech-update")]
226 SpeechUpdate,
227 #[serde(rename = "status-update")]
228 StatusUpdate,
229 #[serde(rename = "transcript")]
230 Transcript,
231 #[serde(rename = "transcript[transcriptType=\"final\"]")]
232 TranscriptLeftSquareBracketTranscriptTypeEqualDoubleQuoteFinalDoubleQuoteRightSquareBracket,
233 #[serde(rename = "tool-calls")]
234 ToolCalls,
235 #[serde(rename = "transfer-destination-request")]
236 TransferDestinationRequest,
237 #[serde(rename = "transfer-update")]
238 TransferUpdate,
239 #[serde(rename = "user-interrupted")]
240 UserInterrupted,
241 #[serde(rename = "voice-input")]
242 VoiceInput,
243}
244
245impl Default for ServerMessages {
246 fn default() -> ServerMessages {
247 Self::ConversationUpdate
248 }
249}
250#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
252pub enum BackgroundSound {
253 #[serde(rename = "off")]
254 Off,
255 #[serde(rename = "office")]
256 Office,
257}
258
259impl Default for BackgroundSound {
260 fn default() -> BackgroundSound {
261 Self::Off
262 }
263}
264