Concepts
Transfers
Warm handoff to a human during an inbound call.
Beta
1-phone transfers (single destination) are validated in production. Multi-hop fallback chains (2–5 destinations) are supported in the code path but haven't been end-to-end exercised — treat them as beta and verify with your own use case before going live.
Inbound calls expose a transfer_to_human tool to the conversation model.
When invoked, OpenPhn walks a fallback chain of up to five destination
phones configured on the number.
Configuring destinations
Each number has a transfer_destinations list:
[
{
"label": "Front desk",
"phone": "+14155551111",
"enabled": true,
"order": 0,
"max_attempts": 1
},
{
"label": "On-call manager",
"phone": "+14155552222",
"enabled": true,
"order": 1,
"max_attempts": 1
}
]Rules:
- Up to 5 destinations.
ordermust be contiguous starting at 0.phonemust be a valid E.164 NANP number.enabled: falseskips the destination without reordering.
Transfer flow
- Conversation model decides a human is needed and invokes
transfer_to_human. - OpenPhn plays a brief hold message to the caller (best-effort).
- Twilio dials destination at
order=0. If no answer / busy / voicemail, falls through toorder=1, and so on. - On success, the call's outcome logs the destination's
labelandphone.
Update destinations
PATCH /v1/numbers/{number_id} with a new transfer_destinations array.
The whole list is replaced.