Implement blind vs. attended call transfer using SIP REFER and the Replaces header.
domain: datatracker.ietf.org · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
For a blind transfer, send REFER with a single Refer-To header pointing at the new target; expect 202 Accepted, then NOTIFY messages (Event: refer, body message/sipfrag) reporting progress (100 Trying, then 200 OK or a failure code).
For an attended transfer, first establish a consultation call with the target, then send REFER to the original party with Refer-To containing a Replaces parameter referencing the consultation dialog's Call-ID/to-tag/from-tag.
The receiving UA sends a new INVITE carrying the Replaces header; the far end matches it to the consultation dialog and connects to the original party instead.
Require Supported: replaces (or Require: replaces) on any leg where Replaces-based attended transfer must succeed.
On CPaaS platforms, check whether 'transfer' is real SIP REFER or a proxied/conference-based abstraction — behavior and control differ.
Known gotchas
Twilio Elastic SIP Trunking supports blind transfer only via literal SIP REFER; its 'warm transfer' tutorials use <Dial><Conference> plus REST-created legs, not REFER/Replaces.
Telnyx exposes both a literal-REFER command (actions/refer, Telnyx leaves the media path) and a separate Call Control transfer command (actions/transfer, Telnyx stays in the path) — they are not interchangeable.
An unmatched or already-terminated Replaces dialog yields 481 or 603 respectively — build for both failure cases.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?