Twilio Voice
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.
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.
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.
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.
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.
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: trueErkenne, 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.
{
"call_id": "CA1234567890abcdef1234567890abcdef",
"from": "+4915112345678",
"to": "+4930123456789",
"provider": "twilio",
"caller_name": "Alex Example",
"raw": {
"CallSid": "CA1234567890abcdef1234567890abcdef",
"From": "+4915112345678",
"To": "+4930123456789",
"CallerName": "Alex Example"
}
}from connic import TransferCall
def transfer_to_support(context: dict) -> str:
"""Transfer the caller to the support team."""
raise TransferCall("+4930123456780")tools:
- phone.transfer_to_support
voice_config:
greeting: "Hi! Press 0 at any time to reach our team."
keypad:
"0": phone.transfer_to_supportHalte 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.
type: twilio
name: Support line
connection: support-twilio
config:
phone_number: "+4930123456789"
transfer_numbers:
- "+4930123456780"
fallback_number: "+4930123456781"
agents:
- support-voiceWas 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.
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.
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: 60Der Agent schlägt freie Termine vor, bestätigt die Wahl des Anrufers und bucht sie mit deinem Kalender-Tool.
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: 700Anrufer drücken die 0 oder bitten um einen Menschen, und ein Tool verbindet sie mit deiner Support-Leitung.
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_supportFAQ zu Twilio Voice
Weitere Verbindungen
Apache Kafka
Von connicAgenten verarbeiten Kafka-Topics und veröffentlichen ihre Ergebnisse unter dem Key der Ausgangsnachricht wieder in Topics.
InboundOutboundE-Mail (SMTP/IMAP)
Von connicEingehende E-Mails lösen Agenten aus, die Antwortentwürfe per SMTP versenden können. Anhänge werden unterstützt.
InboundOutboundHTTP-Webhooks
Von connicHTTP-Anfragen mit JSON, Formulardaten oder Datei-Uploads lösen Agenten aus. Ein eigener Integrationsserver ist nicht erforderlich.
InboundOutboundSyncMCP Server
Von connicconnic stellt Agenten als MCP-Tools bereit. MCP-Clients listen sie auf, rufen sie auf und bekommen die Antwort des Agenten als Tool-Ergebnis.
InboundSyncPostgreSQL
Von connicMit LISTEN/NOTIFY lösen neue Zeilen einen Agenten aus. Polling oder eine CDC-Pipeline sind nicht erforderlich.
InboundTwilio Messaging
Von connicLass einen Agenten SMS, MMS, WhatsApp- und RCS-Nachrichten verarbeiten. Sende Antworten, Medien und WhatsApp-Vorlagen über dein Twilio-Konto.
InboundOutbound