use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ConversationNode {
#[serde(rename = "type")]
pub r#type: TypeTrue,
#[serde(rename = "model", skip_serializing_if = "Option::is_none")]
pub model: Option<models::ConversationNodeModel>,
#[serde(rename = "transcriber", skip_serializing_if = "Option::is_none")]
pub transcriber: Option<models::ConversationNodeTranscriber>,
#[serde(rename = "voice", skip_serializing_if = "Option::is_none")]
pub voice: Option<models::ConversationNodeVoice>,
#[serde(rename = "prompt", skip_serializing_if = "Option::is_none")]
pub prompt: Option<String>,
#[serde(rename = "globalNodePlan", skip_serializing_if = "Option::is_none")]
pub global_node_plan: Option<models::GlobalNodePlan>,
#[serde(
rename = "variableExtractionPlan",
skip_serializing_if = "Option::is_none"
)]
pub variable_extraction_plan: Option<models::VariableExtractionPlan>,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "isStart", skip_serializing_if = "Option::is_none")]
pub is_start: Option<bool>,
#[serde(rename = "metadata", skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
}
impl ConversationNode {
pub fn new(r#type: TypeTrue, name: String) -> ConversationNode {
ConversationNode {
r#type,
model: None,
transcriber: None,
voice: None,
prompt: None,
global_node_plan: None,
variable_extraction_plan: None,
name,
is_start: None,
metadata: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TypeTrue {
#[serde(rename = "conversation")]
Conversation,
}
impl Default for TypeTrue {
fn default() -> TypeTrue {
Self::Conversation
}
}