Zum Hauptinhalt springen
connic
Starte kostenlos
VerbindungenBeta

Twilio Voice

Mit einer bestehenden Twilio-Rufnummer und einem connic-Voice-Agenten Anrufe annehmen und führen.

Zuletzt aktualisiert
ModiSync (eingehende Anrufe) und Outbound (ausgehende Anrufe)
YAML-Typtwilio
ZugangsdatenEin Kontozugang (Connection) vom Typ Twilio
BridgeNicht unterstützt
Custom DomainNicht unterstützt
Verknüpfte AgentenGenau ein Agent, deployt mit voice_config
Während der Pauseconnic lehnt eingehende Anrufe ab. Twilio folgt dann der Einstellung Primary handler fails der Rufnummer; ohne sie hört der Anrufer die Fehleransage von Twilio.

Einrichtung

  1. Ergänze an einem LLM-Agenten voice_config und ein unterstütztes Echtzeitmodell, speichere bei Bedarf die Zugangsdaten des Modellanbieters im Projekt und stelle den Agenten im Environment bereit. Siehe connic Voice.

  2. Wähle in Twilio eine bestehende Rufnummer, die Anrufe empfangen kann, und prüfe, welche Region ihre eingehenden Anrufe verarbeitet. Gehört die Nummer zu einem SIP-Trunk, entferne sie aus dem Trunk.

  3. Öffne den Agenten. Klicke im Connector Flow auf Add inbound connector, dann auf Create New Connector, und wähle Twilio Voice. Wähle unter Connection einen Twilio-Kontozugang oder lege einen mit Region, Account SID und dem Auth Token dieser Region an.

  4. Wähle die Phone number. Rufnummern, die die Verbindung nicht nutzen kann, etwa eine Nummer in einem SIP-Trunk oder eine, die schon eine andere connic-Verbindung nutzt, erscheinen deaktiviert in der Liste und nennen den Grund. Ergänze bei Bedarf Transfer numbers und eine Fallback number und klicke auf Create. connic verknüpft den Agenten und richtet den Webhook für eingehende Anrufe der Rufnummer auf connic aus; was dabei ersetzt wird, steht unter Einrichtung bei Twilio.

  5. Rufe die Nummer an und öffne den Run, um das Gespräch und die verwendeten Tools zu prüfen.

Im Code

