Hoppa till navigering

Registrera Twilio-samtal

Använd din egen Twilio-infrastruktur för att ansluta samtal till ElevenLabs-agenter.

Avancerat

Den här guiden beskriver ett avancerat integrationsmönster för utvecklare som behöver full kontroll över sin Twilio-infrastruktur. För en enklare installation kan du använda den inbyggda Twilio- integrationen, som hanterar konfigurationen automatiskt.

När du ska använda respektive metod

Innan du börjar bör du förstå avvägningarna mellan den inbyggda integrationen och metoden för att registrera samtal:

FunktionInbyggd integrationRegistrera samtal
Enkel att konfigureraEnklareMer komplex
SamtalsöverföringarStödsStöds inte
Anpassad Twilio-logikBegränsadFull kontroll
TelefonnummerhanteringVia ElevenLabsVia Twilio

Översikt

Slutpunkten för att registrera samtal gör att du kan använda din egen Twilio-infrastruktur samtidigt som du använder ElevenLabs-agenter för samtalet. I stället för att importera ditt Twilio-nummer till ElevenLabs behåller du full kontroll över din Twilio-konfiguration och använder ElevenLabs API för att registrera samtal och ta emot TwiML för att ansluta dem till dina agenter.

Den här metoden är idealisk när du:

  • Behöver behålla din befintliga Twilio-infrastruktur och dina arbetsflöden
  • Vill ha programmatisk kontroll över samtalsdirigering och hantering
  • Har komplexa samtalsflöden som kräver anpassad Twilio-logik innan du ansluter till en agent
  • Behöver integrera ElevenLabs-agenter i ett befintligt telefonisystem

Så fungerar det

  1. Din server tar emot ett inkommande samtal eller startar ett utgående samtal via Twilio
  2. Din server anropar ElevenLabs slutpunkt för att registrera samtal med information om agenten och samtalet
  3. ElevenLabs returnerar TwiML som ansluter samtalet till din agent via WebSocket
  4. Du returnerar denna TwiML till Twilio för att upprätta anslutningen

När du använder slutpunkten för att registrera samtal är funktionen för samtalsöverföring inte tillgänglig eftersom ElevenLabs inte har direkt åtkomst till dina Twilio-kontouppgifter.

Förutsättningar

Agentkonfiguration

Innan du använder slutpunkten för att registrera samtal ska du konfigurera agenten att använda rätt ljudformat som stöds av Twilio.

1

Konfigurera TTS-utdata

  1. Gå till agentinställningarna
  2. Gå till avsnittet Voice
  3. Välj “μ-law 8000 Hz” i rullgardinsmenyn
2

Ange indataformat

  1. Gå till agentinställningarna
  2. Gå till avsnittet Advanced
  3. Välj “μ-law 8000 Hz” som indataformat

API-referens

Slutpunkten för att registrera samtal tar emot följande parametrar:

ParameterTypKrävsBeskrivning
agent_idstringJaID:t för agenten som ska hantera samtalet
from_numberstringJaUppringarens telefonnummer
to_numberstringJaTelefonnummer för destinationen
directionstringNejSamtalsriktning: inbound (standard) eller outbound
conversation_initiation_client_dataobjectNejDynamiska variabler och konfigurationsåsidosättningar

Slutpunkten returnerar TwiML som du ska skicka direkt till Twilio.

Implementering

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)

Utgående samtal

För utgående samtal startar du samtalet via Twilio och pekar webhook-URL:en till din server, som sedan registrerar det hos ElevenLabs:

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")

Personalisera samtal

Använd parametern conversation_initiation_client_data för att skicka dynamiska variabler och åsidosätta agentkonfiguration:

{
"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"
}
}
}

Mer information om dynamiska variabler och åsidosättningar finns i dokumentationen om dynamiska variabler och åsidosättningar.

Twilio-konfiguration

Konfigurera ditt Twilio-telefonnummer så att det pekar på din server:

1

Skapa en offentlig URL

För lokal utveckling använder du ngrok för att exponera din server:

ngrok http 8000
2

Konfigurera ditt Twilio-nummer

  1. Gå till Twilio Console
  2. Gå till Phone Numbers > Manage > Active numbers
  3. Välj ditt telefonnummer
  4. Under “Voice Configuration” anger du webhook-URL:en till din serverslutpunkt (t.ex. https://your-ngrok-url.ngrok.app/twilio/inbound)
  5. Ange HTTP-metoden POST

Begränsningar

När du använder slutpunkten för att registrera samtal i stället för den inbyggda integrationen:

  • Inga samtalsöverföringar: Överföringsfunktionen är inte tillgänglig eftersom ElevenLabs inte har åtkomst till dina Twilio-uppgifter
  • Manuell konfiguration: Du måste själv konfigurera ljudformat och hantera TwiML-dirigering
  • Ingen import till dashboarden: Telefonnummer som registreras på detta sätt visas inte i ElevenLabs dashboard för telefonnummer