cal_core/device/
say.rs

1use std::fmt::{Debug, Formatter};
2use serde::{Serialize, Deserialize};
3use crate::{ConnectState, FlowState};
4use crate::device::device::Connector;
5
6#[derive(Serialize, Deserialize, Clone)]
7#[serde(rename_all = "camelCase")]
8pub struct Say {
9    pub text: String,
10    #[serde(rename = "ttsLanguage")]
11    #[serde(default = "crate::device::shared::build_tts_voice")]
12    pub tts_voice: String,
13    #[serde(default = "crate::device::shared::build_connect_to")]
14    pub connect_to: String,
15}
16
17impl Connector for Say {
18    fn get_connect_to(&mut self, _state: &mut FlowState) -> ConnectState {
19        ConnectState::default(&self.connect_to, None)
20    }
21}
22
23impl Debug for Say {
24    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
25        f.debug_struct("Say")
26            .field("text", &self.text)
27            .field("tts_voice", &self.tts_voice)
28            .field("connect_to", &self.connect_to)
29            .finish()
30    }
31}