eveevent 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/web/.next/standalone/apps/web/.next/BUILD_ID +1 -1
- package/apps/web/.next/standalone/apps/web/.next/app-build-manifest.json +115 -115
- package/apps/web/.next/standalone/apps/web/.next/app-path-routes-manifest.json +36 -36
- package/apps/web/.next/standalone/apps/web/.next/build-manifest.json +2 -2
- package/apps/web/.next/standalone/apps/web/.next/required-server-files.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/routes-manifest.json +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/cron/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/proxy/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/serve/[...path]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/store/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/apps/webhooks/[...path]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/active/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/runs/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stop/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/stream/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/chat/subagents/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/[jobId]/runs/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/jobs/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/[sessionId]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/cron/runs/search-transcript/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/feedback/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/channels/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/chat/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/chat/stream/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/sessions/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/gateway/sessions/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/memories/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/profiles/switch/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/[sessionId]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/terminal/port/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/messages/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/web-sessions/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/assets/[...path]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/browse-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/context/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/copy/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/introspect/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/db/query/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/delete/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/execute/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/init/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/list/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/mkdir/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/move/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/display-field/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/[id]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/bulk-delete/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/options/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/entries/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/enum-rename/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/[fieldId]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/fields/reorder/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/objects/[name]/views/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/open-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/path-info/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/query/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/raw-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/rename/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/reports/execute/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/search-index/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/suggest-files/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/switch/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/thumbnail/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/tree/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/upload/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/virtual-file/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/watch/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/api/workspace/write-binary/route_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/app-paths-manifest.json +36 -36
- package/apps/web/.next/standalone/apps/web/.next/server/chunks/1857.js +1 -1
- package/apps/web/.next/standalone/apps/web/.next/server/functions-config-manifest.json +26 -26
- package/apps/web/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
- package/apps/web/.next/standalone/apps/web/.next/static/chunks/app/{layout-68f7838ef97aca89.js → layout-09184a257f8137be.js} +1 -1
- package/apps/web/.next/standalone/apps/web/server.js +1 -1
- package/apps/web/.next/standalone/package.json +1 -1
- package/apps/web/.next/static/chunks/app/{layout-68f7838ef97aca89.js → layout-09184a257f8137be.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{program-B2AhYMgY.js → program-B6IKmbHj.js} +10 -4
- package/dist/{run-main-CCyJJYQw.js → run-main-C2VnFUoc.js} +1 -1
- package/extensions/posthog-analytics/lib/build-env.js +1 -1
- package/package.json +1 -1
- package/skills/agent-mail/SKILL.md +88 -9
- package/skills/event-orchestration/SKILL.md +2 -2
- package/skills/retell-ai/SKILL.md +60 -10
- package/skills/retell-ai/templates/venue-booking.json +180 -0
- package/skills/retell-ai/templates/venue-discovery.json +201 -0
- /package/apps/web/.next/standalone/apps/web/.next/static/{y-ILJJ9XRxtt3WPFeIKB_ → _04kxiwtT97RJ85XJIFWM}/_buildManifest.js +0 -0
- /package/apps/web/.next/standalone/apps/web/.next/static/{y-ILJJ9XRxtt3WPFeIKB_ → _04kxiwtT97RJ85XJIFWM}/_ssgManifest.js +0 -0
- /package/apps/web/.next/static/{y-ILJJ9XRxtt3WPFeIKB_ → _04kxiwtT97RJ85XJIFWM}/_buildManifest.js +0 -0
- /package/apps/web/.next/static/{y-ILJJ9XRxtt3WPFeIKB_ → _04kxiwtT97RJ85XJIFWM}/_ssgManifest.js +0 -0
|
@@ -2665,12 +2665,18 @@ async function bootstrapCommand(opts, runtime = defaultRuntime) {
|
|
|
2665
2665
|
initialValue: readExisting("RETELL_API_KEY") ?? ""
|
|
2666
2666
|
});
|
|
2667
2667
|
if (!isCancel(retellKey) && typeof retellKey === "string" && retellKey.trim()) setEnv("RETELL_API_KEY", retellKey.trim());
|
|
2668
|
-
const
|
|
2669
|
-
message: stylePromptMessage("Retell Agent ID (
|
|
2668
|
+
const retellDiscovery = await text({
|
|
2669
|
+
message: stylePromptMessage("Retell Discovery Agent ID (Eve - Venue Discovery)"),
|
|
2670
2670
|
placeholder: "skip",
|
|
2671
|
-
initialValue: readExisting("
|
|
2671
|
+
initialValue: readExisting("RETELL_DISCOVERY_AGENT_ID") ?? ""
|
|
2672
2672
|
});
|
|
2673
|
-
if (!isCancel(
|
|
2673
|
+
if (!isCancel(retellDiscovery) && typeof retellDiscovery === "string" && retellDiscovery.trim()) setEnv("RETELL_DISCOVERY_AGENT_ID", retellDiscovery.trim());
|
|
2674
|
+
const retellBooking = await text({
|
|
2675
|
+
message: stylePromptMessage("Retell Booking Agent ID (Eve - Venue Booking)"),
|
|
2676
|
+
placeholder: "skip",
|
|
2677
|
+
initialValue: readExisting("RETELL_BOOKING_AGENT_ID") ?? ""
|
|
2678
|
+
});
|
|
2679
|
+
if (!isCancel(retellBooking) && typeof retellBooking === "string" && retellBooking.trim()) setEnv("RETELL_BOOKING_AGENT_ID", retellBooking.trim());
|
|
2674
2680
|
const retellNumber = await text({
|
|
2675
2681
|
message: stylePromptMessage("Retell Phone Number (e.g. +14157774444)"),
|
|
2676
2682
|
placeholder: "skip",
|
|
@@ -220,7 +220,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
220
220
|
process$1.exitCode = await delegateToGlobalOpenClaw(parseArgv);
|
|
221
221
|
return;
|
|
222
222
|
}
|
|
223
|
-
const { buildProgram } = await import("./program-
|
|
223
|
+
const { buildProgram } = await import("./program-B6IKmbHj.js");
|
|
224
224
|
await buildProgram().parseAsync(parseArgv);
|
|
225
225
|
}
|
|
226
226
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eveevent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Eve — AI community event agent for DOAC. Venue sourcing, booking, and event management powered by Retell AI, Eventbrite, and AgentMail.",
|
|
5
5
|
"keywords": ["ai", "events", "community", "agent", "openclaw"],
|
|
6
6
|
"homepage": "https://github.com/boemare/DenchClaw#readme",
|
|
@@ -98,15 +98,94 @@ Returns all messages in the thread. Each message has:
|
|
|
98
98
|
- `timestamp` — when sent/received
|
|
99
99
|
- `attachments` — list of attachment objects
|
|
100
100
|
|
|
101
|
-
##
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
101
|
+
## Email Flow 1: Venue Discovery
|
|
102
|
+
|
|
103
|
+
Send this when first reaching out to a venue to check availability and pricing.
|
|
104
|
+
|
|
105
|
+
**Subject:** `Event inquiry — {{organization}} {{event_type}}, {{event_date}}`
|
|
106
|
+
|
|
107
|
+
**Body template:**
|
|
108
|
+
```
|
|
109
|
+
Hi,
|
|
110
|
+
|
|
111
|
+
My name is Eve and I'm reaching out on behalf of {{organization}}. We're planning a {{event_type}} for approximately {{headcount}} guests and are looking at venues in your area.
|
|
112
|
+
|
|
113
|
+
We'd love to know:
|
|
114
|
+
- Are you available on {{event_date}}?
|
|
115
|
+
- What is the pricing for a group of {{headcount}}? (room hire, minimum spend, etc.)
|
|
116
|
+
- Do you offer in-house catering, or can we arrange outside catering?
|
|
117
|
+
- What's included in the hire? (tables, chairs, AV, staff)
|
|
118
|
+
- What deposit is required to secure the booking?
|
|
119
|
+
|
|
120
|
+
If {{event_date}} doesn't work, we're flexible on nearby dates.
|
|
121
|
+
|
|
122
|
+
Would love to hear from you. Happy to jump on a quick call if that's easier.
|
|
123
|
+
|
|
124
|
+
Best,
|
|
125
|
+
Eve
|
|
126
|
+
{{organization}}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Email Flow 2: Venue Booking Confirmation
|
|
130
|
+
|
|
131
|
+
Send this after the team approves a venue and you want to lock the reservation.
|
|
132
|
+
|
|
133
|
+
**Subject:** `Booking confirmation — {{organization}} {{event_type}}, {{event_date}}`
|
|
134
|
+
|
|
135
|
+
**Body template:**
|
|
136
|
+
```
|
|
137
|
+
Hi {{contact_name}},
|
|
138
|
+
|
|
139
|
+
Thank you for the information from our earlier conversation. We'd like to go ahead and confirm the booking.
|
|
140
|
+
|
|
141
|
+
Here are the details:
|
|
142
|
+
- Date: {{event_date}}
|
|
143
|
+
- Guests: {{headcount}}
|
|
144
|
+
- Setup time: {{setup_time}}
|
|
145
|
+
- Event: {{event_start}} — {{event_end}}
|
|
146
|
+
- Agreed price: {{agreed_price}}
|
|
147
|
+
|
|
148
|
+
Could you please:
|
|
149
|
+
1. Send a deposit invoice to this email address
|
|
150
|
+
2. Confirm the booking reference / confirmation number
|
|
151
|
+
3. Share any forms or paperwork we need to complete before the event
|
|
152
|
+
4. Let us know the cancellation policy and day-of contact person
|
|
153
|
+
|
|
154
|
+
If anything needs a signature, please send it over and we'll return it promptly.
|
|
155
|
+
|
|
156
|
+
Looking forward to the event!
|
|
157
|
+
|
|
158
|
+
Best,
|
|
159
|
+
Eve
|
|
160
|
+
{{organization}}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Email Flow 3: Follow-up
|
|
164
|
+
|
|
165
|
+
Send if a venue hasn't replied within 48 hours of discovery or booking email.
|
|
166
|
+
|
|
167
|
+
**Subject:** `Re: [original subject]` (use reply endpoint to keep thread)
|
|
168
|
+
|
|
169
|
+
**Body template:**
|
|
170
|
+
```
|
|
171
|
+
Hi,
|
|
172
|
+
|
|
173
|
+
Just following up on my earlier email about the {{event_type}} on {{event_date}} for {{headcount}} guests. Would love to hear if your venue might be a good fit.
|
|
174
|
+
|
|
175
|
+
Happy to jump on a quick call if that's easier — just let me know a good time.
|
|
176
|
+
|
|
177
|
+
Best,
|
|
178
|
+
Eve
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## General Workflow
|
|
182
|
+
|
|
183
|
+
1. **Discovery**: Send discovery email with venue contact. Save `thread_id`.
|
|
184
|
+
2. **Wait for reply**: Check threads periodically or via heartbeat.
|
|
185
|
+
3. **Read reply**: Use `extracted_text` to get just the new content.
|
|
186
|
+
4. **Booking**: Once team approves, reply in the same thread with booking confirmation email.
|
|
187
|
+
5. **Follow-up**: If no reply in 48h, send follow-up in the same thread.
|
|
188
|
+
6. **Log everything**: Save thread as JSONL chat session + log to `communications` DuckDB object.
|
|
110
189
|
|
|
111
190
|
## Gotchas
|
|
112
191
|
|
|
@@ -88,8 +88,8 @@ Use the following installed skills for each subtask. Always spawn subagents via
|
|
|
88
88
|
|
|
89
89
|
1. **Parse & Record** — Extract event params, create DuckDB entry, set Status = "Planning"
|
|
90
90
|
2. **Venue Research** — Spawn browser subagent to find venue options in the target city. Look for capacity, pricing, availability, and reviews.
|
|
91
|
-
3. **Venue
|
|
92
|
-
4. **Book Venue** — Once
|
|
91
|
+
3. **Venue Discovery Calls** — For top venue candidates, use the **Discovery Agent** (`RETELL_DISCOVERY_AGENT_ID`) to call and check availability, pricing, capacity, catering, deposits, and logistics. Pass dynamic variables: `venue_name`, `event_date`, `headcount`, `event_type`, `organization`, `budget`. Also send discovery emails via AgentMail. Present top 3 options to the team with costs and trade-offs.
|
|
92
|
+
4. **Book Venue** — Once the team approves a venue, use the **Booking Agent** (`RETELL_BOOKING_AGENT_ID`) to call and confirm the reservation. Pass dynamic variables: `venue_name`, `event_date`, `headcount`, `agreed_price`, `setup_time`, `event_start`, `event_end`, `email` (Eve's AgentMail), `cancellation_policy`, `contact_name`. Update DuckDB: Venue Status = "Confirmed", Location = confirmed venue.
|
|
93
93
|
5. **Create Eventbrite Event** — Spawn eventbrite subagent to create the event page with venue details, date, capacity, and description. Update DuckDB with Eventbrite URL. Eventbrite handles all fan-facing invitations, waitlist, and reminders from here.
|
|
94
94
|
6. **RSVP Tracking** — Periodically check RSVPs via eventbrite. Update RSVP Count in DuckDB. Report status to team when asked.
|
|
95
95
|
7. **Day-of Coordination** — Update Status = "Day-of". Confirm final details with venue via email/phone if needed.
|
|
@@ -12,17 +12,28 @@ Make AI-powered phone calls with automatic transcription, recording, and analyti
|
|
|
12
12
|
|
|
13
13
|
Before Eve can make calls, a human must:
|
|
14
14
|
1. Sign up at https://www.retellai.com and get an API key
|
|
15
|
-
2.
|
|
15
|
+
2. Import **two agent templates** from the `skills/retell-ai/templates/` folder:
|
|
16
|
+
- `venue-discovery.json` — "Eve - Venue Discovery" agent for checking availability, pricing, and venue details
|
|
17
|
+
- `venue-booking.json` — "Eve - Venue Booking" agent for confirming and locking reservations
|
|
16
18
|
3. Buy a **phone number** ($2/month for testing) in the dashboard under Telephony → Phone Numbers
|
|
17
|
-
4. Bind
|
|
19
|
+
4. Bind both agents to the number for outbound calls
|
|
18
20
|
|
|
19
|
-
After setup, Eve needs: `RETELL_API_KEY`, `
|
|
21
|
+
After setup, Eve needs: `RETELL_API_KEY`, `RETELL_DISCOVERY_AGENT_ID`, `RETELL_BOOKING_AGENT_ID`, `RETELL_FROM_NUMBER`
|
|
22
|
+
|
|
23
|
+
## Two Call Flows
|
|
24
|
+
|
|
25
|
+
### Discovery Call (Agent: Eve - Venue Discovery)
|
|
26
|
+
Used for initial outreach. Gathers: availability, capacity, pricing, what's included, catering options, deposit, setup times, accessibility, parking, cancellation policy. Keeps call under 5 minutes.
|
|
27
|
+
|
|
28
|
+
### Booking Call (Agent: Eve - Venue Booking)
|
|
29
|
+
Used after team approves a venue. Confirms: date, price, deposit/invoice, timing, booking reference, next steps, day-of contact. Does NOT agree to price changes or date changes without team approval. Keeps call under 4 minutes.
|
|
20
30
|
|
|
21
31
|
## Environment Variables
|
|
22
32
|
|
|
23
33
|
```bash
|
|
24
34
|
export RETELL_API_KEY="your_retell_api_key"
|
|
25
|
-
export
|
|
35
|
+
export RETELL_DISCOVERY_AGENT_ID="agent_discovery_123"
|
|
36
|
+
export RETELL_BOOKING_AGENT_ID="agent_booking_456"
|
|
26
37
|
export RETELL_FROM_NUMBER="+14157774444"
|
|
27
38
|
```
|
|
28
39
|
|
|
@@ -32,7 +43,37 @@ Free tier: $10 credits (~60-90 minutes of calls). No monthly commitment.
|
|
|
32
43
|
|
|
33
44
|
All requests: `https://api.retellai.com/v2` with `Authorization: Bearer $RETELL_API_KEY`
|
|
34
45
|
|
|
35
|
-
## Make a Call
|
|
46
|
+
## Make a Discovery Call
|
|
47
|
+
|
|
48
|
+
Use the discovery agent to check venue availability, pricing, and details.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
curl -X POST "https://api.retellai.com/v2/create-phone-call" \
|
|
52
|
+
-H "Authorization: Bearer $RETELL_API_KEY" \
|
|
53
|
+
-H "Content-Type: application/json" \
|
|
54
|
+
-d '{
|
|
55
|
+
"from_number": "'$RETELL_FROM_NUMBER'",
|
|
56
|
+
"to_number": "+1VENUE_PHONE_E164",
|
|
57
|
+
"override_agent_id": "'$RETELL_DISCOVERY_AGENT_ID'",
|
|
58
|
+
"retell_llm_dynamic_variables": {
|
|
59
|
+
"venue_name": "The Venue NYC",
|
|
60
|
+
"event_date": "Friday March 28",
|
|
61
|
+
"headcount": "30 people",
|
|
62
|
+
"event_type": "community dinner",
|
|
63
|
+
"organization": "DOAC",
|
|
64
|
+
"budget": "$2,000"
|
|
65
|
+
},
|
|
66
|
+
"metadata": {
|
|
67
|
+
"call_type": "discovery",
|
|
68
|
+
"venue": "The Venue NYC",
|
|
69
|
+
"event": "NYC Dinner"
|
|
70
|
+
}
|
|
71
|
+
}'
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Make a Booking Call
|
|
75
|
+
|
|
76
|
+
Use the booking agent AFTER team approval to lock the reservation.
|
|
36
77
|
|
|
37
78
|
```bash
|
|
38
79
|
curl -X POST "https://api.retellai.com/v2/create-phone-call" \
|
|
@@ -41,14 +82,23 @@ curl -X POST "https://api.retellai.com/v2/create-phone-call" \
|
|
|
41
82
|
-d '{
|
|
42
83
|
"from_number": "'$RETELL_FROM_NUMBER'",
|
|
43
84
|
"to_number": "+1VENUE_PHONE_E164",
|
|
44
|
-
"override_agent_id": "'$
|
|
85
|
+
"override_agent_id": "'$RETELL_BOOKING_AGENT_ID'",
|
|
45
86
|
"retell_llm_dynamic_variables": {
|
|
46
87
|
"venue_name": "The Venue NYC",
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
88
|
+
"event_date": "Friday March 28",
|
|
89
|
+
"headcount": "30",
|
|
90
|
+
"event_type": "community dinner",
|
|
91
|
+
"organization": "DOAC",
|
|
92
|
+
"agreed_price": "$1,800",
|
|
93
|
+
"setup_time": "5:00 PM",
|
|
94
|
+
"event_start": "7:00 PM",
|
|
95
|
+
"event_end": "11:00 PM",
|
|
96
|
+
"email": "eve@agentmail.to",
|
|
97
|
+
"cancellation_policy": "Full refund up to 7 days before",
|
|
98
|
+
"contact_name": "Sarah"
|
|
50
99
|
},
|
|
51
100
|
"metadata": {
|
|
101
|
+
"call_type": "booking",
|
|
52
102
|
"venue": "The Venue NYC",
|
|
53
103
|
"event": "NYC Dinner"
|
|
54
104
|
}
|
|
@@ -59,7 +109,7 @@ curl -X POST "https://api.retellai.com/v2/create-phone-call" \
|
|
|
59
109
|
|
|
60
110
|
Response includes `call_id` — use to retrieve transcript after the call ends.
|
|
61
111
|
|
|
62
|
-
The `retell_llm_dynamic_variables` are injected into the agent's prompt so it knows
|
|
112
|
+
The `retell_llm_dynamic_variables` are injected into the agent's prompt so it knows the context. Always pass all relevant variables from the event and venue records.
|
|
63
113
|
|
|
64
114
|
## Get Call (Transcript + Recording + Analysis)
|
|
65
115
|
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
{
|
|
2
|
+
"agent_id": "",
|
|
3
|
+
"channel": "voice",
|
|
4
|
+
"last_modification_timestamp": 0,
|
|
5
|
+
"agent_name": "Eve - Venue Booking",
|
|
6
|
+
"response_engine": {
|
|
7
|
+
"type": "conversation-flow",
|
|
8
|
+
"version": 0,
|
|
9
|
+
"conversation_flow_id": ""
|
|
10
|
+
},
|
|
11
|
+
"language": "en-US",
|
|
12
|
+
"data_storage_setting": "everything",
|
|
13
|
+
"version": 0,
|
|
14
|
+
"is_published": false,
|
|
15
|
+
"voice_id": "retell-Cimo",
|
|
16
|
+
"max_call_duration_ms": 300000,
|
|
17
|
+
"interruption_sensitivity": 0.7,
|
|
18
|
+
"user_dtmf_options": {},
|
|
19
|
+
"conversationFlow": {
|
|
20
|
+
"conversation_flow_id": "",
|
|
21
|
+
"version": 0,
|
|
22
|
+
"global_prompt": "## Task Overview ##\n\nYou are Eve, a professional event coordinator calling back to confirm a venue booking. The team has approved this venue and you are ready to proceed. Be confident, decisive, and clear.\n\n## Response Guideline ##\n\nYou are here to BOOK, not to browse. Be decisive. If anything has changed (price, availability), do NOT commit — say you'll check with the team. Never provide payment card details on the phone — always route to email invoice. Keep the call under 4 minutes.",
|
|
23
|
+
"nodes": [
|
|
24
|
+
{
|
|
25
|
+
"instruction": {
|
|
26
|
+
"type": "static_text",
|
|
27
|
+
"text": "Hi, this is Eve calling back about the {{event_type}} on {{event_date}}. Great news — we'd love to go ahead and book with you!"
|
|
28
|
+
},
|
|
29
|
+
"name": "Greeting",
|
|
30
|
+
"edges": [
|
|
31
|
+
{
|
|
32
|
+
"condition": "Venue responds",
|
|
33
|
+
"id": "edge-greeting-1",
|
|
34
|
+
"transition_condition": {
|
|
35
|
+
"type": "prompt",
|
|
36
|
+
"prompt": "Venue responds"
|
|
37
|
+
},
|
|
38
|
+
"destination_node_id": "node-confirm-date"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"start_speaker": "agent",
|
|
42
|
+
"id": "start-node-1",
|
|
43
|
+
"type": "conversation",
|
|
44
|
+
"display_position": { "x": 500, "y": 500 }
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "Confirm Date & Price",
|
|
48
|
+
"edges": [
|
|
49
|
+
{
|
|
50
|
+
"condition": "Date and price confirmed as agreed",
|
|
51
|
+
"id": "edge-confirm-1",
|
|
52
|
+
"transition_condition": {
|
|
53
|
+
"type": "prompt",
|
|
54
|
+
"prompt": "Date and price confirmed as agreed"
|
|
55
|
+
},
|
|
56
|
+
"destination_node_id": "node-deposit"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"condition": "Price or date has changed",
|
|
60
|
+
"id": "edge-confirm-2",
|
|
61
|
+
"transition_condition": {
|
|
62
|
+
"type": "prompt",
|
|
63
|
+
"prompt": "Price or date has changed"
|
|
64
|
+
},
|
|
65
|
+
"destination_node_id": "node-changed"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"id": "node-confirm-date",
|
|
69
|
+
"type": "conversation",
|
|
70
|
+
"display_position": { "x": 1000, "y": 500 },
|
|
71
|
+
"instruction": {
|
|
72
|
+
"type": "prompt",
|
|
73
|
+
"text": "Confirm the booking: I'd like to confirm {{event_date}} for {{headcount}} guests. Just to confirm, the total is {{agreed_price}} as we discussed?"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "Deposit & Payment",
|
|
78
|
+
"edges": [
|
|
79
|
+
{
|
|
80
|
+
"condition": "Deposit and payment info obtained",
|
|
81
|
+
"id": "edge-deposit-1",
|
|
82
|
+
"transition_condition": {
|
|
83
|
+
"type": "prompt",
|
|
84
|
+
"prompt": "Deposit and payment info obtained"
|
|
85
|
+
},
|
|
86
|
+
"destination_node_id": "node-timing"
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"id": "node-deposit",
|
|
90
|
+
"type": "conversation",
|
|
91
|
+
"display_position": { "x": 1500, "y": 500 },
|
|
92
|
+
"instruction": {
|
|
93
|
+
"type": "prompt",
|
|
94
|
+
"text": "Ask: What do you need to secure the booking? Can you send a deposit invoice to {{email}}? If they ask for card details, say: We prefer to handle payment via invoice — please send it to {{email}} and we'll process it promptly."
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"name": "Confirm Timing",
|
|
99
|
+
"edges": [
|
|
100
|
+
{
|
|
101
|
+
"condition": "Timing confirmed",
|
|
102
|
+
"id": "edge-timing-1",
|
|
103
|
+
"transition_condition": {
|
|
104
|
+
"type": "prompt",
|
|
105
|
+
"prompt": "Timing confirmed"
|
|
106
|
+
},
|
|
107
|
+
"destination_node_id": "node-final"
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"id": "node-timing",
|
|
111
|
+
"type": "conversation",
|
|
112
|
+
"display_position": { "x": 2000, "y": 500 },
|
|
113
|
+
"instruction": {
|
|
114
|
+
"type": "prompt",
|
|
115
|
+
"text": "Confirm: We'd like to arrive at {{setup_time}} for setup. The event runs {{event_start}} to {{event_end}}. Does that still work? Also ask: Can I get a booking reference or confirmation number? And: Who should we contact on the day if we need anything?"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"name": "Final Wrap Up",
|
|
120
|
+
"edges": [
|
|
121
|
+
{
|
|
122
|
+
"condition": "Ready to end call",
|
|
123
|
+
"id": "edge-final-1",
|
|
124
|
+
"transition_condition": {
|
|
125
|
+
"type": "prompt",
|
|
126
|
+
"prompt": "Ready to end call"
|
|
127
|
+
},
|
|
128
|
+
"destination_node_id": "node-end"
|
|
129
|
+
}
|
|
130
|
+
],
|
|
131
|
+
"id": "node-final",
|
|
132
|
+
"type": "conversation",
|
|
133
|
+
"display_position": { "x": 2500, "y": 500 },
|
|
134
|
+
"instruction": {
|
|
135
|
+
"type": "prompt",
|
|
136
|
+
"text": "Ask: What do you need from us before the event? Any forms or paperwork? Please send everything to {{email}}. Confirm: And the cancellation policy is {{cancellation_policy}}, correct? Then end warmly: Thank you so much. We're really looking forward to it. You'll hear from us if we need anything else."
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "Terms Changed",
|
|
141
|
+
"edges": [
|
|
142
|
+
{
|
|
143
|
+
"condition": "Conversation ending",
|
|
144
|
+
"id": "edge-changed-1",
|
|
145
|
+
"transition_condition": {
|
|
146
|
+
"type": "prompt",
|
|
147
|
+
"prompt": "Conversation ending"
|
|
148
|
+
},
|
|
149
|
+
"destination_node_id": "node-end"
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
"id": "node-changed",
|
|
153
|
+
"type": "conversation",
|
|
154
|
+
"display_position": { "x": 1500, "y": 800 },
|
|
155
|
+
"instruction": {
|
|
156
|
+
"type": "prompt",
|
|
157
|
+
"text": "Say: I appreciate you letting me know about the change. Let me check with the team on that and I'll get back to you. What's the best way to reach you — email or phone? Thank them and end the call politely."
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"name": "End Call",
|
|
162
|
+
"id": "node-end",
|
|
163
|
+
"type": "end",
|
|
164
|
+
"display_position": { "x": 3000, "y": 500 },
|
|
165
|
+
"instruction": { "type": "prompt", "text": "" }
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
"start_node_id": "start-node-1",
|
|
169
|
+
"start_speaker": "agent",
|
|
170
|
+
"tools": [],
|
|
171
|
+
"model_choice": {
|
|
172
|
+
"type": "cascading",
|
|
173
|
+
"model": "gpt-4.1"
|
|
174
|
+
},
|
|
175
|
+
"knowledge_base_ids": [],
|
|
176
|
+
"mcps": [],
|
|
177
|
+
"begin_tag_display_position": { "x": 100, "y": 600 },
|
|
178
|
+
"is_published": false
|
|
179
|
+
}
|
|
180
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
{
|
|
2
|
+
"agent_id": "",
|
|
3
|
+
"channel": "voice",
|
|
4
|
+
"last_modification_timestamp": 0,
|
|
5
|
+
"agent_name": "Eve - Venue Discovery",
|
|
6
|
+
"response_engine": {
|
|
7
|
+
"type": "conversation-flow",
|
|
8
|
+
"version": 0,
|
|
9
|
+
"conversation_flow_id": ""
|
|
10
|
+
},
|
|
11
|
+
"language": "en-US",
|
|
12
|
+
"data_storage_setting": "everything",
|
|
13
|
+
"version": 0,
|
|
14
|
+
"is_published": false,
|
|
15
|
+
"voice_id": "retell-Cimo",
|
|
16
|
+
"max_call_duration_ms": 360000,
|
|
17
|
+
"interruption_sensitivity": 0.7,
|
|
18
|
+
"user_dtmf_options": {},
|
|
19
|
+
"conversationFlow": {
|
|
20
|
+
"conversation_flow_id": "",
|
|
21
|
+
"version": 0,
|
|
22
|
+
"global_prompt": "## Task Overview ##\n\nYou are Eve, a professional event coordinator calling on behalf of a community organization. You're reaching out to venues to check availability and gather details for an upcoming event.\n\n## Response Guideline ##\n\nBe warm, professional, and efficient. Ask questions naturally — do NOT read a checklist. Keep the call under 5 minutes.",
|
|
23
|
+
"nodes": [
|
|
24
|
+
{
|
|
25
|
+
"instruction": {
|
|
26
|
+
"type": "static_text",
|
|
27
|
+
"text": "Hi, my name is Eve. I'm calling on behalf of {{organization}}. We're planning a {{event_type}} and I was wondering if I could ask a few quick questions about your venue?"
|
|
28
|
+
},
|
|
29
|
+
"name": "Greeting",
|
|
30
|
+
"edges": [
|
|
31
|
+
{
|
|
32
|
+
"condition": "Venue responds",
|
|
33
|
+
"id": "edge-greeting-1",
|
|
34
|
+
"transition_condition": {
|
|
35
|
+
"type": "prompt",
|
|
36
|
+
"prompt": "Venue responds"
|
|
37
|
+
},
|
|
38
|
+
"destination_node_id": "node-availability"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"start_speaker": "agent",
|
|
42
|
+
"id": "start-node-1",
|
|
43
|
+
"type": "conversation",
|
|
44
|
+
"display_position": { "x": 500, "y": 500 }
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "Check Availability",
|
|
48
|
+
"edges": [
|
|
49
|
+
{
|
|
50
|
+
"condition": "Venue confirms availability or suggests alternative dates",
|
|
51
|
+
"id": "edge-avail-1",
|
|
52
|
+
"transition_condition": {
|
|
53
|
+
"type": "prompt",
|
|
54
|
+
"prompt": "Venue confirms availability or suggests alternative dates"
|
|
55
|
+
},
|
|
56
|
+
"destination_node_id": "node-pricing"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"condition": "Venue is not available and has no alternatives",
|
|
60
|
+
"id": "edge-avail-2",
|
|
61
|
+
"transition_condition": {
|
|
62
|
+
"type": "prompt",
|
|
63
|
+
"prompt": "Venue is not available and has no alternatives"
|
|
64
|
+
},
|
|
65
|
+
"destination_node_id": "node-no-avail"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"id": "node-availability",
|
|
69
|
+
"type": "conversation",
|
|
70
|
+
"display_position": { "x": 1000, "y": 500 },
|
|
71
|
+
"instruction": {
|
|
72
|
+
"type": "prompt",
|
|
73
|
+
"text": "Ask if they are available on {{event_date}} for {{headcount}} guests. If not, ask what nearby dates would work."
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "Pricing & Details",
|
|
78
|
+
"edges": [
|
|
79
|
+
{
|
|
80
|
+
"condition": "Got pricing and inclusion details",
|
|
81
|
+
"id": "edge-pricing-1",
|
|
82
|
+
"transition_condition": {
|
|
83
|
+
"type": "prompt",
|
|
84
|
+
"prompt": "Got pricing and inclusion details"
|
|
85
|
+
},
|
|
86
|
+
"destination_node_id": "node-catering"
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"id": "node-pricing",
|
|
90
|
+
"type": "conversation",
|
|
91
|
+
"display_position": { "x": 1500, "y": 500 },
|
|
92
|
+
"instruction": {
|
|
93
|
+
"type": "prompt",
|
|
94
|
+
"text": "Ask about pricing. What's the total cost or room hire fee? Is there a minimum spend? What's included — tables, chairs, AV equipment, staff? If they ask about our budget, say: We're working with around {{budget}} for the venue."
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"name": "Catering & Deposit",
|
|
99
|
+
"edges": [
|
|
100
|
+
{
|
|
101
|
+
"condition": "Got catering and deposit info",
|
|
102
|
+
"id": "edge-catering-1",
|
|
103
|
+
"transition_condition": {
|
|
104
|
+
"type": "prompt",
|
|
105
|
+
"prompt": "Got catering and deposit info"
|
|
106
|
+
},
|
|
107
|
+
"destination_node_id": "node-logistics"
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"id": "node-catering",
|
|
111
|
+
"type": "conversation",
|
|
112
|
+
"display_position": { "x": 2000, "y": 500 },
|
|
113
|
+
"instruction": {
|
|
114
|
+
"type": "prompt",
|
|
115
|
+
"text": "Ask about catering — do they provide in-house catering or can we bring outside catering? Is there a catering minimum? Also ask about the deposit — how much is required and when is it due?"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"name": "Logistics",
|
|
120
|
+
"edges": [
|
|
121
|
+
{
|
|
122
|
+
"condition": "Got logistics info",
|
|
123
|
+
"id": "edge-logistics-1",
|
|
124
|
+
"transition_condition": {
|
|
125
|
+
"type": "prompt",
|
|
126
|
+
"prompt": "Got logistics info"
|
|
127
|
+
},
|
|
128
|
+
"destination_node_id": "node-wrap-up"
|
|
129
|
+
}
|
|
130
|
+
],
|
|
131
|
+
"id": "node-logistics",
|
|
132
|
+
"type": "conversation",
|
|
133
|
+
"display_position": { "x": 2500, "y": 500 },
|
|
134
|
+
"instruction": {
|
|
135
|
+
"type": "prompt",
|
|
136
|
+
"text": "Naturally ask about a few more details: Is it a private room or shared space? What are the setup and teardown times? Any noise restrictions or curfews? Is the venue wheelchair accessible? Is there parking nearby? What's the cancellation policy? Don't ask all of these — pick 2-3 that flow naturally in conversation."
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "Wrap Up",
|
|
141
|
+
"edges": [
|
|
142
|
+
{
|
|
143
|
+
"condition": "Got contact info and ready to end",
|
|
144
|
+
"id": "edge-wrap-1",
|
|
145
|
+
"transition_condition": {
|
|
146
|
+
"type": "prompt",
|
|
147
|
+
"prompt": "Got contact info and ready to end"
|
|
148
|
+
},
|
|
149
|
+
"destination_node_id": "node-end"
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
"id": "node-wrap-up",
|
|
153
|
+
"type": "conversation",
|
|
154
|
+
"display_position": { "x": 3000, "y": 500 },
|
|
155
|
+
"instruction": {
|
|
156
|
+
"type": "prompt",
|
|
157
|
+
"text": "Say: Great, I'll share this with the team and we'll get back to you. What's the best way to follow up — email or phone? Get their contact name and email address. Then say: Thank you so much for your time. We'll be in touch soon."
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"name": "No Availability",
|
|
162
|
+
"edges": [
|
|
163
|
+
{
|
|
164
|
+
"condition": "Conversation ending",
|
|
165
|
+
"id": "edge-no-avail-1",
|
|
166
|
+
"transition_condition": {
|
|
167
|
+
"type": "prompt",
|
|
168
|
+
"prompt": "Conversation ending"
|
|
169
|
+
},
|
|
170
|
+
"destination_node_id": "node-end"
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
"id": "node-no-avail",
|
|
174
|
+
"type": "conversation",
|
|
175
|
+
"display_position": { "x": 1500, "y": 800 },
|
|
176
|
+
"instruction": {
|
|
177
|
+
"type": "prompt",
|
|
178
|
+
"text": "Politely ask: Do you happen to know any similar venues nearby that might work for a group of {{headcount}}? Thank them for their time regardless."
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"name": "End Call",
|
|
183
|
+
"id": "node-end",
|
|
184
|
+
"type": "end",
|
|
185
|
+
"display_position": { "x": 3500, "y": 500 },
|
|
186
|
+
"instruction": { "type": "prompt", "text": "" }
|
|
187
|
+
}
|
|
188
|
+
],
|
|
189
|
+
"start_node_id": "start-node-1",
|
|
190
|
+
"start_speaker": "agent",
|
|
191
|
+
"tools": [],
|
|
192
|
+
"model_choice": {
|
|
193
|
+
"type": "cascading",
|
|
194
|
+
"model": "gpt-4.1"
|
|
195
|
+
},
|
|
196
|
+
"knowledge_base_ids": [],
|
|
197
|
+
"mcps": [],
|
|
198
|
+
"begin_tag_display_position": { "x": 100, "y": 600 },
|
|
199
|
+
"is_published": false
|
|
200
|
+
}
|
|
201
|
+
}
|
|
File without changes
|
|
File without changes
|
/package/apps/web/.next/static/{y-ILJJ9XRxtt3WPFeIKB_ → _04kxiwtT97RJ85XJIFWM}/_buildManifest.js
RENAMED
|
File without changes
|
/package/apps/web/.next/static/{y-ILJJ9XRxtt3WPFeIKB_ → _04kxiwtT97RJ85XJIFWM}/_ssgManifest.js
RENAMED
|
File without changes
|