active_call/playbook/handler/
types.rs

1use crate::ReferOption;
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5#[derive(Debug, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct StructuredResponse {
8    pub text: Option<String>,
9    pub wait_input_timeout: Option<u32>,
10    pub tools: Option<Vec<ToolInvocation>>,
11}
12
13#[derive(Debug, Deserialize, Serialize, Clone)]
14#[serde(tag = "name", rename_all = "lowercase")]
15pub enum ToolInvocation {
16    #[serde(rename_all = "camelCase")]
17    Hangup {
18        reason: Option<String>,
19        initiator: Option<String>,
20    },
21    #[serde(rename_all = "camelCase")]
22    Refer {
23        caller: String,
24        callee: String,
25        options: Option<ReferOption>,
26    },
27    #[serde(rename_all = "camelCase")]
28    Rag {
29        query: String,
30        source: Option<String>,
31    },
32    #[serde(rename_all = "camelCase")]
33    Accept { options: Option<crate::CallOption> },
34    #[serde(rename_all = "camelCase")]
35    Reject {
36        reason: Option<String>,
37        code: Option<u32>,
38    },
39    #[serde(rename_all = "camelCase")]
40    Http {
41        url: String,
42        method: Option<String>,
43        body: Option<serde_json::Value>,
44        headers: Option<HashMap<String, String>>,
45    },
46}