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<models::CreateAssistantDtoTranscriber>,
18 #[serde(rename = "model", skip_serializing_if = "Option::is_none")]
19 pub model: Option<models::CreateAssistantDtoModel>,
20 #[serde(rename = "voice", skip_serializing_if = "Option::is_none")]
21 pub voice: Option<models::CreateAssistantDtoVoice>,
22 #[serde(rename = "firstMessage", skip_serializing_if = "Option::is_none")]
24 pub first_message: Option<String>,
25 #[serde(
26 rename = "firstMessageInterruptionsEnabled",
27 skip_serializing_if = "Option::is_none"
28 )]
29 pub first_message_interruptions_enabled: Option<bool>,
30 #[serde(rename = "firstMessageMode", skip_serializing_if = "Option::is_none")]
32 pub first_message_mode: Option<FirstMessageModeTrue>,
33 #[serde(rename = "voicemailDetection", skip_serializing_if = "Option::is_none")]
34 pub voicemail_detection: Option<models::CreateAssistantDtoVoicemailDetection>,
35 #[serde(rename = "clientMessages", skip_serializing_if = "Option::is_none")]
37 pub client_messages: Option<Vec<ClientMessagesTrue>>,
38 #[serde(rename = "serverMessages", skip_serializing_if = "Option::is_none")]
40 pub server_messages: Option<Vec<ServerMessagesTrue>>,
41 #[serde(
43 rename = "silenceTimeoutSeconds",
44 skip_serializing_if = "Option::is_none"
45 )]
46 pub silence_timeout_seconds: Option<f64>,
47 #[serde(rename = "maxDurationSeconds", skip_serializing_if = "Option::is_none")]
49 pub max_duration_seconds: Option<f64>,
50 #[serde(rename = "backgroundSound", skip_serializing_if = "Option::is_none")]
51 pub background_sound: Option<models::CreateAssistantDtoBackgroundSound>,
52 #[serde(
54 rename = "backgroundDenoisingEnabled",
55 skip_serializing_if = "Option::is_none"
56 )]
57 pub background_denoising_enabled: Option<bool>,
58 #[serde(
60 rename = "modelOutputInMessagesEnabled",
61 skip_serializing_if = "Option::is_none"
62 )]
63 pub model_output_in_messages_enabled: Option<bool>,
64 #[serde(
66 rename = "transportConfigurations",
67 skip_serializing_if = "Option::is_none"
68 )]
69 pub transport_configurations:
70 Option<Vec<models::CreateAssistantDtoTransportConfigurationsInner>>,
71 #[serde(rename = "observabilityPlan", skip_serializing_if = "Option::is_none")]
73 pub observability_plan: Option<models::LangfuseObservabilityPlan>,
74 #[serde(rename = "credentials", skip_serializing_if = "Option::is_none")]
76 pub credentials: Option<Vec<models::WorkflowUserEditableCredentialsInner>>,
77 #[serde(rename = "hooks", skip_serializing_if = "Option::is_none")]
79 pub hooks: Option<Vec<models::CreateAssistantDtoHooksInner>>,
80 #[serde(rename = "variableValues", skip_serializing_if = "Option::is_none")]
82 pub variable_values: Option<serde_json::Value>,
83 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
85 pub name: Option<String>,
86 #[serde(rename = "voicemailMessage", skip_serializing_if = "Option::is_none")]
88 pub voicemail_message: Option<String>,
89 #[serde(rename = "endCallMessage", skip_serializing_if = "Option::is_none")]
91 pub end_call_message: Option<String>,
92 #[serde(rename = "endCallPhrases", skip_serializing_if = "Option::is_none")]
94 pub end_call_phrases: Option<Vec<String>>,
95 #[serde(rename = "compliancePlan", skip_serializing_if = "Option::is_none")]
96 pub compliance_plan: Option<models::CompliancePlan>,
97 #[serde(rename = "metadata", skip_serializing_if = "Option::is_none")]
99 pub metadata: Option<serde_json::Value>,
100 #[serde(
102 rename = "backgroundSpeechDenoisingPlan",
103 skip_serializing_if = "Option::is_none"
104 )]
105 pub background_speech_denoising_plan: Option<models::BackgroundSpeechDenoisingPlan>,
106 #[serde(rename = "analysisPlan", skip_serializing_if = "Option::is_none")]
108 pub analysis_plan: Option<models::AnalysisPlan>,
109 #[serde(rename = "artifactPlan", skip_serializing_if = "Option::is_none")]
111 pub artifact_plan: Option<models::ArtifactPlan>,
112 #[serde(rename = "messagePlan", skip_serializing_if = "Option::is_none")]
114 pub message_plan: Option<models::MessagePlan>,
115 #[serde(rename = "startSpeakingPlan", skip_serializing_if = "Option::is_none")]
117 pub start_speaking_plan: Option<models::StartSpeakingPlan>,
118 #[serde(rename = "stopSpeakingPlan", skip_serializing_if = "Option::is_none")]
120 pub stop_speaking_plan: Option<models::StopSpeakingPlan>,
121 #[serde(rename = "monitorPlan", skip_serializing_if = "Option::is_none")]
123 pub monitor_plan: Option<models::MonitorPlan>,
124 #[serde(rename = "credentialIds", skip_serializing_if = "Option::is_none")]
126 pub credential_ids: Option<Vec<String>>,
127 #[serde(rename = "server", skip_serializing_if = "Option::is_none")]
129 pub server: Option<models::Server>,
130 #[serde(rename = "keypadInputPlan", skip_serializing_if = "Option::is_none")]
131 pub keypad_input_plan: Option<models::KeypadInputPlan>,
132}
133
134impl AssistantOverrides {
135 pub fn new() -> AssistantOverrides {
136 AssistantOverrides {
137 transcriber: None,
138 model: None,
139 voice: None,
140 first_message: None,
141 first_message_interruptions_enabled: None,
142 first_message_mode: None,
143 voicemail_detection: None,
144 client_messages: None,
145 server_messages: None,
146 silence_timeout_seconds: None,
147 max_duration_seconds: None,
148 background_sound: None,
149 background_denoising_enabled: None,
150 model_output_in_messages_enabled: None,
151 transport_configurations: None,
152 observability_plan: None,
153 credentials: None,
154 hooks: None,
155 variable_values: None,
156 name: None,
157 voicemail_message: None,
158 end_call_message: None,
159 end_call_phrases: None,
160 compliance_plan: None,
161 metadata: None,
162 background_speech_denoising_plan: None,
163 analysis_plan: None,
164 artifact_plan: None,
165 message_plan: None,
166 start_speaking_plan: None,
167 stop_speaking_plan: None,
168 monitor_plan: None,
169 credential_ids: None,
170 server: None,
171 keypad_input_plan: None,
172 }
173 }
174}
175#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
177pub enum FirstMessageModeTrue {
178 #[serde(rename = "assistant-speaks-first")]
179 AssistantSpeaksFirst,
180 #[serde(rename = "assistant-speaks-first-with-model-generated-message")]
181 AssistantSpeaksFirstWithModelGeneratedMessage,
182 #[serde(rename = "assistant-waits-for-user")]
183 AssistantWaitsForUser,
184}
185
186impl Default for FirstMessageModeTrue {
187 fn default() -> FirstMessageModeTrue {
188 Self::AssistantSpeaksFirst
189 }
190}
191#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
193pub enum ClientMessagesTrue {
194 #[serde(rename = "conversation-update")]
195 ConversationUpdate,
196 #[serde(rename = "function-call")]
197 FunctionCall,
198 #[serde(rename = "function-call-result")]
199 FunctionCallResult,
200 #[serde(rename = "hang")]
201 Hang,
202 #[serde(rename = "language-changed")]
203 LanguageChanged,
204 #[serde(rename = "metadata")]
205 Metadata,
206 #[serde(rename = "model-output")]
207 ModelOutput,
208 #[serde(rename = "speech-update")]
209 SpeechUpdate,
210 #[serde(rename = "status-update")]
211 StatusUpdate,
212 #[serde(rename = "transcript")]
213 Transcript,
214 #[serde(rename = "tool-calls")]
215 ToolCalls,
216 #[serde(rename = "tool-calls-result")]
217 ToolCallsResult,
218 #[serde(rename = "tool.completed")]
219 ToolPeriodCompleted,
220 #[serde(rename = "transfer-update")]
221 TransferUpdate,
222 #[serde(rename = "user-interrupted")]
223 UserInterrupted,
224 #[serde(rename = "voice-input")]
225 VoiceInput,
226 #[serde(rename = "workflow.node.started")]
227 WorkflowPeriodNodePeriodStarted,
228}
229
230impl Default for ClientMessagesTrue {
231 fn default() -> ClientMessagesTrue {
232 Self::ConversationUpdate
233 }
234}
235#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
237pub enum ServerMessagesTrue {
238 #[serde(rename = "conversation-update")]
239 ConversationUpdate,
240 #[serde(rename = "end-of-call-report")]
241 EndOfCallReport,
242 #[serde(rename = "function-call")]
243 FunctionCall,
244 #[serde(rename = "hang")]
245 Hang,
246 #[serde(rename = "language-changed")]
247 LanguageChanged,
248 #[serde(rename = "language-change-detected")]
249 LanguageChangeDetected,
250 #[serde(rename = "model-output")]
251 ModelOutput,
252 #[serde(rename = "phone-call-control")]
253 PhoneCallControl,
254 #[serde(rename = "speech-update")]
255 SpeechUpdate,
256 #[serde(rename = "status-update")]
257 StatusUpdate,
258 #[serde(rename = "transcript")]
259 Transcript,
260 #[serde(rename = "transcript[transcriptType=\"final\"]")]
261 TranscriptLeftSquareBracketTranscriptTypeEqualDoubleQuoteFinalDoubleQuoteRightSquareBracket,
262 #[serde(rename = "tool-calls")]
263 ToolCalls,
264 #[serde(rename = "transfer-destination-request")]
265 TransferDestinationRequest,
266 #[serde(rename = "transfer-update")]
267 TransferUpdate,
268 #[serde(rename = "user-interrupted")]
269 UserInterrupted,
270 #[serde(rename = "voice-input")]
271 VoiceInput,
272}
273
274impl Default for ServerMessagesTrue {
275 fn default() -> ServerMessagesTrue {
276 Self::ConversationUpdate
277 }
278}