Deklariere die Verbindung in connectors/*.yaml. Das Deployment sucht phone_number unter den anruffähigen Rufnummern des Kontos, das der Kontozugang verbindet. Bei der Aktivierung wird der Agent verknüpft; er braucht in diesem Deployment voice_config. Setze jede Rufnummer in Anführungszeichen. Ohne sie liest YAML die Nummer als Ganzzahl und das Deployment scheitert.

connectors/support-line.yaml
type: twilio
connection: support-twilio
config:
  phone_number: "+4930123456"
  transfer_numbers:
    - "+4930123456789"
  allowed_callers:
    - "+4915112345678"
  fallback_number: "+4930987654321"
  max_wait_seconds: 60
  hold_audio_path: assets/hold.mp3
agents:
  - support-voice

Konfiguration

Die Felder einer Twilio-Voice-Verbindung, in connectors/*.yaml genauso wie in der REST API und connic MCP. Die Beschreibungen nennen die passende Einstellung im Dashboard. Felder, die alle Verbindungen gemeinsam haben, etwa agents und environments, beschreibt Verbindungen im Code. Eine Twilio-Voice-Verbindung braucht ihren Voice-Agenten von Anfang an: Das Dashboard verknüpft den Agenten, von dem aus du sie anlegst, oder fragt unter Voice agent nach einem. Über die REST API oder connic MCP nennt die Anfrage in agent_name einen Agenten, der mit voice_config deployt ist.

FeldTypStatusBeschreibung
typestringErforderlichtwilio.
connectionstringErforderlichName oder ID eines Twilio-Kontozugangs, der Region, Account SID und Auth Token enthält. Dashboard: Connection.
modestringOptionalsync nimmt Anrufe an die Nummer an; outbound ruft an, sobald ein Run des Agenten startet. Lässt sich nach dem Anlegen nicht mehr ändern. Dashboard: Mode.Standard: sync
configobjectErforderlichEinstellungen für Twilio Voice.
phone_numberstringErforderlichDie Rufnummer, die die Anrufe empfängt oder von der aus angerufen wird, in Anführungszeichen im E.164-Format wie "+4930123456", oder die Twilio-SID der Nummer, die mit PN beginnt. Sie muss eine anruffähige Nummer des Kontos sein. Dashboard: Phone number.
transfer_numbersstring[]OptionalRufnummern im E.164-Format, an die Tools des Agenten Anrufer mit TransferCall weiterleiten dürfen. Eine Liste oder ein String mit Nummern, getrennt durch Zeilenumbrüche oder Kommas. Höchstens 20; doppelte Nummern fallen weg. Dashboard: Transfer numbers.
allowed_callersstring[]OptionalNur Sync. Nur diese Nummern können den Agenten anrufen, im E.164-Format, als Liste oder als ein String mit Zeilenumbrüchen oder Kommas. Höchstens 100. Anrufe von anderen und unterdrückten Nummern weist Twilio ab, bevor sie angenommen werden; siehe Erlaubte Anrufer. Dashboard: Allowed callers.
tostringOptionalNur Outbound. Die anzurufende Nummer im E.164-Format, wenn die Eingabe eines Runs kein to enthält. Dashboard: Default number to call.
ring_secondsintegerOptionalNur Outbound. Wie lange es klingelt, 5 bis 120 Sekunden, bevor der Run fehlschlägt, weil niemand abgenommen hat. Dashboard: Ring time (seconds).Standard: 30
fallback_numberstringOptionalNur Sync. Rufnummer im E.164-Format, die angenommene Anrufe erhält, die der Agent nicht zu Ende führen kann, und Anrufe, die die maximale Wartezeit erreicht haben. Dashboard: Fallback number.
max_wait_secondsintegerOptionalNur Sync. Wie lange Anrufer auf den Agenten warten, wenn er schon so viele Anrufe führt, wie sein Limit für gleichzeitige Runs erlaubt, von 0 bis 900 Sekunden. Bei 0 gehen solche Anrufe sofort an die Ausweichnummer. Dashboard: Maximum wait (seconds).Standard: 30
hold_audio_pathstringOptionalNur Sync. Pfad einer MP3- oder WAV-Datei in deinem Projektordner, etwa assets/hold.mp3, höchstens 10 Minuten lang. Sie wird mit dem Projekt deployt. Wartende Anrufer hören sie in Dauerschleife, ohne sie das Freizeichen. Dashboard: Hold audio.

Kontozugang

Ein Twilio-Kontozugang enthält die Zugangsdaten des Kontos und kann beliebig viele Verbindungen für Twilio Voice und Twilio Messaging im selben Konto und in derselben Region bedienen. Mit Account SID und Auth Token prüft connic das Konto, listet Rufnummern auf und setzt Webhooks. Mit dem Auth Token prüft connic außerdem die Signatur jeder Anfrage von Twilio.

EinstellungBeschreibung
RegionUS1 (USA), IE1 (Irland) oder AU1 (Australien). Standard ist US1. Wähle die Region, die in Twilio die eingehenden Anrufe der Rufnummer verarbeitet. In connic legt die Region nur die Twilio-API fest; welche Region einen Anruf verarbeitet, stellst du an der Nummer in Twilio ein. Twilio-Messaging-Verbindungen mit demselben Kontozugang funktionieren in US1 mit allen Kanälen und in IE1 nur mit SMS-Text, in AU1 gar nicht.
Account SIDDie Kennung des Twilio-Kontos, beginnend mit AC. Das Konto muss aktiv sein.
Auth TokenDer Auth Token der gewählten Region, keine API-Key-SID und kein API-Key-Secret. Twilio-Zugangsdaten gelten je Region; siehe Manage Regional API Credentials.

Erzeugte Werte

connic erzeugt diesen Wert beim Anlegen der Verbindung und behält ihn bei Änderungen und Deployments. Er gehört nicht in YAML-Dateien; connic lint lehnt ihn ab.

WertModiBeschreibung
Incoming-call webhookSyncDie URL, die connic als Webhook für eingehende Anrufe an der Rufnummer einträgt. Du musst sie nicht selbst in Twilio eintragen.

Agent-Input

Jeder Anruf startet einen Run mit den Anrufdaten:

input.json
{
  "call_id": "CA00000000000000000000000000000001",
  "from": "+4915112345678",
  "to": "+4930123456",
  "provider": "twilio",
  "caller_name": "Alex Example",
  "forwarded_from": "+4940123456789",
  "raw": {
    "AccountSid": "AC00000000000000000000000000000000",
    "CallSid": "CA00000000000000000000000000000001",
    "From": "+4915112345678",
    "To": "+4930123456",
    "Direction": "inbound",
    "CallerName": "Alex Example",
    "ForwardedFrom": "+4940123456789"
  }
}
  • call_id ist die Twilio CallSid.
  • caller_name stammt aus CallerName von Twilio und setzt die Anrufer-ID-Abfrage für die Rufnummer in Twilio voraus.
  • forwarded_from stammt aus ForwardedFrom von Twilio. Twilio sendet den Parameter nur, wenn der Netzbetreiber des Anrufers die weiterleitende Nummer übermittelt.
  • raw enthält alle Parameter der Twilio-Anfrage zum eingehenden Anruf, etwa die Standortfelder und StirVerstat, sofern Twilio sie liefert.

Anrufe

Im Sync-Modus nimmt Twilio Voice Anrufe an die Nummer an. connic überträgt das Audio zwischen Twilio und dem Agenten in beide Richtungen. Bis der Agent sprechen kann, hört der Anrufer ein Freizeichen. Die Run-Details zeigen das Transkript und die Tools, die der Agent verwendet hat; die Zeiten im Trace zeigen, wo eine Antwort gedauert hat oder ein Tool fehlgeschlagen ist. Tastatureingaben und Auflegen richten sich nach den Voice-Einstellungen des Agenten.

Ausgehende Anrufe

Im Outbound-Modus ist jeder Run des verknüpften Agenten ein Anruf. Klicke im Connector Flow des Agenten auf Add outbound connector, wähle Twilio Voice und als Modus Outgoing calls. Die Runs startest du wie jeden anderen, etwa über einen Webhook-Connector oder aus einem anderen Agenten mit trigger_agent.

Sobald ein Run startet, ruft connic von der Nummer der Verbindung aus die Nummer im Feld to der Eingabe an, oder die voreingestellte Nummer der Verbindung, wenn die Eingabe keine enthält. Mit greeting spricht der Agent zuerst, sobald jemand abnimmt; ohne Begrüßung wartet er, bis sein Gegenüber spricht. Über den Anruf weiß er, was in der Eingabe des Runs steht. Durch Telefonmenüs kommt der Agent mit press_keys, und in einer Warteschleife kann er warten, bis sich jemand meldet. Runs über das max_concurrent_runs des Agenten hinaus warten, bevor connic wählt. So muss niemand, der abnimmt, auf den Agenten warten. Der Agent kann den Anruf wie einen eingehenden an eine Weiterleitungsnummer übergeben.

Der Run schlägt fehl, wenn innerhalb der Klingeldauer niemand abnimmt, besetzt ist oder der Anruf nicht zustande kommt. Die Fehlermeldung nennt den Grund. Nimmt eine Mailbox ab, hört der Agent ihre Ansage wie die einer Person. Schreib deshalb in den System-Prompt des Agenten, was er dann tun soll, etwa nach dem Signalton eine kurze Nachricht hinterlassen und auflegen.

connectors/reminder-calls.yaml
type: twilio
mode: outbound
connection: support-twilio
config:
  phone_number: "+4930123456"
  ring_seconds: 40
agents:
  - reminder-calls
input.json
{
  "to": "+4915112345678",
  "customer": "Alex Beispiel",
  "reason": "Termin morgen um 10:00 bestätigen"
}

Erlaubte Anrufer

Mit erlaubten Anrufern weist connic Anrufe von allen anderen und von unterdrückten Nummern ab, bevor Twilio sie annimmt. Sie starten also keinen Run. Die Logs der Verbindung zeigen jeden abgewiesenen Anruf mit seiner Nummer. Anrufernummern lassen sich fälschen. Verlass dich zum Schutz sensibler Daten deshalb nicht allein auf diese Liste.

Wartende Anrufer

Jeder Anruf ist ein Run. Der Agent führt also so viele Anrufe gleichzeitig, wie max_concurrent_runs erlaubt. Alle weiteren Anrufer warten und kommen in der Reihenfolge an die Reihe, in der sie angerufen haben. Während sie warten, hören sie das Freizeichen oder die Warteschleifenmusik der Verbindung. Wer nach der maximalen Wartezeit noch wartet, landet bei der Ausweichnummer. Gibt es keine, endet der Anruf und sein Run schlägt fehl.

Fehlt die Datei für die Warteschleifenmusik oder lässt sie sich nicht abspielen, hören wartende Anrufer das Freizeichen, und die Logs der Verbindung nennen den Grund. Eine geänderte Datei hören Anrufer nach dem nächsten Deploy.

Weiterleitung und Ausweichnummer

Löst ein Tool des Agenten TransferCall mit einer der Weiterleitungsnummern der Verbindung aus, wählt Twilio diese Nummer. Meldet sich dort niemand, endet der Anruf. Kann ein angenommener eingehender Anruf nicht weiterlaufen, etwa weil der Run fehlschlägt oder der Anrufer die maximale Wartezeit erreicht hat, wählt Twilio stattdessen die Ausweichnummer. Ohne Ausweichnummer endet der Anruf. Die Ausweichnummer gilt nur im Sync-Modus und nicht für Weiterleitungen.

Anrufe, die connic nicht annimmt, etwa solange die Verbindung pausiert ist oder das Environment kein aktives Deployment hat, gehen an die Einstellung Primary handler fails der Rufnummer in Twilio. connic ändert sie nicht. Verweist sie auf TwiML, das eine Nummer von Mitarbeitenden wählt, werden auch diese Anrufe weitergeleitet.

Einrichtung bei Twilio

Beim Anlegen der Verbindung im Sync-Modus setzt connic den Webhook für eingehende Anrufe der Rufnummer auf die Webhook-URL der Verbindung mit HTTP POST und entfernt eine TwiML App von der Nummer. Die Einstellung Primary handler fails und die Messaging-Einstellungen der Nummer bleiben unverändert. Im Outbound-Modus ändert connic nichts an der Nummer; Twilio muss Anrufe vom Konto aus zu den angerufenen Nummern erlauben.

Das Anlegen der Verbindung ersetzt einen vorhandenen Webhook für eingehende Anrufe oder eine TwiML App der Rufnummer. connic schreibt die vorherigen Werte in die Logs der Verbindung und in das Audit Log des Projekts, wo sie auch nach dem Löschen der Verbindung erhalten bleiben. Beim Löschen der Verbindung stellt connic sie nicht wieder her.
  • Zugangsdaten und Region änderst du am Kontozugang. Einen anderen Kontozugang oder eine andere Rufnummer wählst du an der Verbindung.
  • Beim Wechsel der Rufnummer setzt connic den Webhook an der neuen Nummer und entfernt ihn von der bisherigen Nummer, sofern er dort noch auf diese Verbindung zeigt.
  • Beim Löschen der Verbindung entfernt connic den Webhook der Rufnummer nur, wenn er noch auf connic zeigt.

Limits und Fehler

LimitWert
Verknüpfte AgentenGenau einer, mit voice_config im aktiven Deployment des Environments
Weiterleitungsnummern20 pro Verbindung
Erlaubte Anrufer100 pro Verbindung
Maximale Wartezeit0 bis 900 Sekunden, standardmäßig 30
Klingeldauer5 bis 120 Sekunden, standardmäßig 30
WarteschleifenmusikMP3 oder WAV, bis zu 10 Minuten
Eingehende Anrufe1.000 pro Minute und Verbindung. Darüber erhält Twilio 429.
GesprächsdauerDer Timeout des Agenten, begrenzt durch das Run-Timeout des Plans; bei Pro 60 Minuten
Aktive VerbindungenIst das Limit aktiver Verbindungen des Tarifs erreicht, schlägt das Anlegen mit 403 fehl. connic legt die Verbindung dann nicht pausiert an, weil sie die Rufnummer bei Twilio ändern würde. Ein Deployment, das sie am Limit anlegen oder zurückholen würde, schlägt fehl.
Fehler oder SymptomLösung
Remove this number from its Twilio SIP trunk before connecting itEntferne die Rufnummer in Twilio aus dem Trunk und lege die Verbindung erneut an.
This number is connected to another connic connectorLösche zuerst die andere Verbindung oder wähle eine andere Rufnummer.
The selected Twilio number does not support voiceWähle eine Rufnummer, die Anrufe empfangen kann.
Twilio request failedPrüfe, ob der Auth Token zur Region des Kontozugangs gehört und das Konto aktiv ist.
Twilio did not remove the number's TwiML ApplicationEntferne die TwiML App in Twilio von der Rufnummer und versuche es erneut.
Deploy this agent with voice_config before linking a voice connectorErgänze voice_config am Agenten und deploye ihn in das Environment der Verbindung.
Anrufe erreichen den Agenten nichtPrüfe, ob die Verbindung aktiv ist und mit genau einem Agenten verknüpft ist, der im aktiven Deployment voice_config hat. Lies den Fehler des Runs und die Fehlerdetails des Anrufs in Twilio.