fix: FS_PORT konfigurierbar statt hardcoded, DECK_STAPEL-Quoting, Test-Audios

pipe/server.py rief fs_cli mit fest verdrahtetem Port 8099 auf (Wert vom
Ursprungsrechner) statt den Wert aus der Config zu lesen - auf einer Maschine
mit abweichendem Event-Socket-Port (hier 8022) zeigte der Leitstand "Telefon:
unklar", obwohl der Trunk laengst registriert war. Neue FS_PORT-Variable in
pipe/config.py (Default 8021, wie starten.sh es ueber die .env erwartet).

DECK_STAPEL in .env.example war unquotiert - das Leerzeichen in "In
Bearbeitung" bricht das `source .env` in telefon/freeswitch/einrichten.sh
(bash interpretiert es als zweites Kommando). Wert jetzt in Anführungszeichen.

test/erzeuge_beispiele.sh erzeugt die im README/MITGABE referenzierten
Test-Anrufe (rezept/termin/notfall) lokal per macOS "say" - vorher liefen die
Beispielbefehle aus einem frischen Klon ins Leere, weil test/*.wav bewusst
gitignoriert ist.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PuP3zfgYqhnrwyEne2ejG7
This commit is contained in:
Jeuner 2026-08-23 00:04:12 +02:00
parent da50567d54
commit a089ffe4d6
4 changed files with 38 additions and 2 deletions

View file

@ -43,7 +43,7 @@ DECK_BOARD=Anrufe
# Nutzer, die das Deck-Board sehen sollen (kommagetrennt) # Nutzer, die das Deck-Board sehen sollen (kommagetrennt)
DECK_TEILEN= DECK_TEILEN=
# Stapel des Deck-Boards (Arbeitsablauf, kommagetrennt) # Stapel des Deck-Boards (Arbeitsablauf, kommagetrennt)
DECK_STAPEL=Eingang,In Bearbeitung,Rückfragen,Erledigt DECK_STAPEL="Eingang,In Bearbeitung,Rückfragen,Erledigt"
# --- Leitstand (Weboberfläche) --- # --- Leitstand (Weboberfläche) ---
# 127.0.0.1 = nur dieser Rechner. 0.0.0.0 = im Netz erreichbar, dann ist # 127.0.0.1 = nur dieser Rechner. 0.0.0.0 = im Netz erreichbar, dann ist

View file

@ -81,6 +81,10 @@ ABLAGE_LOKAL = Path(os.environ.get("ABLAGE_LOKAL", str(WURZEL / "ablage")))
FREESWITCH_LOG = Path(os.environ.get( FREESWITCH_LOG = Path(os.environ.get(
"FREESWITCH_LOG", "/opt/homebrew/var/log/freeswitch/freeswitch.log")) "FREESWITCH_LOG", "/opt/homebrew/var/log/freeswitch/freeswitch.log"))
# Event-Socket-Port - muss mit autoload_configs/event_socket.conf.xml
# uebereinstimmen. Der Homebrew-Default variiert je nach Installation.
FS_PORT = os.environ.get("FS_PORT", "8021")
LEITSTAND_HOST = os.environ.get("LEITSTAND_HOST", "127.0.0.1") LEITSTAND_HOST = os.environ.get("LEITSTAND_HOST", "127.0.0.1")
LEITSTAND_PORT = int(os.environ.get("LEITSTAND_PORT", "8088")) LEITSTAND_PORT = int(os.environ.get("LEITSTAND_PORT", "8088"))
# Zugangsschutz. Pflicht, sobald der Leitstand nicht nur lokal erreichbar ist - # Zugangsschutz. Pflicht, sobald der Leitstand nicht nur lokal erreichbar ist -

View file

@ -58,7 +58,7 @@ def _trunk() -> tuple[str, str]:
return "aus", "FreeSWITCH läuft nicht" return "aus", "FreeSWITCH läuft nicht"
try: try:
roh = subprocess.run( roh = subprocess.run(
["fs_cli", "-P", "8099", "-x", "sofia status gateway plusnet"], ["fs_cli", "-P", config.FS_PORT, "-x", "sofia status gateway plusnet"],
capture_output=True, text=True, timeout=8).stdout capture_output=True, text=True, timeout=8).stdout
for zeile in roh.splitlines(): for zeile in roh.splitlines():
if zeile.startswith("Status"): if zeile.startswith("Status"):

32
test/erzeuge_beispiele.sh Executable file
View file

@ -0,0 +1,32 @@
#!/bin/bash
# Erzeugt die Test-Anrufe, auf die README und MITGABE verweisen. Die Audios
# selbst sind gitignoriert (Format: reale Aufnahmen waeren Patientendaten),
# deshalb entstehen sie hier lokal per macOS "say" - kein Download, keine
# Zusatz-Abhaengigkeit. Alle Namen, Nummern und Anliegen sind erfunden.
set -euo pipefail
cd "$(dirname "$0")"
if ! command -v say >/dev/null 2>&1; then
echo "say (macOS) nicht gefunden - auf anderen Systemen z. B. mit Piper" \
"erzeugen (siehe telefon/ansage_bauen.sh als Vorlage)." >&2
exit 1
fi
erzeuge() { # <datei> <stimme> <text>
local datei="$1" stimme="$2" text="$3"
say -v "$stimme" -o "$datei" --file-format=WAVE --data-format=LEI16@16000 "$text"
echo " $datei"
}
echo "Erzeuge Test-Anrufe (erfundene Daten) ..."
erzeuge rezept.wav Anna \
"Guten Tag, hier ist Erika Musterfrau. Ich bräuchte ein neues Rezept für mein Blutdruckmedikament, Ramipril fünf Milligramm. Bitte rufen Sie mich zurück unter null zwei eins null drei, eins zwei drei vier fünf sechs sieben. Vielen Dank."
erzeuge termin.wav Markus \
"Hallo, hier spricht Klaus Allofs. Ich hätte gerne einen Termin zur Vorsorgeuntersuchung, am liebsten nächste Woche vormittags. Meine Nummer ist null eins fünf einhundertsiebenundzwanzig, drei vier fünf sechs sieben acht neun. Danke schön."
erzeuge notfall.wav Petra \
"Hallo, hier ist Sabine Winter, es geht um meinen Vater. Er hat seit einer Stunde starke Schmerzen in der Brust und ist ganz blass. Bitte rufen Sie so schnell wie möglich zurück unter null eins sieben zwei, neun acht siebenunddreißig sechzehn."
echo "Fertig. Beispielaufruf: python3 -m pipe.process_call test/rezept.wav --nummer 021031234567"