Release readiness
Seamless voice handoffs: WebRTC, SIP, and the multi-model constellation
Keep caller context intact across speech models, specialist agents, tools, SIP transfers, and human BPO handoffs without inventing a giant shared prompt.

Voice handoff context envelope
A reusable contract for passing verified identity state, caller goal, tool results, policy state, transcript references, and transfer evidence.
voice-handoff-context-envelope.md
“Can you tell me your booking number again?”
That sentence, after a caller has already spent six minutes with a bot, is the sound of a broken handoff.
The transfer connected. SIP did its job. The human agent picked up. Yet the conversation still failed because the reason for the call, the verified identity state, the tool results, and the customer’s corrections never arrived in a form the receiving desk could trust.
Voxeval does not call that seamless.
Modern voice systems are becoming a constellation: speech recognition, turn detection, a router, specialist models, memory, tools, text-to-speech, fraud checks, and human teams. This article is about the object that holds them together, the context envelope, and the tests that prove a transfer works at the business level.
One giant prompt is not shared memory
Teams often keep adding context to a system prompt until every specialist appears to know everything. It works for a while. Then prompts grow, latency rises, private data spreads to models that do not need it, and one stale summary quietly overrides a newer tool result.
Shared memory needs types and ownership.
The booking system owns booking status. The identity service owns verification state. The caller can correct their goal. A model summary is a convenient interpretation of the conversation, not a source of truth for those fields.
Use a context envelope that points to verified state and clearly labels model-written notes.
What goes inside the envelope
Not the whole transcript. Not by default.
A useful handoff object might include:
-
Call identity: stable conversation ID, call-leg IDs, tenant, channel, start time, and trace reference.
-
The customer’s current goal in plain language, marked as a model summary and linked to the relevant turns.
-
Verified facts. Customer reference, authentication level, consent state, language choice, and expiry, each from its owning service.
-
Tool results with timestamps and status. A booking lookup from five minutes ago may be stale.
-
Open work: what the caller asked for, what was attempted, why it did not finish, and the next allowed action.
-
Safety or policy state. Keep the detail limited to what the receiver is allowed to see.
-
A short transcript window or secure transcript reference when needed.
-
“Do not make the caller repeat this” fields, such as a corrected spelling or preferred callback time.
Every field gets provenance. Was it said by the caller, inferred by a model, returned by a tool, or confirmed by a human? Without that label, a receiving agent cannot tell fact from guess.
A fictional airline call from Bengaluru
Arjun calls to move a flight because his connection from Kochi was cancelled. The general voice agent verifies him, fetches two bookings, and routes to a disruption specialist. That specialist finds a waiver but cannot apply it because the new flight crosses a partner airline. The call then transfers to a human desk.
A weak handoff sends this:
Customer wants a change. Please help.
A useful envelope says:
- authenticated customer
C-1842, verification expires in eight minutes; - affected booking
PNR-7Q2, not the second booking on the account; - caller goal: same-day Bengaluru to Delhi, any flight after 6 PM;
- disruption waiver
WVR-91returned by policy service at 14:32 UTC; - partner-airline reissue blocked automated completion;
- customer rejected the 5:10 PM option because they cannot reach the airport;
- transfer destination: partner reissue queue;
- transcript turns 42 to 57 available to the receiving user under role policy.
The human starts at the hard part. Arjun does not perform the call again.
WebRTC and SIP solve different pieces
WebRTC is often used for browser or app media, with encryption, real-time transport, and client interaction. SIP remains common for telephony routing, carrier interconnects, contact centres, and transfers. Your call may cross both.
Neither protocol invents business context.
A SIP REFER can ask another endpoint to take over a call. Twilio’s Elastic SIP Trunking documentation describes blind transfer using SIP REFER and notes that early media is not supported in that transfer flow. A connected call can still land on the wrong queue, lose its data, or leave the caller listening to silence.
Conversation platforms may offer handoff fields and conversation identifiers. Twilio ConversationRelay, for example, documents HandoffData, conversationId, and conversation configuration. Treat those as transport hooks. Your application still defines the schema, signature, access rules, freshness, and receiving behavior.
Transfer is a two-phase job
Do not drop the original leg the moment a transfer request is sent.
First, prepare:
- Resolve the destination from current policy and queue state.
- Freeze a versioned handoff envelope.
- Send it to the receiving system and get an acknowledgement.
- Start the media transfer.
Then commit:
- Confirm the receiving endpoint answered and accepted the context.
- Tell the caller what is happening in the chosen language.
- Release the original agent only after the new leg is ready under your transfer policy.
- Record the final owner and transfer outcome.
Warm transfer may require a brief conference with the bot or human introducer. Blind transfer may be acceptable for a simple, well-instrumented queue. Pick per lane.
The awkward case is partial success. The context arrived, but the call failed. Or the call connected and the data did not. Your system needs a compensating path: retry, return to the original agent, offer a callback, or route to a safe general desk.
Context can be wrong, stale, or too generous
Version the envelope. Sign it. Expire it.
If a caller changes the requested travel date during hold music, the receiving desk must not act on the earlier version. If the identity state expires during a long queue, the human needs a clear re-verification step. If a transcript contains payment details, a BPO user without the right role should not receive them just because they are on the call.
Minimize each destination’s view.
The speech model needs audio and language hints. A router may need intent and confidence. The booking specialist needs the booking reference and allowed tools. A human supervisor may need the reason for escalation and selected transcript turns. None automatically deserves the entire session object.
Latency gets weird at the joins
Model response time can be fast while the transfer feels awful. DNS, SIP negotiation, queue lookup, context fetch, agent desktop load, and a greeting delay all add up.
Measure:
-
time from transfer decision to caller notification;
-
context-envelope acknowledgement;
-
destination ringing and answer;
-
first useful words from the receiver;
-
time until the receiver opens the relevant record;
-
caller repetition after transfer;
-
return-to-origin success when the destination fails.
Play the recordings. A seven-second music cue may feel expected. Seven seconds of digital quiet after “I’m transferring you now” feels broken.
Test more than the happy constellation
The multi-model system needs failure injection at its seams.
-
Router sends the call to the wrong specialist.
-
A specialist model is unavailable. Does the general agent keep the call?
-
Tool result arrives after the envelope was frozen.
-
The human queue answers, but its desktop cannot fetch context.
-
SIP transfer returns an error after the caller heard a success message.
-
Authentication expires in queue.
-
The caller corrects a name during the transfer announcement.
-
Two receiving systems claim ownership.
Verify the final owner, customer state, tool side effects, context version, and what the caller heard. “Transfer API returned 200” is a transport metric, not completion.
Give the receiver one good screen
The voice handoff context envelope includes a schema, provenance rules, freshness checks, and fictional examples. Map it to your contact-centre desktop before you tune another routing prompt.
Voxeval would make caller repetition after transfer a release metric. If the media connected but the person had to tell the story again, the handoff failed.
Then run the worst transfer on Friday: stale tool data, an expiring identity check, a busy specialist queue, and a caller who changes their mind.
Nobody asks for the booking number again.
Reference list