# NGbridge – KI-Agenten ans Telefon | NGsipStack

> NGbridge verbindet jeden KI-Agenten mit dem Telefonnetz: eine signierte WebSocket-Verbindung je Anruf, HD-Ton, Weitervermitteln an Menschen, Rückfall ohne verlorenen Anruf.

Quelle: https://ngstack.de/ngbridge

NGbridge · KI-Assistenten am Telefon

# NGbridge – AI Call Interface v1

Eine `wss`-Verbindung je Anruf, NGsipStack ist Client. Signatur nach RFC 9421 im Handshake, Audio binär (L16 16/8 kHz, PCMU), Steuerung als JSON mit Folgenummern. Der Anbieter macht kein SIP und kennt keine Telefon-Codecs.

**Jede KI** anschließbar

**HD-Klang**

**Kein Anruf** geht verloren

## Protokoll

| Bereich | Stand | Details |
|---|---|---|
| Transport | ja | eine `wss`-Verbindung je Anruf, NGsipStack ist Client; eigenes Unterprotokoll muss zurückkommen (RFC 6455); `ws://` nur im eigenen Netz |
| Absicherung | ja | HTTP Message Signatures (RFC 9421) mit HMAC-SHA256, Ablaufzeit und Einmalwert |
| Handshake | ja | Formatangebot und -wahl beim Aufbau, Rückfall ohne Antwort; Verbindungstest aus der Verwaltung |
| Audio | ja | binär: L16 16 kHz (bei G.722-Anrufern) oder 8 kHz, PCMU; zu uns auch L16 24 kHz; 20-ms-Rahmen zum Anbieter; Umrechnung zum Anrufer-Codec per FIR-Wandler |
| Wiedergabe | ja | Marken mit Abspiel-Quittung, sofortiges Verwerfen beim Dazwischenreden, Flusskontrolle |
| Folgen | ja | Folgenummern in beide Richtungen – eindeutig auch bei Überschneidungen |
| Tastentöne | ja | Anrufer → Anbieter: `dtmf {digit, duration_ms}` |
| Transfer | ja | blind an `phone\|account\|queue\|mailbox`, idempotent über `id`, `on_failure: return\|mailbox\|hangup`, Rückmeldungen inkl. `transfer.ringing` und Ursache mit `sip_code`; Anrufer hört Freiton |
| KI-Wechsel | ja | `redirect {url, handoff_data}` mitten im Gespräch |
| Ende | ja | `hangup {reason, output}` → Anrufliste + Webhook `ai.call.ended`; Ping alle 10 s |
| Rückfall | ja | je Rufnummer: Warteschlange, Mailbox oder Ansage – bei Fehler im Aufbau, ohne `opened`, bei Abbruch |
| Mandanten | ja | Anbieter je Kunde oder KI-Dienst der Plattform mit Zuordnung je Kunde; Ziele immer nur desselben Kunden |
| Transfer mit Rückfrage, `send_dtmf` | Stufe 2 | dazu Wiederaufnahme nach Abbruch, optional Twilio-Media-Streams-Dialekt |
| `listen` / `assist` | vorgesehen | Live-Abschrift (Stereo), Agent-Assist mit Einflüstern an den Mitarbeiter – Felder `mode`, `tracks`, `source` sind im Protokoll schon da |
| Ausgehend | Stufe 3 | `POST /v1/calls`, Absender nur Kundennummern, Einwilligungsprüfung |

## Im Vergleich (Primärquellen, Recherche 15.09.2026)

| Thema | Bei anderen | NGbridge |
|---|---|---|
| Abbruch der KI-Verbindung | bei den meisten undokumentiert (Telnyx, Plivo, Azure ACS); einziger mit Rückfall: Vonage | fester Rückfall je Rufnummer |
| Audioformat | überwiegend JSON mit Base64 (Twilio-artig: Telnyx, Plivo, SignalWire, Exotel, Azure ACS) | binär – kein Base64-Aufschlag, kein JSON-Parsen je Rahmen |
| Absicherung des Handshakes | Sinch: WebSocket ohne Kopfzeilen; Bandwidth: Basic Auth; Exotel: IP-Freigabe/Basic | RFC 9421 mit Ablauf und Nonce (wie Genesys AudioHook) |
| Weitervermitteln | Exotel: kein Befehl; Genesys: keiner; Sinch: kein Transfer im Stream | typisierter Transfer mit Zuständen und Rückfall zur KI |
| Flusskontrolle | nur Asterisk (`MEDIA_XOFF/XON`) | `xoff`/`xon` |
| Quittung für „geleert“ | nur Plivo (`clearedAudio`) | `cleared` mit den verworfenen Marken |
| Bidirektionaler Ton zu Fremddiensten | Amazon Chime/Connect: nicht vorgesehen; FreeSWITCH: `mod_audio_fork` AGPL, bidirektional nur kommerziell | Kern des Protokolls |

**Vollständige Schnittstellenbeschreibung:** für registrierte KI-Anbieter.

## Prüfung

| Was | Ergebnis |
|---|---|
| Prüfung gegen die laufende Plattform | `ki-test` 13/13 mit eigenem Prüf-Anbieter |
| Nachtlauf | KI-Prüfung täglich 05:15, als Dienst 14/14 |
| Richtwerte | Aufbau bis `open` unter 200 ms nach Annahme |
