Ending Calls
UseSDKAgentEndCallEvent to end the call:
Tools that send SDK events must use
await self.send_event() and return None. Simply returning the event object won’t work.Transferring to Humans
UseSDKAgentTransferConversationEvent to hand off to a human:
Transfer Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
transfer_call_number | string | Yes | Human agent’s phone (E.164) |
transfer_options | TransferOption | Yes | Transfer type |
on_hold_music | string | No | "ringtone", "relaxing_sound", "uplifting_beats", or "none" |
Transfer Types
Call Flow Events
When these events trigger, they appear in call logs:| Event | Log Entry |
|---|---|
SDKAgentEndCallEvent | hangupSource: "agent" |
SDKAgentTransferConversationEvent | transferTarget: "+1..." |
Tips
Announce transfers
Announce transfers
Tell the user before transferring: “I’ll connect you to…”
Use cold transfer for simple handoffs
Use cold transfer for simple handoffs
Faster than warm transfers.
Graceful endings
Graceful endings
Say goodbye before ending, don’t just hang up.
Fallback numbers
Fallback numbers
Have a general transfer number if specific departments unavailable.

