Optional abortOptional allowOptional callerInstructions used to generate the reply spoken to the human agent before their call is ended when the caller hangs up mid-transfer (after the human agent answered but before the merge). Falls back to a built-in instruction when not provided.
Use callerHangupSpeech. Return session.generateReply() from its callback to
keep generated speech.
Optional callerSpeech played before ending the human agent's call when the caller hangs up after the human
agent answers. A string is spoken with session.say() and requires a TTS model. For sessions
without TTS, use a callback that returns session.say(text, { audio }) with prerecorded audio.
The callback runs only after the caller hangs up, and the task awaits its returned handle.
This option takes precedence over callerHangupInstruction.
Optional chatOptional dtmfDTMF tones to send once the human agent's call is answered, e.g. to dial an extension or
navigate an IVR menu ('1234#'). Insert w characters to pause ~0.5s each before/between
digits ('wwww1234#' waits ~2s, useful when the destination plays a greeting before
accepting input).
Optional greetingSpeech started after the outbound SIP call is answered. A string is spoken with
session.say(). A callback runs once after answer with the consultation session and must
return a speech handle. Omit this option to let the destination speak first. The answer signal
does not distinguish a person from voicemail or an IVR, so an enabled greeting can overlap
automated audio.
Optional holdAudio played to the caller while they are on hold during the transfer.
Optional instructionsInstructions for the human agent briefing. Pass a full string to replace the built-in prompt
entirely, or InstructionParts to override individual sections (e.g. persona) while
keeping the built-in template and auto-formatted conversation history.
Optional llmOptional ringingHow long to wait, in milliseconds, for the human agent to answer before giving up. The underlying SIP API only supports whole-second granularity, so the value is rounded to the nearest second.
Optional roomName of the room used to dial and brief the human agent. Defaults to
${callerRoom.name}-human-agent.
Set this to control the briefing room's configuration: pre-create a room
under this name (e.g. with RoomServiceClient.createRoom and an egress
request to record the transfer leg) before running the task, and the
transfer agent joins the pre-configured room instead of implicitly
creating one with project defaults.
The room is deleted when the transfer completes, fails, or is cancelled (the same lifecycle as the default room), which also ends any egress attached to it. Must differ from the caller room's name.
Optional sipThe phone number or SIP URI to dial for the human agent.
Optional sipLow-level SIP connection config for originating calls through a custom SIP domain.
Optional sipHeaders to include on the outbound SIP call.
Optional sipOptional SIP From number. Falls back to LIVEKIT_SIP_NUMBER.
Optional sipID of a pre-configured LiveKit SIP outbound trunk used to originate the call.
Falls back to the LIVEKIT_SIP_OUTBOUND_TRUNK environment variable when not provided.
Optional sttOptional toolsOptional ttsOptional turnOptional vad
Signal for application cancellation, such as a consult deadline or application shutdown.
Do not abort this signal when the caller disconnects. The task handles caller disconnects so it can play
callerHangupInstructionbefore it ends an answered consultation.A successful participant move wins if it completes after the signal aborts. The task stops waiting for a pending SIP request but cannot cancel it.