Skip to content

Guided Calling introductions

Guided Calling is available through the signed-in admin caller and private demo access. These browser routes use their existing session and CSRF protections. They are not a public dialing API or a new MCP capability.

Call details has three separate settings:

Setting Behavior
assistant_name The caller’s selected name, also sent as a provider variable.
include_disclosure Defaults to true. When false, Bombyx adds no standard AI disclosure.
introduction Optional custom opening text. With disclosure off, this is the complete explicit first message.

English and Spain Spanish use the same setting. When disclosure is off and the opening is blank, the caller begins naturally from the objective and selected identity. Review describes that behavior without inventing a quotation. Otherwise, review displays the exact first message. If a custom opening already identifies its speaker as AI, a structured meaning check removes only its redundant disclosure fragments. The full standard disclosure remains, followed by the distinct custom context. The reviewed composition is bound to the call settings so Start uses the same message. A failed check leaves the call undialed.

Save these as my calling defaults stores only these three settings on the current device, within the current calling access scope. It does not save the destination, recipient or objective. Changes for one call do not replace defaults. Call Again uses the historical call’s own settings. Forget this device also clears local calling defaults.

Review does not dial. Start-command identity includes the opening settings, so reusing a command ID with changed settings produces a conflict. Existing duration, destination, ownership, billing and saved-history protections remain in effect. No new public route or OpenAPI operation is introduced.

The Vapi integration explicitly selects fixed-first-message mode for an exact opening, or assistant-waits-for-user for a natural opening. Every mode receives a source-controlled per-call prompt, with model settings from the cached provider profile. Fixed messages are treated as already spoken; after the recipient greeting, a natural opening greets the person, names the selected caller and gives a brief help-seeking reason, then stops for a reply before any task question. Confusion is answered with a simple identity/purpose clarification and another pause, not a repeated business question. A missing complete provider profile stops the call before dialing. Uncertain recipients are asked for the right person before specifications; background requests for a colleague do not trigger a new introduction. The shared Vapi assistant profile is not modified.

Start call also enables local listening within the same browser gesture, before the start request completes. The monitor can wait for its listening URL without a second click. A definite start rejection clears that preparation; an uncertain start retains listening intent while the original request is recovered.

Provider-confirmed ringing permits a local Web Audio ringback tone when monitor audio has not arrived. Queued and starting calls stay silent. Real monitor PCM replaces the local tone, and leaving ringing stops it. Pause listening, dictation, backgrounding and network interruption also stop local ringback. The telephone call continues independently of the browser monitor.

Pause listening reflects the user’s listening choice. Browser audio restrictions or a failed monitor connection expose manual Listen recovery. A deliberate pause survives polling and dictation completion. These changes add no API route, request field or OpenAPI operation.

The embedded practice at /app/guided-calling and the standalone /app/guided-calling/practice use the same prerecorded scenarios. Lost luggage, bicycle servicing and parcel delivery each have three outcomes in English and Spain Spanish. Visitors choose a fictional scenario and language, review the goal, then start. Practice has no telephone input, free-text objective, microphone or custom opening. It never dials, charges, calls an AI provider at runtime or saves a server transcript.

Start enables listening and a short simulated ring. Both speakers have disclosed AI-generated voices. English captions accompany Spanish speech, with the original Spanish available to expand. At the private-guidance decision, practice pauses until a supported choice is selected. Each choice selects its own spoken exchange and outcome; the private instruction itself is never spoken.

Pause listening silences audio while captions continue. Hidden pages, loss of connectivity or suspended audio pause the simulation and require Resume. Missing or invalid audio offers Retry or an explicit captions-only continuation. End cancels playback immediately; the recap only reports confirmations from completed turns. Practice history is temporary and separate from real-call drafts and defaults.

Clips are generated offline and shipped as hashed Vite assets under /build. Real-call monitoring, guidance, billing and saved-history contracts remain unchanged.

Requesting a saved Guided call or explicitly starting a browser practice run creates a minimal internal activity event. Browser practice sends POST /app/calls/usage with surface=guided_practice and a per-run UUID event_id. Incoming browser practice uses inbound_practice. The web session and CSRF token are required; the endpoint is throttled to 10 requests per minute and 60 per hour per IP. Accepted requests return 204, invalid input 422, missing CSRF 419 (or a failed browser-origin check), and rate limiting 429. Page views, review and pause/resume do not create events. This best-effort browser event does not dial, save conversation content or grant call access.

The internal alert email contains only the activity type, server time and an authenticated system-admin link. Real calls use their existing scoped detail pages; browser demos have only an activity detail. No caller number, objective, transcript or demo-access token goes into the email. These routes are web UI telemetry, not a supported dialing or MCP API. Their OpenAPI contract is separate from tool connectors.