Zum Hauptinhalt springen
connic
Starte kostenlos

Twilio Voice

Von connic
Sync

Setz einen Sprachagenten auf deine bestehende Twilio-Rufnummer. connic richtet den Webhook für eingehende Anrufe ein und überträgt das Audio, und der Agent antwortet mit deinem Wissen und deinen Tools.

Publisher
Von connic
Modi
Sync
Einrichtung
Dashboard oder connectors/*.yaml
Dokumentation
Twilio Voice Docs

Nimm Anrufe unter deiner bestehenden Nummer an

Verbinde dein Twilio-Konto, wähle eine sprachfähige Nummer und verknüpfe einen Sprachagenten. connic leitet die Nummer zum Agenten und überträgt das Audio in beide Richtungen.

Eine wiederverwendbare Twilio-Connection
Speichere Account SID, Region (US1, IE1 oder AU1) und den Auth Token dieser Region einmal und nutze die Connection für weitere Nummern desselben Kontos und derselben Region.
Was connic in Twilio ändert
Beim Speichern setzt connic den Webhook für eingehende Anrufe mit HTTP POST. Ein vorhandener Webhook oder eine TwiML App wird ersetzt, und die bisherigen Werte landen in den Logs der Verbindung. Beim Löschen entfernt connic den Webhook nur, wenn er noch auf connic zeigt.
Bevor du verbindest
Nimm die Nummer aus einem SIP Trunk heraus und wähle eine, deren Region für eingehende Anrufe zur Connection passt. Jede Nummer gehört zu genau einer aktiven Verbindung.
  1. Der Anrufer wählt deine Nummer

    Twilio nimmt den Anruf entgegen und ruft den Webhook für eingehende Anrufe auf, den connic an der Nummer hinterlegt hat.

  2. connic prüft die Anfrage

    Der Auth Token prüft Twilios Signatur. Ist die Verbindung pausiert oder hat das Environment kein aktives Deployment, greift stattdessen die Einstellung Primary handler fails der Nummer.

  3. Der Agent meldet sich

    connic startet einen Run mit den Anrufdaten und überträgt das Audio in beide Richtungen. Der Agent begrüßt den Anrufer, hört zu und nutzt seine Tools.

  4. Das Gespräch endet oder geht weiter

    Der Agent verabschiedet sich und legt auf oder verbindet den Anrufer mit einer deiner Nummern. Schlägt der Run fehl, wählt Twilio deine Ausweichnummer.

Lege fest, wie der Agent klingt und zuhört

Die Spracheinstellungen stehen in voice_config neben Prompt und Tools des Agenten, also geht beides mit demselben Deployment live.

Echtzeitmodelle
Nutze connic/gemini-3.8-live ohne Zugangsdaten eines Anbieters, abgerechnet über das Projektguthaben. Mit den Zugangsdaten des Anbieters im Projekt nutzt du ein Realtime-Modell von OpenAI oder Azure OpenAI oder ein Gemini-Modell mit nativer Audioverarbeitung über Google Gemini oder Vertex AI.
Sprecherwechsel
silence_ms legt fest, wie lange der Anrufer pausieren kann, bevor der Agent antwortet. Mit aktivierten Unterbrechungen, dem Standard, kann der Anrufer dem Agenten ins Wort fallen.
Gesprächsende
Der Agent kann nach einer Verabschiedung auflegen, die immer vollständig abgespielt wird. Mit hang_up_allowed: false schaltest du das ab, mit idle_timeout_seconds beendest du Anrufe, in denen niemand mehr spricht.
Was Sprachagenten nicht unterstützen
Guardrails, menschliche Freigaben, strukturierte Ausgaben, fallback_model und context_compression lehnt connic für Sprachagenten ab. Ein Anruf ist ein Run, also begrenzt das Timeout des Agenten seine Länge.
agents/support-voice.yaml
version: "1.0"
name: support-voice
type: llm
model: openai/gpt-realtime-2.1
description: Answers calls on the support line
system_prompt: |
  Keep replies short and natural.
  Before you use a tool, say what you are checking.
  Say goodbye before you end the call.
tools:
  - retrieval_query
  - orders.get_order_status
voice_config:
  voice: alloy
  language: en
  transcription_model: gpt-realtime-whisper
  greeting: "Hi, you're through to support. How can I help?"
  turn_detection:
    silence_ms: 500
  interruptions:
    enabled: true
  idle_timeout_seconds: 60
  hang_up_allowed: true

Erkenne, wer anruft, und verbinde weiter

Jeder Run startet mit den Anrufdaten, und deine Tools entscheiden, wann ein Anrufer mit einem Menschen sprechen soll.

Anrufdaten
call_id enthält die CallSid, raw die vollständige Anfrage von Twilio. caller_name setzt einen Caller-ID-Lookup an der Nummer voraus, und forwarded_from erscheint, wenn der Netzbetreiber die weiterleitende Nummer übermittelt.
Weiterleitungen
Ein Tool löst TransferCall mit einer von bis zu 20 Weiterleitungsnummern der Verbindung aus, und Twilio wählt sie, sobald die laufende Sprachausgabe beendet ist. Jede andere Nummer gibt einen Fehler zurück, den der Agent erklären kann.
Tastatureingaben
Ordne in voice_config den Tasten 0-9, * und # Tools zu. Ein Tastendruck führt sein Tool ohne Modellantwort aus, auch während der Begrüßung.
Ausweichnummer
Kann ein angenommener Anruf nicht weiterlaufen, etwa weil der Run fehlschlägt oder der Anrufer die maximale Wartezeit erreicht hat, wählt Twilio diese Nummer. Ohne Ausweichnummer endet der Anruf.
context["payload"]
{
  "call_id": "CA1234567890abcdef1234567890abcdef",
  "from": "+4915112345678",
  "to": "+4930123456789",
  "provider": "twilio",
  "caller_name": "Alex Example",
  "raw": {
    "CallSid": "CA1234567890abcdef1234567890abcdef",
    "From": "+4915112345678",
    "To": "+4930123456789",
    "CallerName": "Alex Example"
  }
}
tools/phone.py
from connic import TransferCall


def transfer_to_support(context: dict) -> str:
    """Transfer the caller to the support team."""
    raise TransferCall("+4930123456780")
agents/support-voice.yaml
tools:
  - phone.transfer_to_support
voice_config:
  greeting: "Hi! Press 0 at any time to reach our team."
  keypad:
    "0": phone.transfer_to_support

Halte die Telefonleitung in deinem Code

Deklariere die Verbindung in connectors/ mit der Nummer im E.164-Format. Das Deployment sucht die Nummer in der angegebenen Connection und schlägt fehl, wenn schon eine andere aktive Verbindung sie nutzt. Der Auth Token steht nie in der Datei.

connectors/support-line.yaml
type: twilio
name: Support line
connection: support-twilio
config:
  phone_number: "+4930123456789"
  transfer_numbers:
    - "+4930123456780"
  fallback_number: "+4930123456781"
agents:
  - support-voice
create: connectors/support-line.yaml (twilio)

Was Anrufer erledigen können

Wähle ein Szenario und sieh den Weg des Anrufs und die Agent-YAML dahinter.

Anrufer fragen, wie etwas funktioniert, und der Agent antwortet aus der Produktdokumentation, die er abruft.

Anrufer
Twilio Voice
product-support
Antwort aus deiner Doku
agents/product-support.yaml
version: "1.0"
name: product-support
type: llm
model: openai/gpt-realtime-2.1
description: Answers product questions by phone
system_prompt: |
  Answer from the product docs you retrieve.
  Keep each answer to a few sentences.
tools:
  - retrieval_query
voice_config:
  transcription_model: gpt-realtime-whisper
  greeting: "Hi! What can I help you with today?"

Der Agent fragt nach der Bestellnummer, prüft dein Bestellsystem und nennt dem Anrufer den Status.

Kunde
Twilio Voice
order-status
Status am Telefon
agents/order-status.yaml
version: "1.0"
name: order-status
type: llm
model: openai/gpt-realtime-2.1
description: Tells callers where their order is
system_prompt: |
  Ask for the order number and the postcode.
  Say that you are checking, then look the order up.
tools:
  - orders.get_order_status
voice_config:
  greeting: "Hi! Do you have your order number handy?"
  idle_timeout_seconds: 60

Der Agent schlägt freie Termine vor, bestätigt die Wahl des Anrufers und bucht sie mit deinem Kalender-Tool.

Anrufer
Twilio Voice
appointment-desk
Termin im Kalender
agents/appointment-desk.yaml
version: "1.0"
name: appointment-desk
type: llm
model: openai/gpt-realtime-2.1
description: Books appointments by phone
system_prompt: |
  Offer at most three free slots at a time.
  Repeat the chosen slot before you book it.
tools:
  - calendar.find_free_slots
  - calendar.book_slot
voice_config:
  greeting: "Hi! When would you like to come in?"
  turn_detection:
    silence_ms: 700

Anrufer drücken die 0 oder bitten um einen Menschen, und ein Tool verbindet sie mit deiner Support-Leitung.

Anrufer
Twilio Voice
front-desk
Anruf an dein Team weitergeleitet
agents/front-desk.yaml
version: "1.0"
name: front-desk
type: llm
model: openai/gpt-realtime-2.1
description: Answers first and hands over when asked
system_prompt: |
  Help with general questions.
  If the caller asks for a person, transfer them.
tools:
  - phone.transfer_to_support
voice_config:
  greeting: "Hi! Press 0 at any time to reach our team."
  keypad:
    "0": phone.transfer_to_support

FAQ zu Twilio Voice

Nein. Du verbindest dein eigenes Twilio-Konto und wählst eine vorhandene sprachfähige Nummer. Konto und Nummer bleiben bei Twilio, connic setzt nur den Webhook für eingehende Anrufe.

Nein. Twilio Voice nimmt nur eingehende Anrufe an. Anrufer erreichen den Agenten unter der Nummer der Verbindung, und der Agent kann sie an deine eigenen Nummern weiterleiten.

Twilio-Zugangsdaten gelten pro Region. Mit dem Auth Token der gewählten Region (US1, IE1 oder AU1) listet connic deine Nummern auf, setzt den Webhook und prüft die Signatur jeder eingehenden Anfrage. API-Key-SID und API-Key-Secret funktionieren hier nicht.

Realtime-Modelle von OpenAI und Azure OpenAI sowie Gemini-Modelle mit nativer Audioverarbeitung über Google Gemini oder Vertex AI, jeweils mit den Zugangsdaten des Anbieters im Projekt. Ergänze voice_config am Agenten und prüfe in der Voice-Dokumentation, welche Agenteneinstellungen Voice nicht unterstützt.

Hinterlege eine Ausweichnummer an der Verbindung. Kann ein angenommener Anruf nicht weiterlaufen, etwa weil der Run fehlschlägt, wählt Twilio diese Nummer. Anrufe, die connic gar nicht annimmt, folgen der Einstellung Primary handler fails der Nummer in Twilio.