Skip to navigation

Twilio-oproepen registreren

Gebruik je eigen Twilio-infrastructuur om oproepen met ElevenLabs-agents te verbinden.

Geavanceerd

Deze handleiding behandelt een geavanceerd integratiepatroon voor ontwikkelaars die volledige controle over hun Twilio-infrastructuur nodig hebben. Overweeg voor een eenvoudigere installatie de native Twilio- integratie, die de configuratie automatisch afhandelt.

Wanneer gebruik je welke aanpak?

Voordat je begint, is het belangrijk de afwegingen tussen de native integratie en de register call-aanpak te begrijpen:

FunctieNative integratieRegister call
Eenvoud van installatieEenvoudigerComplexer
Oproepen doorverbindenOndersteundNiet ondersteund
Aangepaste Twilio-logicaBeperktVolledige controle
Beheer van telefoonnummersVia ElevenLabsVia Twilio

Overzicht

Met het register call-endpoint kun je je eigen Twilio-infrastructuur gebruiken en tegelijk ElevenLabs-agents inzetten voor het gesprek. In plaats van je Twilio-nummer naar ElevenLabs te importeren, houd je volledige controle over je Twilio-configuratie en gebruik je de ElevenLabs API om oproepen te registreren en TwiML te ontvangen om ze met je agents te verbinden.

Deze aanpak is ideaal als je:

  • Je bestaande Twilio-infrastructuur en workflows wilt behouden
  • Programmatische controle wilt over oproeprouting en -afhandeling
  • Complexe oproepflows hebt die aangepaste Twilio-logica vereisen voordat je verbinding maakt met een agent
  • ElevenLabs-agents moet integreren in een bestaand telefoniesysteem

Zo werkt het

  1. Je server ontvangt een inkomende oproep of start via Twilio een uitgaande oproep
  2. Je server roept het ElevenLabs register call-endpoint aan met gegevens over de agent en de oproep
  3. ElevenLabs retourneert TwiML dat de oproep via WebSocket met je agent verbindt
  4. Je retourneert deze TwiML aan Twilio om de verbinding tot stand te brengen

Wanneer je het register call-endpoint gebruikt, is de functie voor het doorverbinden van oproepen niet beschikbaar, omdat ElevenLabs geen directe toegang heeft tot je Twilio-accountgegevens.

Vereisten

Agentconfiguratie

Configureer je agent voordat je het register call-endpoint gebruikt met de juiste audio-indeling die Twilio ondersteunt.

1

TTS-uitvoer configureren

  1. Ga naar de instellingen van je agent
  2. Ga naar de sectie Voice
  3. Selecteer “μ-law 8000 Hz” in de dropdown
2

Invoerindeling instellen

  1. Ga naar de instellingen van je agent
  2. Ga naar de sectie Advanced
  3. Selecteer “μ-law 8000 Hz” voor de invoerindeling

API-referentie

Het register call-endpoint accepteert de volgende parameters:

ParameterTypeVereistBeschrijving
agent_idstringJaDe ID van de agent die de oproep afhandelt
from_numberstringJaHet telefoonnummer van de beller
to_numberstringJaHet telefoonnummer van de bestemming
directionstringNeeOproeprichting: inbound (standaard) of outbound
conversation_initiation_client_dataobjectNeeDynamische variabelen en configuratie-overschrijvingen

Het endpoint retourneert TwiML dat je rechtstreeks aan Twilio moet doorgeven.

Implementatie

import os
from fastapi import FastAPI, Request
from fastapi.responses import Response
from elevenlabs import ElevenLabs
app = FastAPI()
elevenlabs = ElevenLabs()
AGENT_ID = os.getenv("ELEVENLABS_AGENT_ID")
@app.post("/twilio/inbound")
async def handle_inbound_call(request: Request):
form_data = await request.form()
from_number = form_data.get("From")
to_number = form_data.get("To")
# Register the call with ElevenLabs
twiml = elevenlabs.conversational_ai.twilio.register_call(
agent_id=AGENT_ID,
from_number=from_number,
to_number=to_number,
direction="inbound",
conversation_initiation_client_data={
"dynamic_variables": {
"caller_number": from_number,
}
}
)
# Return the TwiML directly to Twilio
return Response(content=twiml, media_type="application/xml")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)

Uitgaande oproepen

Start voor uitgaande oproepen de oproep via Twilio en laat de webhook-URL naar je server wijzen, die zich vervolgens bij ElevenLabs registreert:

from twilio.rest import Client
import os
from fastapi import Request
from fastapi.responses import Response
from elevenlabs import ElevenLabs
# Initialize clients
twilio_client = Client(
os.getenv("TWILIO_ACCOUNT_SID"),
os.getenv("TWILIO_AUTH_TOKEN")
)
elevenlabs = ElevenLabs()
AGENT_ID = os.getenv("ELEVENLABS_AGENT_ID")
def initiate_outbound_call(to_number: str):
call = twilio_client.calls.create(
from_=os.getenv("TWILIO_PHONE_NUMBER"),
to=to_number,
url="https://your-server.com/twilio/outbound"
)
return call.sid
@app.post("/twilio/outbound")
async def handle_outbound_webhook(request: Request):
form_data = await request.form()
from_number = form_data.get("From")
to_number = form_data.get("To")
twiml = elevenlabs.conversational_ai.twilio.register_call(
agent_id=AGENT_ID,
from_number=from_number,
to_number=to_number,
direction="outbound",
)
return Response(content=twiml, media_type="application/xml")

Gesprekken personaliseren

Gebruik de parameter conversation_initiation_client_data om dynamische variabelen door te geven en de agentconfiguratie te overschrijven:

{
"agent_id": "your-agent-id",
"from_number": "+1234567890",
"to_number": "+0987654321",
"direction": "inbound",
"conversation_initiation_client_data": {
"dynamic_variables": {
"customer_name": "John Doe",
"account_type": "premium",
"order_id": "ORD-12345"
}
}
}

Zie voor meer informatie over dynamische variabelen en overschrijvingen de documentatie over dynamische variabelen en overschrijvingen.

Twilio-configuratie

Configureer je Twilio-telefoonnummer zodat het naar je server wijst:

1

Een openbare URL maken

Gebruik voor lokale ontwikkeling ngrok om je server beschikbaar te maken:

ngrok http 8000
2

Je Twilio-nummer configureren

  1. Ga naar de Twilio Console
  2. Ga naar Phone Numbers > Manage > Active numbers
  3. Selecteer je telefoonnummer
  4. Stel onder “Voice Configuration” de webhook-URL in op je serverendpoint (bijvoorbeeld https://your-ngrok-url.ngrok.app/twilio/inbound)
  5. Stel de HTTP-methode in op POST

Beperkingen

Wanneer je het register call-endpoint gebruikt in plaats van de native integratie:

  • Geen oproepen doorverbinden: De doorverbindfunctie is niet beschikbaar, omdat ElevenLabs geen toegang heeft tot je Twilio-gegevens
  • Handmatige configuratie: Je moet zelf audio-indelingen configureren en TwiML-routing afhandelen
  • Geen dashboardimport: Telefoonnummers die op deze manier zijn geregistreerd, worden niet weergegeven in het ElevenLabs-dashboard voor telefoonnummers