Kompetenz · Telefonie und Contact Center
Die Telefonschicht zwischen Ihrem Betreiber und demjenigen, der antwortet — Mensch oder Agent.
Wir bauen die Telefonzentrale: SIP-Trunks, zeitbasierte Routing-Regeln, aus der Datenbank gelesene IVR-Menüs, Warteschlangen, Übergabe an einen Menschen, Aufzeichnung und Analyse der Anrufe. Der Anruf wird zu einer Aufnahme mit Transkript und Zusammenfassung, nicht zu einer Erinnerung.
Bereits gebautDrei eigene Implementierungen, unten zitiert. (1) Die Asterisk-Schicht der Kallina-Plattform: 5.522 Zeilen Dialplan-Konfiguration, AGI-Skripte und Audio-Bridges in `asterisk/`, plus automatisch pro Nummer generierte Trunk-Vorlagen. (2) `asterisk-manager` — ein separater Dienst, der die Warteschlangen, Trunks und den RTP-Flow über die Management-Schnittstelle der Telefonanlage verwaltet. (3) Das Middleware für die virtuelle Telefonanlage eines Betreibers, das in Produktion lief: Der Reconciliation-Commit vom 14. Juli 2026 bringt Code ins Repository, der auf dem Server gelaufen war und etwa 40 Tage vor dem Git lag. Der Vorbehalt, bevor Sie fragen: Der SIP-Host, über den unsere Testleitungen laufen, antwortet nicht — heute, 06.09.2026, geprüft, ohne Antwort auf Ping und ohne Antwort auf HTTP. Wir präsentieren keine Demo-Nummer, die Sie jetzt anrufen können, weil wir sie vor Ihnen nicht hochbringen könnten.
Zwischen Ihrem Telefonanbieter und demjenigen, der tatsächlich antwortet — ein Mensch oder ein Voice-Agent — muss es eine Schicht geben, die Entscheidungen trifft. Wer den Anruf um 23:40 entgegennimmt. Was passiert, wenn niemand antwortet. Wohin der Anruf geht, wenn der Kunde „einen Menschen“ verlangt. Was von dem Gespräch übrig bleibt, nachdem es beendet wurde. Diese Schicht ist eine Telefonanlage, und wir bauen sie so, dass sie dem Unternehmen gehört, nicht dem Sprachanbieter: Wenn Sie morgen die Engine des Agenten wechseln, bleiben die Routing-Regeln, die Warteschlangen und die Historie bei Ihnen.
Konkret, was wir gebaut haben: zwölf Dialplan-Dateien — Produktion, IVR, Warteschlange, Transfer, Voicemail, Umleitung, ausgehende Anrufe mit Agent — vier AGI-Skripte in Python und zwei Audio-Bridges, insgesamt 5.522 Zeilen. Die IVR-Engine hat die Menüs nicht in der Datei geschrieben: Sie liest sie über ein AGI-Skript aus der Datenbank und gibt eine von sechs Entscheidungen zurück — zu einem Agenten, zu einem anderen Menü, zu einer Warteschlange, Transfer zu einer externen Nummer, abschließende Nachricht oder Schließung. Die Warteschlangen heißen nach ihrer Kennung und haben keine in der Konfiguration geschriebenen Mitglieder: Sie werden von außen hinzugefügt und entfernt, über die Management-Schnittstelle, was bedeutet, dass ein Operator ohne Neustart der Telefonanlage in eine Warteschlange hinein- oder aus ihr herausgehen kann.
Das Routing hat echte Regeln, nicht nur ein einziges „rufen Sie hier an“: Geschäftszeiten und Zeitzone, Nachtbetrieb wie 22:00 → 06:00 und Prioritätsabgleich — der SIP-Header `Diversion`, der die ursprüngliche Nummer trägt, von der der Anruf weitergeleitet wurde, dann die eigene Nummer, dann die Ersatzregel. Trunks werden pro Nummer generiert, mit einem aus Anbieter und Nummer aufgebauten Namen, durch eine Konfigurationsfunktion — nicht per Hand auf jeder neuen Zeile geschrieben.
Was aus dem Anruf herauskommt, ist genauso wichtig wie der Anruf. Für die Leitung, die mit der virtuellen Telefonzentrale eines Betreibers verbunden ist, haben wir ein Python-Middleware gebaut, das die Liste der Aufzeichnungen jede Minute abfragt, mit einer breiten Abgleichung alle sechs Stunden, damit ein Netzwerkausfall nichts verliert, und einem Scan alle drei Minuten für verpasste Anrufe — diese haben keine Aufzeichnung und wären sonst vollständig unsichtbar. Jede Aufzeichnung wird heruntergeladen, transkribiert, analysiert und in die Anrufanalyse gespiegelt, und der verpasste Anruf wird zu einer Warnung. Die Idempotenz liegt in einem Redis-Set, damit dieselbe Aufzeichnung nicht zweimal verarbeitet wird.