1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct UpdateAssistantDto {
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 UpdateAssistantDto {
109    pub fn new() -> UpdateAssistantDto {
110        UpdateAssistantDto {
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