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<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 = "name", skip_serializing_if = "Option::is_none")]
62 pub name: Option<String>,
63 #[serde(rename = "voicemailMessage", skip_serializing_if = "Option::is_none")]
65 pub voicemail_message: Option<String>,
66 #[serde(rename = "endCallMessage", skip_serializing_if = "Option::is_none")]
68 pub end_call_message: Option<String>,
69 #[serde(rename = "endCallPhrases", skip_serializing_if = "Option::is_none")]
71 pub end_call_phrases: Option<Vec<String>>,
72 #[serde(rename = "compliancePlan", skip_serializing_if = "Option::is_none")]
73 pub compliance_plan: Option<Box<models::CompliancePlan>>,
74 #[serde(rename = "metadata", skip_serializing_if = "Option::is_none")]
76 pub metadata: Option<serde_json::Value>,
77 #[serde(rename = "analysisPlan", skip_serializing_if = "Option::is_none")]
79 pub analysis_plan: Option<Box<models::AnalysisPlan>>,
80 #[serde(rename = "artifactPlan", skip_serializing_if = "Option::is_none")]
82 pub artifact_plan: Option<Box<models::ArtifactPlan>>,
83 #[serde(rename = "messagePlan", skip_serializing_if = "Option::is_none")]
85 pub message_plan: Option<Box<models::MessagePlan>>,
86 #[serde(rename = "startSpeakingPlan", skip_serializing_if = "Option::is_none")]
88 pub start_speaking_plan: Option<Box<models::StartSpeakingPlan>>,
89 #[serde(rename = "stopSpeakingPlan", skip_serializing_if = "Option::is_none")]
91 pub stop_speaking_plan: Option<Box<models::StopSpeakingPlan>>,
92 #[serde(rename = "monitorPlan", skip_serializing_if = "Option::is_none")]
94 pub monitor_plan: Option<Box<models::MonitorPlan>>,
95 #[serde(rename = "credentialIds", skip_serializing_if = "Option::is_none")]
97 pub credential_ids: Option<Vec<String>>,
98 #[serde(rename = "server", skip_serializing_if = "Option::is_none")]
100 pub server: Option<Box<models::Server>>,
101 #[serde(rename = "hooks", skip_serializing_if = "Option::is_none")]
103 pub hooks: Option<Vec<models::AssistantHooks>>,
104 #[serde(rename = "keypadInputPlan", skip_serializing_if = "Option::is_none")]
105 pub keypad_input_plan: Option<Box<models::KeypadInputPlan>>,
106}
107
108impl CreateAssistantDto {
109 pub fn new() -> CreateAssistantDto {
110 CreateAssistantDto {
111 transcriber: None,
112 model: None,
113 voice: None,
114 first_message: None,
115 first_message_mode: None,
116 voicemail_detection: None,
117 client_messages: None,
118 server_messages: None,
119 silence_timeout_seconds: None,
120 max_duration_seconds: None,
121 background_sound: None,
122 background_denoising_enabled: None,
123 model_output_in_messages_enabled: None,
124 transport_configurations: None,
125 observability_plan: None,
126 credentials: None,
127 name: None,
128 voicemail_message: None,
129 end_call_message: None,
130 end_call_phrases: None,
131 compliance_plan: None,
132 metadata: None,
133 analysis_plan: None,
134 artifact_plan: None,
135 message_plan: None,
136 start_speaking_plan: None,
137 stop_speaking_plan: None,
138 monitor_plan: None,
139 credential_ids: None,
140 server: None,
141 hooks: None,
142 keypad_input_plan: None,
143 }
144 }
145}
146#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
148pub enum FirstMessageMode {
149 #[serde(rename = "assistant-speaks-first")]
150 AssistantSpeaksFirst,
151 #[serde(rename = "assistant-speaks-first-with-model-generated-message")]
152 AssistantSpeaksFirstWithModelGeneratedMessage,
153 #[serde(rename = "assistant-waits-for-user")]
154 AssistantWaitsForUser,
155}
156
157impl Default for FirstMessageMode {
158 fn default() -> FirstMessageMode {
159 Self::AssistantSpeaksFirst
160 }
161}
162#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
164pub enum ClientMessages {
165 #[serde(rename = "conversation-update")]
166 ConversationUpdate,
167 #[serde(rename = "function-call")]
168 FunctionCall,
169 #[serde(rename = "function-call-result")]
170 FunctionCallResult,
171 #[serde(rename = "hang")]
172 Hang,
173 #[serde(rename = "language-changed")]
174 LanguageChanged,
175 #[serde(rename = "metadata")]
176 Metadata,
177 #[serde(rename = "model-output")]
178 ModelOutput,
179 #[serde(rename = "speech-update")]
180 SpeechUpdate,
181 #[serde(rename = "status-update")]
182 StatusUpdate,
183 #[serde(rename = "transcript")]
184 Transcript,
185 #[serde(rename = "tool-calls")]
186 ToolCalls,
187 #[serde(rename = "tool-calls-result")]
188 ToolCallsResult,
189 #[serde(rename = "transfer-update")]
190 TransferUpdate,
191 #[serde(rename = "user-interrupted")]
192 UserInterrupted,
193 #[serde(rename = "voice-input")]
194 VoiceInput,
195}
196
197impl Default for ClientMessages {
198 fn default() -> ClientMessages {
199 Self::ConversationUpdate
200 }
201}
202#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
204pub enum ServerMessages {
205 #[serde(rename = "conversation-update")]
206 ConversationUpdate,
207 #[serde(rename = "end-of-call-report")]
208 EndOfCallReport,
209 #[serde(rename = "function-call")]
210 FunctionCall,
211 #[serde(rename = "hang")]
212 Hang,
213 #[serde(rename = "language-changed")]
214 LanguageChanged,
215 #[serde(rename = "language-change-detected")]
216 LanguageChangeDetected,
217 #[serde(rename = "model-output")]
218 ModelOutput,
219 #[serde(rename = "phone-call-control")]
220 PhoneCallControl,
221 #[serde(rename = "speech-update")]
222 SpeechUpdate,
223 #[serde(rename = "status-update")]
224 StatusUpdate,
225 #[serde(rename = "transcript")]
226 Transcript,
227 #[serde(rename = "transcript[transcriptType=\"final\"]")]
228 TranscriptLeftSquareBracketTranscriptTypeEqualDoubleQuoteFinalDoubleQuoteRightSquareBracket,
229 #[serde(rename = "tool-calls")]
230 ToolCalls,
231 #[serde(rename = "transfer-destination-request")]
232 TransferDestinationRequest,
233 #[serde(rename = "transfer-update")]
234 TransferUpdate,
235 #[serde(rename = "user-interrupted")]
236 UserInterrupted,
237 #[serde(rename = "voice-input")]
238 VoiceInput,
239}
240
241impl Default for ServerMessages {
242 fn default() -> ServerMessages {
243 Self::ConversationUpdate
244 }
245}
246#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
248pub enum BackgroundSound {
249 #[serde(rename = "off")]
250 Off,
251 #[serde(rename = "office")]
252 Office,
253}
254
255impl Default for BackgroundSound {
256 fn default() -> BackgroundSound {
257 Self::Off
258 }
259}
260