📵
Call ID
— no active call —
Join URL
—
🚀 POST /aikiosk/callstart STEP 1
ℹ️Simulates kiosk motion detection triggering a new AI call session. Returns callId + joinUrl.
📡 Request Config
🪪 Identity Headers
🖥 Kiosk Context Headers
📬 Response
// Response will appear here...
📊 System Architecture Flow
📹 Kiosk Camera
Motion Detected
HTTP POST→
🖥 Node.js Backend
/aikiosk/callstart
REST API→
🤖 Ultravox
Agent + templateContext
↓
🔊 Ultravox Speaks
voiceprompt → TTS
↓
🎤 Guest Voice
Audio stream
WebSocket→
🤖 Ultravox STT
Processes audio
↓
🔧 Ultravox Tool
nextstep_and_valuestore_tool
HTTP Tool Call→
🖥 Backend
/sendCallResponse
Socket.IO emit→
📺 Kiosk Screen
GUEST_RESPONSE event
↓
↓
✅ Voice Screen
ACK with next screen data
OR
⌨️ Input Screen
Email / Text — no voice
↓
/sendKioskResponse
Silent context + forced speech
⟳ Loop repeats until call ends — Ultravox speaks next question, guest responds again
🏷 Component Legend
📹 Kiosk/Guest
🖥 Node.js Backend
🤖 Ultravox AI
📡 Socket.IO
⌨️ Manual Input
operation_selection
Agent greets → language choice → operation menu
Agent greets → language choice → operation menu
walk_in
Agent greets → reservation confirmation → check-in flow
Agent greets → reservation confirmation → check-in flow
templateContext
Hotel policy, property data, current date/time injected at call start
Hotel policy, property data, current date/time injected at call start
ACK pattern
emitAndWaitForAck — backend blocks until kiosk confirms next screen
emitAndWaitForAck — backend blocks until kiosk confirms next screen
⚙️ Global Configuration
💡Values saved here auto-populate all test forms. Stored in sessionStorage only — never sent anywhere until you trigger an API call.
📡 Server
🪪 Identity Headers
🖥 Kiosk Context Headers
🤖 Ultravox
🔌 API Endpoint Reference
POST
{baseUrl}/aikiosk/callstartBody: propertyid, kioskid, operation | Headers: subdomainname, accesskey, token, uid, companyid, ...
POST
{baseUrl}/sendCallResponseBody: subdomainname, kioskid, screenname, data_feature (JSON string)
POST
{baseUrl}/sendKioskResponseBody: callid, screenname, previousscreenname, voiceprompt, options[], keyalias[], collecteddata{}
POST
https://api.ultravox.ai/api/calls/{callId}/send_data_messageHeader: X-API-Key | Body: type, text/content, urgency
WS
{joinUrl}Binary: s16le PCM 48kHz bidirectional | Text: JSON (state, transcript, playback_clear_buffer, ...)