Skip to content

Commit 75583d1

Browse files
committed
docs(squads): add ts/python/curl tabs to clinic triage example
1 parent 508af24 commit 75583d1

File tree

1 file changed

+136
-1
lines changed

1 file changed

+136
-1
lines changed

fern/squads/examples/clinic-triage-scheduling.mdx

Lines changed: 136 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,142 @@ Compose multiple assistants into a Squad for safe, specialized healthcare flows:
3737

3838
See: [Silent transfers](/squads/silent-transfers).
3939

40-
## 3. Test
40+
## 3. Implement
41+
42+
<Tabs>
43+
<Tab title="TypeScript (Server SDK)">
44+
```typescript title="create web call with transient squad"
45+
import { VapiClient } from "@vapi-ai/server-sdk";
46+
47+
const vapi = new VapiClient({ token: process.env.VAPI_API_KEY! });
48+
49+
await vapi.calls.create({
50+
transport: { type: "web" },
51+
squad: {
52+
members: [
53+
{
54+
assistant: {
55+
name: "Triage",
56+
model: {
57+
provider: "openai",
58+
model: "gpt-4o",
59+
messages: [{ role: "system", content: "Medical triage assistant. Identify red flags." }],
60+
},
61+
firstMessage: "Hello, how can I help you today?",
62+
firstMessageMode: "assistant-speaks-first",
63+
},
64+
},
65+
{
66+
assistant: {
67+
name: "Emergency",
68+
model: {
69+
provider: "openai",
70+
model: "gpt-4o",
71+
messages: [{ role: "system", content: "Emergency protocol assistant. Keep interaction brief and connect immediately." }],
72+
},
73+
},
74+
},
75+
{
76+
assistant: {
77+
name: "Scheduler",
78+
model: {
79+
provider: "openai",
80+
model: "gpt-4o",
81+
messages: [{ role: "system", content: "Clinic scheduler. Offer next available slots, then confirm." }],
82+
},
83+
},
84+
},
85+
],
86+
},
87+
});
88+
```
89+
90+
```typescript title="create phone call with transient squad"
91+
await vapi.calls.create({
92+
phoneNumberId: "YOUR_PHONE_NUMBER_ID",
93+
customer: { number: "+15551234567" },
94+
squad: { /* same squad as above */ members: [] },
95+
});
96+
```
97+
98+
```typescript title="create and reuse a squad (optional)"
99+
const squad = await vapi.squads.create({
100+
name: "Clinic Triage",
101+
members: [ /* same members as above */ ],
102+
});
103+
104+
await vapi.calls.create({ transport: { type: "web" }, squadId: squad.id });
105+
```
106+
</Tab>
107+
108+
<Tab title="Python (Server SDK)">
109+
```python title="create web call with transient squad"
110+
import os
111+
from vapi import Vapi
112+
113+
client = Vapi(token=os.getenv("VAPI_API_KEY"))
114+
115+
client.calls.create(
116+
transport={"type": "web"},
117+
squad={
118+
"members": [
119+
{"assistant": {"name": "Triage", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Medical triage assistant. Identify red flags."}]}, "first_message": "Hello, how can I help you today?", "first_message_mode": "assistant-speaks-first"}},
120+
{"assistant": {"name": "Emergency", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Emergency protocol assistant. Keep interaction brief and connect immediately."}]}}},
121+
{"assistant": {"name": "Scheduler", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Clinic scheduler. Offer next available slots, then confirm."}]}}},
122+
]
123+
},
124+
)
125+
```
126+
127+
```python title="create phone call with transient squad"
128+
client.calls.create(
129+
phone_number_id="YOUR_PHONE_NUMBER_ID",
130+
customer={"number": "+15551234567"},
131+
squad={"members": []}, # same members as above
132+
)
133+
```
134+
135+
```python title="create and reuse a squad (optional)"
136+
squad = client.squads.create(
137+
name="Clinic Triage",
138+
members=[ /* same members as above */ ],
139+
)
140+
client.calls.create(transport={"type": "web"}, squad_id=squad["id"])
141+
```
142+
</Tab>
143+
144+
<Tab title="cURL (web)">
145+
```bash title="create web call"
146+
curl -X POST "https://api.vapi.ai/call/web" \
147+
-H "Authorization: Bearer $VAPI_API_KEY" \
148+
-H "Content-Type: application/json" \
149+
-d '{
150+
"squad": {
151+
"members": [
152+
{ "assistant": { "name": "Triage", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Medical triage assistant. Identify red flags."}] }, "firstMessage": "Hello, how can I help you today?", "firstMessageMode": "assistant-speaks-first" } },
153+
{ "assistant": { "name": "Emergency", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Emergency protocol assistant. Keep interaction brief and connect immediately."}] } } },
154+
{ "assistant": { "name": "Scheduler", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Clinic scheduler. Offer next available slots, then confirm."}] } } }
155+
]
156+
}
157+
}'
158+
```
159+
</Tab>
160+
161+
<Tab title="cURL (phone)">
162+
```bash title="create phone call"
163+
curl -X POST "https://api.vapi.ai/call" \
164+
-H "Authorization: Bearer $VAPI_API_KEY" \
165+
-H "Content-Type: application/json" \
166+
-d '{
167+
"phoneNumberId": "YOUR_PHONE_NUMBER_ID",
168+
"customer": { "number": "+15551234567" },
169+
"squad": { "members": [] }
170+
}'
171+
```
172+
</Tab>
173+
</Tabs>
174+
175+
## 4. Test
41176

42177
Attach a phone number to the Squad (or start with a Squad when creating a call) and test urgent vs routine scenarios.
43178

0 commit comments

Comments
 (0)