cal-jambonz 0.1.47

Jambonz Verbs
Documentation
use crate::verbs::recognizer::Recognizer;
use crate::verbs::synthesizer::Synthesizer;
use crate::verbs::verb::Verb;
use serde::{Deserialize, Serialize};

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

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

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

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

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

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

impl Rasa {
    pub fn new(url: &str) -> Rasa {
        Rasa {
            url: url.to_string(),
            prompt: None,
            event_hook: None,
            action_hook: None,
            tts: None,
            recognizer: None,
        }
    }

    pub fn prompt(&mut self, prompt: &str) -> &mut Rasa {
        self.prompt = Some(prompt.to_string());
        self
    }

    pub fn event_hook(&mut self, event_hook: &str) -> &mut Rasa {
        self.event_hook = Some(event_hook.to_string());
        self
    }

    pub fn action_hook(&mut self, action_hook: &str) -> &mut Rasa {
        self.action_hook = Some(action_hook.to_string());
        self
    }

    pub fn tts(&mut self, tts: Synthesizer) -> &mut Rasa {
        self.tts = Some(tts);
        self
    }

    pub fn recognizer(&mut self, recognizer: Recognizer) -> &mut Rasa {
        self.recognizer = Some(recognizer);
        self
    }
    
}

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

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