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}