SIP Voice
Mit einem connic-Voice-Agenten Anrufe über jede Telefonanlage und jeden Anbieter mit SIP annehmen und führen.
Auf dieser Seite
| Modi | Sync (eingehende Anrufe) und Outbound (ausgehende Anrufe) |
| YAML-Typ | sip |
| Zugangsdaten | In der Verbindung; schickt deine Telefonanlage die Anrufe an connic, legt connic sie an |
| Bridge | Nicht unterstützt |
| Eigene Domain | Nicht unterstützt |
| Verknüpfte Agenten | Genau ein Agent mit voice_config im Deployment |
| Pausiert | connic meldet die Leitung ab und lehnt Anrufe deiner Telefonanlage ab. |
Einrichtung
Ergänze einen LLM-Agenten um
voice_configund ein unterstütztes Realtime-Modell, hinterlege bei Bedarf die Zugangsdaten des Modellanbieters im Projekt und stelle den Agenten im Environment bereit. Siehe connic Voice.Lege fest, wie deine Telefonanlage und connic zueinander finden. Entweder meldet sich connic wie ein Telefon an: Lege dafür in der Telefonanlage ein SIP-Konto oder eine Nebenstelle für connic an. Oder deine Telefonanlage schickt die Anrufe an connic: Den SIP-Trunk zu connic richtest du im letzten Schritt ein.
Öffne den Agenten. Klicke im Connector Flow auf Add inbound connector, um Anrufe anzunehmen, oder auf Add outbound connector, um anzurufen. Wähle dann Create New Connector und SIP Voice.
Wähle unter Setup die Variante aus Schritt 2 und trage den Server ein, und wenn sich connic anmeldet, auch Benutzername und Passwort des Kontos. Wähle Transport und Media encryption passend zu deiner Telefonanlage und klicke auf Create.
Schickt deine Telefonanlage die Anrufe an connic, öffne die Verbindung und übernimm SIP address, Username und Password in einen neuen SIP-Trunk der Telefonanlage. Leite die Nummern oder Nebenstellen, die der Agent annehmen soll, auf diesen Trunk. Ruf dann eine davon an und öffne den Run.
Im Code
Lege die Verbindung in connectors/*.yaml an. Das Passwort gehört in eine Variable. Setze Rufnummern und Nebenstellen in Anführungszeichen; ohne liest YAML sie als Zahl und das Deployment schlägt fehl.
type: sip
config:
setup: register
server: pbx.example.com
transport: tls
username: "200"
password: ${PBX_LINE_PASSWORD}
transfer_numbers:
- "+4930123456789"
allowed_callers:
- "+4915112345678"
fallback_number: "+4930987654321"
agents:
- support-voiceKonfiguration
Die Felder einer SIP-Voice-Verbindung, gleich in connectors/*.yaml, der REST-API und connic MCP. Die Beschreibungen nennen die passende Einstellung im Dashboard. Für Anrufe muss die SIP-Voice-Verbindung mit einem bereitgestellten Agenten verknüpft sein, der voice_config enthält. Das Dashboard übernimmt den Agenten, von dessen Seite aus die Verbindung angelegt wird, oder fragt unter Voice agent danach. Über REST-API und connic MCP lässt sich der Agent beim Anlegen mit dem optionalen Feld agent_name verknüpfen.
| Feld | Typ | Status | Beschreibung |
|---|---|---|---|
| type | string | Required | sip. |
| mode | string | Optional | sync nimmt Anrufe an die Leitung an; outbound ruft an, sobald ein Run des Agenten startet. Lässt sich nach dem Anlegen nicht mehr ändern. Dashboard: Mode.Default: sync |
| config | object | Required | Einstellungen für SIP Voice. |
| setup | string | Required | register: connic meldet sich wie ein Telefon an der Telefonanlage an. trunk: Die Telefonanlage schickt die Anrufe an connic und meldet sich mit Zugangsdaten an, die connic anlegt. Dashboard: Setup.Default: register |
| server | string | Optional | Hostname der Telefonanlage oder des SIP-Anbieters. Pflicht bei register und für ausgehende Anrufe. Dashboard: SIP server. |
| port | integer | Optional | Der SIP-Port des Servers. Dashboard: Port.Default: 5060, mit TLS 5061 |
| transport | string | Required | tls, tcp oder udp. Dashboard: Transport.Default: tls |
| username | string | Optional | Bei register, dort Pflicht. Das SIP-Konto oder die Nebenstelle, mit der sich connic anmeldet. Dashboard: Username. |
| password | string | Optional | Bei register, dort Pflicht. Das Passwort des Kontos, ohne Leerzeichen und Semikolons. Dashboard: Password. |
| auth_username | string | Optional | Bei register. Nur nötig, wenn sich das Konto mit einem anderen Namen als dem Benutzernamen anmeldet. Dashboard: Authentication username. |
| caller_id | string | Optional | Die Nummer oder Nebenstelle, von der ausgehende Anrufe kommen. Dashboard: Caller ID. |
| media_encryption | string | Required | srtp verschlüsselt das Gesprächsaudio, none überträgt es unverschlüsselt. Dashboard: Media encryption.Default: srtp |
| codecs | string | Required | g722,alaw,ulaw bevorzugt G.722 (HD-Telefonie); alaw,ulaw nutzt nur G.711. Dashboard: Codecs.Default: g722,alaw,ulaw |
| to | string | Optional | Nur Outbound. Die anzurufende Nummer, wenn die Eingabe eines Runs kein to enthält. Dashboard: Default number to call. |
| ring_seconds | integer | Optional | Nur Outbound. Wie lange es klingelt, 5 bis 120 Sekunden, bevor der Run fehlschlägt, weil niemand abgenommen hat. Dashboard: Ring time (seconds).Default: 30 |
| transfer_numbers | string[] | Optional | Rufnummern im E.164-Format, an die Tools des Agenten Anrufer mit TransferCall weiterleiten dürfen. Höchstens 20. Dashboard: Transfer numbers. |
| allowed_callers | string[] | Optional | Nur Sync. Nur diese Nummern können den Agenten anrufen, im E.164-Format. Höchstens 100. Anrufe von anderen und unterdrückten Nummern werden abgewiesen, bevor sie angenommen werden; siehe Erlaubte Anrufer. Dashboard: Allowed callers. |
| fallback_number | string | Optional | Nur 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_seconds | integer | Optional | Nur 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. Dashboard: Maximum wait (seconds).Default: 30 |
| hold_audio_path | string | Optional | Nur 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. Dashboard: Hold audio. |
Erzeugte Werte
Bei trunk zeigt die Verbindung eine SIP address (sip.connic.co), einen Username und ein Password für den Trunk deiner Telefonanlage. Sie bleiben gleich, wenn du die Verbindung bearbeitest.
Eingabe für den Agenten
Ein eingehender Anruf startet den Run mit der Nummer des Anrufers und der angerufenen Nummer oder Nebenstelle:
{
"call_id": "1730900000.42",
"from": "+4915112345678",
"to": "200",
"provider": "sip"
}Anrufe
Im Sync-Modus nimmt SIP Voice Anrufe an die Leitung an und überträgt das Audio zwischen deiner Telefonanlage und dem Agenten in beide Richtungen. Bis der Agent sprechen kann, hört der Anrufer ein Freizeichen. 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. 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 über die Leitung 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. Durch Telefonmenüs kommt der Agent mit press_keys, das die Tasten über die Leitung sendet, 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. 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.
type: sip
mode: outbound
config:
setup: register
server: pbx.example.com
transport: tls
username: "201"
password: ${PBX_OUTBOUND_PASSWORD}
caller_id: "+4930123456"
agents:
- reminder-callsErlaubte Anrufer
Mit erlaubten Anrufern weist connic Anrufe von allen anderen und von unterdrückten Nummern ab, bevor sie angenommen werden. Sie starten also keinen Run. connic vergleicht die Nummer des Anrufers so, wie deine Telefonanlage sie sendet. Die Anlage muss Nummern deshalb im E.164-Format senden. 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.
Weiterleitung und Ausweichnummer
Löst ein Tool des Agenten TransferCall mit einer der Weiterleitungsnummern der Verbindung aus, bittet connic deine Telefonanlage, den Anruf dorthin zu übergeben. Meldet sich dort niemand, endet der Anruf. Die Ausweichnummer gilt nur für eingehende Anrufe im Sync-Modus und nicht für Weiterleitungen. Kann ein angenommener Anruf nicht weiterlaufen, etwa weil der Run fehlschlägt oder der Anrufer die maximale Wartezeit erreicht hat, geht er stattdessen an die Ausweichnummer. Ohne Ausweichnummer endet der Anruf. Deine Telefonanlage muss Weiterleitungen von der Leitung erlauben.
Einrichtung der Telefonanlage
connic erreicht deine Telefonanlage von sip.connic.co aus: SIP über Port 5060 mit UDP oder TCP und 5061 mit TLS, das Gesprächsaudio über die UDP-Ports 10000 bis 20000. Nimmt die Telefonanlage nur bekannte Adressen an, gib diese Adresse frei. Bei register hält connic die Leitung angemeldet und versucht es nach einer fehlgeschlagenen Anmeldung alle 30 Sekunden erneut, nach einer Ablehnung durch den Server alle 5 Minuten. Eine Verbindung für ausgehende Anrufe meldet die Leitung nicht an, sondern weist sich bei jedem Anruf aus. Sie kann deshalb dasselbe Konto nutzen wie eine Verbindung für eingehende Anrufe.
Grenzen und Fehler
| Grenze | Wert |
|---|---|
| Verknüpfte Agenten | Genau einer, mit voice_config im aktiven Deployment des Environments |
| Weiterleitungsnummern | 20 pro Verbindung |
| Erlaubte Anrufer | 100 pro Verbindung |
| Maximale Wartezeit | 0 bis 900 Sekunden, standardmäßig 30 |
| Warteschleifenmusik | MP3 oder WAV, bis zu 10 Minuten |
| Klingeldauer | 5 bis 120 Sekunden, standardmäßig 30 |
| Codecs | G.722 und G.711 (A-law und µ-law) |
| Geänderte Einstellungen | Gelten nach etwa 15 Sekunden für die Leitung |
| Gesprächsdauer | Das Timeout des Agenten, begrenzt durch das Run-Timeout des Plans; bei Pro 60 Minuten |
| Fehler oder Symptom | Was zu tun ist |
|---|---|
| Could not sign in to the SIP server | Die Logs der Verbindung zeigen die Antwort des Servers. Prüfe Server, Port, Transport, Benutzername, Passwort und Anmeldename und ob die Telefonanlage Anmeldungen von sip.connic.co annimmt. |
| Nobody answered the call | Innerhalb der Klingeldauer hat niemand abgenommen. Erhöhe ring_seconds oder prüfe die Nummer. |
| The call could not be connected | Die Telefonanlage hat den Anruf abgelehnt. Prüfe, ob die Leitung diese Nummer anrufen darf und ob die Nummer vollständig ist, bei Bedarf mit Ländervorwahl. |
| Password can't contain spaces, semicolons or characters outside ASCII | Vergib in der Telefonanlage ein Passwort ohne diese Zeichen. |
| Anrufe kommen nicht beim Agenten an | Prüfe, ob die Verbindung aktiv ist und mit genau einem Agenten mit voice_config im aktiven Deployment verknüpft ist und ob deine Telefonanlage die Anrufe an die Leitung leitet. |