cal-core 0.2.158

Callable core lib
Documentation
use std::fmt::{Debug, Formatter};
use crate::{AsrVendor, NumberFormat, DEFAULT_CALL_TIME, DEFAULT_COUNTRY_CODE, DEFAULT_DIGITS_FINISH_KEY, DEFAULT_DIGIT_TIMEOUT, DEFAULT_ENDPOINT_PRESENT, DEFAULT_MAX_DIGITS, DEFAULT_RECORDING_RETENTION, DEFAULT_REMOTE_DESTINATION, DEFAULT_RING_TIME, DEFAULT_TIMEZONE, DEFAULT_TTS_VOICE, DEFAULT_VM_FINISH_KEY, DEFAULT_VM_MAX_LENGTH, DEFAULT_VM_TIMEOUT, HANG_UP_CONNECT};
use cal_jambonz::listen::{MixType, SampleRate};
use cal_jambonz::recognizer::Recognizer;
use serde::{Deserialize, Serialize};
use crate::client::ClientProfile;


#[derive(Serialize, Deserialize, Clone)]
pub struct TranscribeOptions {
    pub enabled: bool,
    pub language: AsrVendor,
}

impl Default for TranscribeOptions {
    fn default() -> Self {
        Self {
            enabled: false,
            language: AsrVendor::Google,
        }
    }
}

#[derive(Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct RecordOptions {
    #[serde(default = "build_record")]
    pub enabled: bool,
    #[serde(default = "build_record_retention")]
    pub retention: String,
    #[serde(default = "build_mix_type")]
    pub mix_type: MixType,
    #[serde(default = "build_sample_rate")]
    pub sample_rate: SampleRate,
}

impl Default for RecordOptions {
    fn default() -> Self {
        Self {
            enabled: false,
            retention: String::from(DEFAULT_RECORDING_RETENTION),
            mix_type: MixType::Stereo,
            sample_rate: SampleRate::SR8000,
        }
    }
}

#[derive(Serialize, Deserialize, Clone)]
pub struct AiOptions {
    pub transcribe: bool,
    pub summary: bool,
    pub recognizer: Option<Recognizer>,
}

impl Default for AiOptions {
    fn default() -> Self {
        Self {
            transcribe: false,
            summary: false,
            recognizer: None,
        }
    }
}

#[derive(Serialize, Deserialize, Clone)]
pub struct CallControl {
    enabled: bool,
    channels: u8,
    stats: bool,
    action: CacAction,
}

impl Default for CallControl {
    fn default() -> Self {
        CallControl {
            enabled: false,
            channels: 0,
            stats: false,
            action: CacAction::Warn,
        }
    }
}

#[derive(Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub enum CacAction {
    Warn,
    Deny,
}


impl Debug for AiOptions {
    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), std::fmt::Error> {
        f.debug_struct("AiOptions")
            .field("transcribe", &self.transcribe)
            .field("summary", &self.summary)
            .field("recognizer", &self.recognizer)
            .finish()
    }
}

impl Debug for CallControl {
    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), std::fmt::Error> {
        f.debug_struct("CallControl")
            .field("enabled", &self.enabled)
            .field("channels", &self.channels)
            .field("stats", &self.stats)
            .field("action", &self.action)
            .finish()
    }
}

impl Debug for CacAction {
    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), std::fmt::Error> {
        match self {
            CacAction::Warn => write!(f, "Warn"),
            CacAction::Deny => write!(f, "Deny"),
        }
    }
}

pub fn build_record() -> bool {
    false
}

pub fn build_record_retention() -> String {
    String::from(DEFAULT_RECORDING_RETENTION)
}

pub fn build_mix_type() -> MixType {
    MixType::Stereo
}

pub fn build_sample_rate() -> SampleRate {
    SampleRate::SR8000
}

pub fn build_connect_to() -> String {
    String::from(HANG_UP_CONNECT)
}

pub fn build_tts_voice() -> String {
    String::from(DEFAULT_TTS_VOICE)
}

pub fn build_vm_finish_key() -> String {
    String::from(DEFAULT_VM_FINISH_KEY)
}

pub fn build_default_timezone() -> String {
    String::from(DEFAULT_TIMEZONE)
}

pub fn build_vm_timeout() -> u8 {
    DEFAULT_VM_TIMEOUT
}

pub fn build_vm_max_length() -> u8 {
    DEFAULT_VM_MAX_LENGTH
}


pub fn build_present() -> String {
    String::from(DEFAULT_ENDPOINT_PRESENT)
}

pub fn build_destination() -> String {
    String::from(DEFAULT_REMOTE_DESTINATION)
}

pub fn build_format() -> NumberFormat {
    NumberFormat::National
}

pub fn build_client_profile() -> ClientProfile {
    ClientProfile::GenericE164Plus
}

pub fn build_country_code() -> String {
    String::from(DEFAULT_COUNTRY_CODE)
}

pub fn build_finish_key() -> String {
    String::from(DEFAULT_DIGITS_FINISH_KEY)
}

pub fn build_call_time() -> u16 {
    DEFAULT_CALL_TIME
}

pub fn build_ring_time() -> u8 {
    DEFAULT_RING_TIME
}

pub fn build_digit_timeout() -> u8 {
    DEFAULT_DIGIT_TIMEOUT
}

pub fn build_max_digits() -> u8 {
    DEFAULT_MAX_DIGITS
}