1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct CreateAssistantDto {
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(rename = "firstMessageInterruptionsEnabled", skip_serializing_if = "Option::is_none")]
26 pub first_message_interruptions_enabled: Option<bool>,
27 #[serde(rename = "firstMessageMode", skip_serializing_if = "Option::is_none")]
29 pub first_message_mode: Option<FirstMessageMode>,
30 #[serde(rename = "voicemailDetection", skip_serializing_if = "Option::is_none")]
31 pub voicemail_detection: Option<models::CreateAssistantDtoVoicemailDetection>,
32 #[serde(rename = "clientMessages", skip_serializing_if = "Option::is_none")]
34 pub client_messages: Option<Vec<ClientMessages>>,
35 #[serde(rename = "serverMessages", skip_serializing_if = "Option::is_none")]
37 pub server_messages: Option<Vec<ServerMessages>>,
38 #[serde(rename = "silenceTimeoutSeconds", skip_serializing_if = "Option::is_none")]
40 pub silence_timeout_seconds: Option<f64>,
41 #[serde(rename = "maxDurationSeconds", skip_serializing_if = "Option::is_none")]
43 pub max_duration_seconds: Option<f64>,
44 #[serde(rename = "backgroundSound", skip_serializing_if = "Option::is_none")]
45 pub background_sound: Option<models::CreateAssistantDtoBackgroundSound>,
46 #[serde(rename = "backgroundDenoisingEnabled", skip_serializing_if = "Option::is_none")]
48 pub background_denoising_enabled: Option<bool>,
49 #[serde(rename = "modelOutputInMessagesEnabled", skip_serializing_if = "Option::is_none")]
51 pub model_output_in_messages_enabled: Option<bool>,
52 #[serde(rename = "transportConfigurations", skip_serializing_if = "Option::is_none")]
54 pub transport_configurations: Option<Vec<models::CreateAssistantDtoTransportConfigurationsInner>>,
55 #[serde(rename = "observabilityPlan", skip_serializing_if = "Option::is_none")]
57 pub observability_plan: Option<models::LangfuseObservabilityPlan>,
58 #[serde(rename = "credentials", skip_serializing_if = "Option::is_none")]
60 pub credentials: Option<Vec<models::CreateAssistantDtoCredentialsInner>>,
61 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
63 pub name: Option<String>,
64 #[serde(rename = "voicemailMessage", skip_serializing_if = "Option::is_none")]
66 pub voicemail_message: Option<String>,
67 #[serde(rename = "endCallMessage", skip_serializing_if = "Option::is_none")]
69 pub end_call_message: Option<String>,
70 #[serde(rename = "endCallPhrases", skip_serializing_if = "Option::is_none")]
72 pub end_call_phrases: Option<Vec<String>>,
73 #[serde(rename = "compliancePlan", skip_serializing_if = "Option::is_none")]
74 pub compliance_plan: Option<models::CompliancePlan>,
75 #[serde(rename = "metadata", skip_serializing_if = "Option::is_none")]
77 pub metadata: Option<serde_json::Value>,
78 #[serde(rename = "analysisPlan", skip_serializing_if = "Option::is_none")]
80 pub analysis_plan: Option<models::AnalysisPlan>,
81 #[serde(rename = "artifactPlan", skip_serializing_if = "Option::is_none")]
83 pub artifact_plan: Option<models::ArtifactPlan>,
84 #[serde(rename = "messagePlan", skip_serializing_if = "Option::is_none")]
86 pub message_plan: Option<models::MessagePlan>,
87 #[serde(rename = "startSpeakingPlan", skip_serializing_if = "Option::is_none")]
89 pub start_speaking_plan: Option<models::StartSpeakingPlan>,
90 #[serde(rename = "stopSpeakingPlan", skip_serializing_if = "Option::is_none")]
92 pub stop_speaking_plan: Option<models::StopSpeakingPlan>,
93 #[serde(rename = "monitorPlan", skip_serializing_if = "Option::is_none")]
95 pub monitor_plan: Option<models::MonitorPlan>,
96 #[serde(rename = "credentialIds", skip_serializing_if = "Option::is_none")]
98 pub credential_ids: Option<Vec<String>>,
99 #[serde(rename = "server", skip_serializing_if = "Option::is_none")]
101 pub server: Option<models::Server>,
102 #[serde(rename = "hooks", skip_serializing_if = "Option::is_none")]
104 pub hooks: Option<Vec<models::AssistantHooks>>,
105 #[serde(rename = "keypadInputPlan", skip_serializing_if = "Option::is_none")]
106 pub keypad_input_plan: Option<models::KeypadInputPlan>,
107}
108
109impl CreateAssistantDto {
110 pub fn new() -> CreateAssistantDto {
111 CreateAssistantDto {
112 transcriber: None,
113 model: None,
114 voice: None,
115 first_message: None,
116 first_message_interruptions_enabled: None,
117 first_message_mode: None,
118 voicemail_detection: None,
119 client_messages: None,
120 server_messages: None,
121 silence_timeout_seconds: None,
122 max_duration_seconds: None,
123 background_sound: None,
124 background_denoising_enabled: None,
125 model_output_in_messages_enabled: None,
126 transport_configurations: None,
127 observability_plan: None,
128 credentials: None,
129 name: None,
130 voicemail_message: None,
131 end_call_message: None,
132 end_call_phrases: None,
133 compliance_plan: None,
134 metadata: None,
135 analysis_plan: None,
136 artifact_plan: None,
137 message_plan: None,
138 start_speaking_plan: None,
139 stop_speaking_plan: None,
140 monitor_plan: None,
141 credential_ids: None,
142 server: None,
143 hooks: None,
144 keypad_input_plan: None,
145 }
146 }
147}
148#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
150pub enum FirstMessageMode {
151 #[serde(rename = "assistant-speaks-first")]
152 AssistantSpeaksFirst,
153 #[serde(rename = "assistant-speaks-first-with-model-generated-message")]
154 AssistantSpeaksFirstWithModelGeneratedMessage,
155 #[serde(rename = "assistant-waits-for-user")]
156 AssistantWaitsForUser,
157}
158
159impl Default for FirstMessageMode {
160 fn default() -> FirstMessageMode {
161 Self::AssistantSpeaksFirst
162 }
163}
164#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
166pub enum ClientMessages {
167 #[serde(rename = "conversation-update")]
168 ConversationUpdate,
169 #[serde(rename = "function-call")]
170 FunctionCall,
171 #[serde(rename = "function-call-result")]
172 FunctionCallResult,
173 #[serde(rename = "hang")]
174 Hang,
175 #[serde(rename = "language-changed")]
176 LanguageChanged,
177 #[serde(rename = "metadata")]
178 Metadata,
179 #[serde(rename = "model-output")]
180 ModelOutput,
181 #[serde(rename = "speech-update")]
182 SpeechUpdate,
183 #[serde(rename = "status-update")]
184 StatusUpdate,
185 #[serde(rename = "transcript")]
186 Transcript,
187 #[serde(rename = "tool-calls")]
188 ToolCalls,
189 #[serde(rename = "tool-calls-result")]
190 ToolCallsResult,
191 #[serde(rename = "transfer-update")]
192 TransferUpdate,
193 #[serde(rename = "user-interrupted")]
194 UserInterrupted,
195 #[serde(rename = "voice-input")]
196 VoiceInput,
197 #[serde(rename = "workflow.node.started")]
198 WorkflowPeriodNodePeriodStarted,
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