cal-core 0.2.158

Callable core lib
Documentation
use crate::{ConnectState, FlowState};
use serde::{Deserialize, Serialize};
use std::fmt::{Debug, Formatter};
use crate::device::device::Connector;
use crate::device::shared::{RecordOptions, TranscribeOptions};

#[derive(Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct VoiceMail {
    pub text: String,
    #[serde(rename = "ttsLanguage")]
    #[serde(default = "crate::device::shared::build_tts_voice")]
    pub tts_voice: String,
    #[serde(default = "crate::device::shared::build_vm_finish_key")]
    pub finish_on_key: String,
    #[serde(default)]
    pub email_recipients: Vec<String>,
    #[serde(default = "crate::device::shared::build_vm_timeout")]
    pub timeout: u8,
    #[serde(default = "crate::device::shared::build_vm_max_length")]
    pub max_length: u8,
    #[serde(default)]
    pub transcribe_options: TranscribeOptions,
    #[serde(default)]
    pub record_options: RecordOptions,
    #[serde(default)]
    pub play_beep: bool,
    #[serde(default = "crate::device::shared::build_connect_to")]
    pub connect_to: String,
}

impl Connector for VoiceMail {
    fn get_connect_to(&mut self, _state: &mut FlowState) -> ConnectState {
        ConnectState::default(&self.connect_to, None)
    }
}

impl Debug for VoiceMail {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        f.debug_struct("VoiceMail")
            .field("text", &self.text)
            .field("tts_voice", &self.tts_voice)
            .field("finish_on_key", &self.finish_on_key)
            .field("email_recipients", &self.email_recipients)
            .field("timeout", &self.timeout)
            .field("max_length", &self.max_length)
            .field("transcribe_options", &self.transcribe_options)
            .field("record_options", &self.record_options)
            .field("play_beep", &self.play_beep)
            .field("connect_to", &self.connect_to)
            .finish()
    }
}