cal-jambonz 0.1.75

Jambonz Verbs
Documentation
use crate::verbs::verb::Verb;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

#[derive(Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct DialogFlow {
    pub credentials: String,

    pub lang: String,

    pub project: String,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub action_hook: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub baregin: Option<bool>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub event_hook: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub no_input_event: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub no_input_timeout: Option<u8>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub pass_dtmf_as_text_input: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub thinking_music: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub tts: Option<DialogFlowSynthesizer>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub welcome_event: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub welcome_event_params: Option<HashMap<String, String>>,
}

impl Into<Verb> for DialogFlow {
    fn into(self) -> Verb {
        Verb::DialogFlow(self)
    }
}

impl Into<Vec<Verb>> for DialogFlow {
    fn into(self) -> Vec<Verb> {
        vec![self.into()]
    }
}

impl DialogFlow {
    pub fn new(project: String, lang: String, credentials: String) -> DialogFlow {
        DialogFlow {
            credentials,
            lang,
            project,
            tts: None,
            action_hook: None,
            baregin: None,
            event_hook: None,
            no_input_event: None,
            no_input_timeout: None,
            pass_dtmf_as_text_input: None,
            thinking_music: None,
            welcome_event: None,
            welcome_event_params: None,
        }
    }

    pub fn action_hook(&mut self, action_hook: Option<String>) -> &mut DialogFlow {
        self.action_hook = action_hook;
        self
    }

    pub fn baregin(&mut self, baregin: Option<bool>) -> &mut DialogFlow {
        self.baregin = baregin;
        self
    }

    pub fn event_hook(&mut self, event_hook: Option<String>) -> &mut DialogFlow {
        self.event_hook = event_hook;
        self
    }

    pub fn no_input_event(&mut self, no_input_event: Option<String>) -> &mut DialogFlow {
        self.no_input_event = no_input_event;
        self
    }

    pub fn no_input_timeout(&mut self, no_input_timeout: Option<u8>) -> &mut DialogFlow {
        self.no_input_timeout = no_input_timeout;
        self
    }

    pub fn pass_dtmf(&mut self, pass_dtmf: Option<String>) -> &mut DialogFlow {
        self.pass_dtmf_as_text_input = pass_dtmf;
        self
    }

    pub fn welcome_event(&mut self, welcome_event: Option<String>) -> &mut DialogFlow {
        self.welcome_event = welcome_event;
        self
    }

    pub fn welcome_event_params(
        &mut self,
        welcome_event_params: Option<HashMap<String, String>>,
    ) -> &mut DialogFlow {
        self.welcome_event_params = welcome_event_params;
        self
    }

    pub fn thinking_music(&mut self, thinking_music: Option<String>) -> &mut DialogFlow {
        self.thinking_music = thinking_music;
        self
    }

    pub fn tt(&mut self, tts: Option<DialogFlowSynthesizer>) -> &mut DialogFlow {
        self.tts = tts;
        self
    }
}

#[derive(Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct DialogFlowSynthesizer {
    pub language: String,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub vendor: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub gender: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub voice: Option<String>,
}

impl DialogFlowSynthesizer {
    pub fn new(language: String) -> DialogFlowSynthesizer {
        DialogFlowSynthesizer {
            language,
            vendor: None,
            gender: None,
            voice: None,
        }
    }

    pub fn vendor(&mut self, vendor: Option<String>) -> &mut DialogFlowSynthesizer {
        self.vendor = vendor;
        self
    }

    pub fn gender(&mut self, gender: Option<String>) -> &mut DialogFlowSynthesizer {
        self.gender = gender;
        self
    }

    pub fn voice(&mut self, vendor: Option<String>) -> &mut DialogFlowSynthesizer {
        self.voice = vendor;
        self
    }
}