active_call/playbook/handler/
types.rs1use 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}