Logpy-AgentOne/telefon/freeswitch/plusnet.xml.tpl
Jeuner 1a1280e79d Praxis-Telefon-Agent: Anrufannahme, Transkription, Triage — vollständig on-prem
Nimmt Anrufe einer Hausarztpraxis entgegen, transkribiert sie lokal,
kategorisiert das Anliegen und legt es strukturiert ab. Keine Patientendaten
verlassen den Rechner: Spracherkennung, Sprachmodell und Sprachsynthese laufen
lokal, im Datenpfad steht kein Cloud-Dienst.

Aufbau:
- FreeSWITCH nimmt über einen SIP-Trunk an, spielt die Ansage und nimmt auf.
- pipe.watch erkennt fertige Aufnahmen und schiebt sie durch die Pipe.
- whisper.cpp transkribiert, ein lokales Sprachmodell (Ollama) ordnet in
  Kategorie und Dringlichkeit ein — mit erzwungenem JSON-Schema.
- Ablage lokal, optional Nextcloud (WebDAV) und ein Deck-Board.
- Leitstand (pipe.server): Board mit Eingang/In Bearbeitung/Rückfragen/Erledigt,
  Aufnahmen zum Anhören, Verlauf und Ampeln für alle beteiligten Dienste.

Zugangsdaten und Anrufdaten liegen außerhalb des Repositorys (.env, ablage/,
telefon/). Konfiguration siehe .env.example, Einrichtung siehe README.
2026-08-22 22:37:17 +02:00

25 lines
1.3 KiB
Smarty

<include>
<!-- Plusnet-Trunk der Praxis. Wird von telefon/freeswitch/einrichten.sh nach
$FS_ETC/sip_profiles/external/ kopiert, das Passwort kommt dabei aus .env.
Eingehende Anrufe landen im Dialplan-Kontext "public". -->
<gateway name="plusnet">
<param name="username" value="@@SIP_USER@@"/>
<param name="password" value="@@SIP_PASS@@"/>
<param name="realm" value="@@SIP_DOMAIN@@"/>
<param name="from-domain" value="@@SIP_DOMAIN@@"/>
<!-- Wichtig: sip.plusnet.de löst auf acht IPs auf. Holt FreeSWITCH die
Nonce beim einen Server und schickt die authentifizierte Anfrage an
einen anderen, kennt der die Nonce nicht -> 401 in Dauerschleife. Ein
einzelner voiceXX-Host zeigt auf genau eine IP und beendet das.
Realm und From-Domain bleiben sip.plusnet.de, sonst passt die Auth nicht. -->
<param name="proxy" value="@@SIP_PROXY@@"/>
<param name="register-proxy" value="@@SIP_PROXY@@"/>
<param name="register" value="true"/>
<param name="register-transport" value="udp"/>
<param name="expire-seconds" value="1800"/>
<param name="retry-seconds" value="30"/>
<param name="ping" value="30"/>
<param name="context" value="public"/>
<param name="caller-id-in-from" value="false"/>
</gateway>
</include>