Der Kanal Telefonie ermöglicht es einer betool-Pipeline, Anrufe entgegenzunehmen und zu tätigen. Echtzeit-Audio, Streaming-Transkription, Streaming-Sprachsynthese und Barge-in-Unterbrechung werden unterstützt.
Architektur
Im Hintergrund:
- LiveKit übernimmt den Echtzeit-Audiotransport.
- LiveKit-SIP verbindet LiveKit mit dem SIP-Trunk Ihres Anbieters.
- Ein dedizierter Worker orchestriert den Anruf: Transkription (STT), LLM, Sprachsynthese (TTS).
Dieser Stack läuft als separater Prozess vom Haupt-Backend. Sie konfigurieren ihn nicht direkt — der Betreiber Ihrer Instanz richtet die SIP-Brücke ein.
Sprachanbieter
| Rolle | Anbieter | Standard |
|---|---|---|
| Transkription (STT) | Deepgram, faster-whisper (lokal ausgeführt) | Deepgram |
| Synthese (TTS) | ElevenLabs, Cartesia, OpenAI, Deepgram Aura | ElevenLabs |
Der Stimmenkatalog jedes TTS-Anbieters ist im Adminbereich einsehbar, mit Anhören einer Hörprobe vor der Auswahl. Das LLM ist frei wählbar (managed Modell, BYOK oder privates Modell — siehe Einen LLM-Schlüssel anbinden).
Voraussetzungen
- Ein SIP-Trunk eines Anbieters.
- Eine eingehende Nummer und/oder die Möglichkeit, ausgehende Anrufe zu tätigen.
- Zugang zu den gewählten STT-/TTS-Anbietern.
Im managed Angebot kann betool den SIP-Trunk und die Sprachanbieter für Sie bereitstellen.
Eine Sprach-Pipeline entwerfen (eingehender Anruf)
Eine Sprach-Pipeline beginnt mit einem Start-Knoten mit dem Empfänger phone_gateway. Bei jedem transkribierten Sprechschritt erhält die Pipeline insbesondere:
user_messageundphone.transcript— den transkribierten Sprechschrittphone.call— den Anruf: Kennung, Nummern von Anrufer / Angerufenem, Richtung (inbound/outbound), Leitungphone.from— die Nummer des Anrufersphone.caller_timezone— die aus der Vorwahl abgeleitete Zeitzone (leer, wenn die Vorwahl mehrere Zeitzonen umfasst)
Der von der Pipeline erzeugte Text wird vom TTS vorgelesen.
Einstellungen des Empfängers
Der Empfänger phone_gateway steuert das Verhalten des Anrufs, ohne Code:
- Begrüßung — mehrere Varianten der Begrüßungsnachricht (eine wird zufällig gewählt), eine eigene Begrüßung für ausgehende Anrufe, eine Verzögerung vor der Begrüßung.
- Stille — Nachfrage nach längerer Stille, dann Verabschiedung und Auflegen, wenn die Stille anhält; maximale Anrufdauer.
- Unterbrechung (Barge-in) — standardmäßig aktiviert: Der Anrufer kann den Agent unterbrechen. Mindestdauer und Mindestanzahl an Wörtern, damit eine Unterbrechung zählt.
- Erkennung des Sprecherwechsels — Erkennungsmodus und Wartezeiten für das Ende der Äußerung.
- Filler — Wartesätze, die gesprochen werden, wenn die Antwort auf sich warten lässt, eigene Sätze während der Ausführung eines Tools oder ein Warte-Hintergrundgeräusch (Tastatur, Büro, Wartemusik). Standardmäßig deaktiviert.
- Stimme — Anbieter, Modell, Sprache und Stimme für STT / TTS, mit den Feineinstellungen der Stimme (Stabilität, Geschwindigkeit…).
- Anrufqualifizierungen — eine geschlossene Liste von Ergebniscodes, die der Agent für den Anruf setzen kann.
Was der Agent während des Anrufs tun kann
Die Telefonie-Tools stehen den Agents einer Pipeline zur Verfügung, der phone_gateway vorgelagert ist:
phone_gateway.transfer_call— den Anruf an eine andere Nummer weiterleiten (SIP REFER). Die Nummer wird im E.164-Format validiert; die Weiterleitung erfolgt, nachdem die laufende Antwort gesprochen wurde.phone_gateway.hangup_call— auflegen, nach der Verabschiedung.phone_gateway.set_call_disposition— den Anruf mit einem der konfigurierten Codes qualifizieren.
Ein Agent kann außerdem während des Anrufs eine SMS senden (Tool allmysms.send_sms, siehe SMS): Auf diesem Kanal ist der Empfänger auf den Gesprächspartner des Anrufs festgelegt. Ist die Nummer unterdrückt, wird der Versand abgelehnt.
Termine vorschlagen
Die Verfügbarkeitsberechnung (Operation free_slots des Knotens compute) liefert Zeitfenster, die zum Vorlesen bereit sind, in der Zeitzone des Anrufers. In Kombination mit dem Lesen eines Kalenders (Google oder Microsoft) kann ein Sprachagent einige freie Zeitfenster nennen und dann den Termin eintragen.
Ausgehende Anrufe
Eine Pipeline kann mit dem Knoten phone_call einen Anruf tätigen: zum Beispiel einen Lead zurückrufen, sobald er eingeht, oder eine Liste nachfassen.
| Feld | Rolle |
|---|---|
trunk_id | Für den Anruf verwendete Leitung |
voice_model | Das Modell, das das Gespräch führt (sein Start muss den Empfänger phone_gateway tragen) |
to_number | Anzurufende Nummer (mit Vorlagen nutzbar), normalisiert im E.164-Format |
call_vars | An das Gespräch übergebene Variablen (phone.outbound.vars) — zum Beispiel der Vorname, nutzbar in der Begrüßung für ausgehende Anrufe |
allowed_days / allowed_hours / timezone | Zulässiges Zeitfenster: außerhalb des Fensters wird der Anruf nicht getätigt |
max_in_flight / max_per_day | Obergrenzen für gleichzeitige (standardmäßig 3) und tägliche Anrufe (standardmäßig 100) |
output_key | Ausgabeschlüssel (Standard phone.call_result) |
Schutzmechanismen:
- Exactly-once — eine Wiederholung wählt niemals erneut eine bereits angerufene Nummer.
- Ablehnung vor dem Wählen, wenn die Organisation keine Credits mehr hat.
- Kein Anruf in der Simulation — der Knoten wird bei einem Testlauf (Dry-Run) übersprungen.
Der Knoten gibt die Kontrolle zurück, sobald der Anruf klingelt: ok bedeutet „Anruf gestartet“, nicht „angenommen“. Um das Ergebnis zu erfahren, fügen Sie dem Start des Modells den Empfänger phone_call_outcome hinzu: Er löst die Pipeline nach Ende des Anrufs aus, mit phone.outcome — angenommen oder nicht (answered, no_answer, rejected, unknown), Dauer, Anzahl der Sprechschritte, vom Agent gesetzte Qualifizierung.
Bewährte Praktiken
- Halten Sie Missionen knapp. Die Bedenkzeit zählt: Ein Agent, der 4 Sekunden zögert, wirkt im Anruf wie eingefroren. Bevorzugen Sie schnelle Modelle, außer bei entscheidungskritischen Schritten.
- Lassen Sie Barge-in aktiv. Anrufer müssen den Agent unterbrechen können. Das ist die Standardeinstellung.
- Konfigurieren Sie Filler für Sprechschritte, die Tools aufrufen: Eine lange Stille beunruhigt den Anrufer.
Kosten
Siehe Preise. Ein Anruf hat an sich keinen Minutenpreis: Er wird nach seinen Bestandteilen abgerechnet — Transkription (nach Audiodauer), Sprachsynthese (nach Anzahl der Zeichen) und LLM (nach Tokens, außer bei BYOK).
Bekannte Einschränkungen
- Der Telefoniekanal ist reines Audio. Video läuft über andere Bausteine (Videoerzeugung und -synchronisation mit HeyGen), nicht über den Anruf.
- Die Weiterleitung an einen Menschen erfordert einen SIP-Trunk, der REFER unterstützt.
- Der Agent kann den Anrufer ohne eine CRM-Integration nicht identifizieren: Er kennt nur die übermittelte Nummer.