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 setting | Value from Bird |
|---|---|
| Outbound Address | The complete Bird trunk hostname, without a sip: prefix. |
| SIP Trunk Username | bird for API-key digest authentication. |
| SIP Trunk Password | The secret of a Voice-write key allowed on this trunk. |
| Phone number | The E.164 caller identity you verified or configured for this route. |
| Transport | A 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 listKeep 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
- SIP trunks
- Receiving calls
- Voice troubleshooting
- ElevenLabs documentation
- Compare Bird and ElevenLabs
- All migration guides
- Voice AI resources
Verwandte Ressourcen
Weiter mit der Dokumentation, Anleitungen und Beispielen zu diesem Thema. Die Ressourcen sind auf Englisch.
Das Konzept verstehenWhat is a voice API?Die Funktion erkundenVoiceImplementierungsleitfadenVoice overview
Implementierungs-Briefing erhalten