Bird

Move ElevenLabs telephony to Bird

Keep the ElevenLabs agent runtime while moving its telephone connection to Bird. Test each direction and the customer conversation separately.

1. Choose what is moving

Decide whether you are retaining ElevenLabs as the conversational runtime. This guide moves its telephone connection to Bird; it does not claim to copy or replace the runtime’s prompts, models or tools.

2. Prepare the Bird trunk

Create a trunk and enable the required direction. For incoming calls, configure the runtime’s documented delivery gateway. For outgoing calls, use the Bird SIP domain and an allowed authentication method.

3. Connect the runtime

Import the existing number as a SIP-trunk phone number using ElevenLabs’ setup. Map the settings to the tested Bird trunk:
ElevenLabs settingValue from Bird
Outbound AddressThe complete Bird trunk hostname, without a sip: prefix.
SIP Trunk Usernamebird for API-key digest authentication.
SIP Trunk PasswordThe secret of a Voice-write key allowed on this trunk.
Phone numberThe E.164 caller identity you verified or configured for this route.
TransportA protocol enabled on both sides; Bird uses port 5061 for TLS.
For inbound calls, use the runtime’s published SIP destination as a Bird delivery gateway, enable the trunk’s inbound direction and point a test number to it. Match the imported number’s formatting to the SIP user identity. Media encryption is a separate setting from signaling transport; verify the negotiated media path.
After assigning the intended ElevenLabs agent, its outbound-call endpoint accepts this body:
Codebeispiel
{
  "agent_id": "YOUR_ELEVENLABS_AGENT_ID",
  "agent_phone_number_id": "YOUR_IMPORTED_PHONE_NUMBER_ID",
  "to_number": "YOUR_CONTROLLED_TEST_NUMBER"
}
Submit it to ElevenLabs’ POST /v1/convai/sip-trunk/outbound-call with its xi-api-key credential. This places a real call using the selected runtime and trunk. Keep the returned conversation_id and sip_call_id alongside your Bird call record; a successful API response alone does not prove that the customer answered.
First prove the Bird trunk with the terminal quickstart. Set the caller ID, destination and credential variables from that guide. This places a real call through the trunk without relying on the agent runtime:
Codebeispiel
bird voice tools test-call "$VOICE_TO" \
  --trunk "$BIRD_TRUNK_ID" \
  --caller-id "$BIRD_CALLER_ID" \
  --protocol tls \
  --duration 30s

bird voice list
Keep provider runtime sessions and Bird call IDs as separate references. The external runtime’s create-call operation is not a Bird SDK method, and a trunk ID cannot replace an agent ID. Test routing and two-way audio first, then the runtime’s actual tool calls, interruptions and human handoff.

4. Route a controlled test

Point a test Voice number to the Bird trunk. Verify caller and agent audio, interruption behavior, one business tool and human handoff. Match the runtime session to the Bird call record.

5. Move production numbers deliberately

Complete any number transfer and registration work before changing the production route. Keep an alternate receiving route available and preserve active calls while assigning new calls to the tested connection.

References and next steps

Verwandte Ressourcen

Weiter mit der Dokumentation, Anleitungen und Beispielen zu diesem Thema. Die Ressourcen sind auf Englisch.

Implementierungs-Briefing erhalten