mirror of
https://github.com/Jeuners/Logpy-AgentOne.git
synced 2026-09-09 15:02:33 +02:00
FreeSWITCHs record-App zerlegt ihre Argumente an Leerzeichen (record <pfad> <zeitlimit> <stille-schwelle> <stille-treffer>). Liegt das Projekt unter einem Pfad mit Leerzeichen, nimmt sie den Teil bis zum ersten Leerzeichen als Pfad und den Rest als Zahlenargumente. Die Aufnahme landet dann ohne Endung neben dem Projekt (roh im Codec-Format, z. B. Server.PCMA), der Eingang bleibt leer, der Watcher sieht nie etwas. Der Fehler tarnt sich: die Ansage laeuft normal, weil playback sein Argument am Stueck nimmt. Es sieht deshalb nach einem Watcher-Problem aus, nicht nach einem Pfadproblem. einrichten.sh prueft das jetzt vorab und nennt den Ausweg (Symlink ohne Leerzeichen, Skript darueber aufrufen). Aufgetreten auf der zweiten Maschine. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013pj3mSmL397czPaCfbL27Z
57 lines
2.4 KiB
Bash
Executable file
57 lines
2.4 KiB
Bash
Executable file
#!/bin/bash
|
|
# Traegt Trunk und Dialplan in die FreeSWITCH-Konfiguration ein.
|
|
# Das SIP-Passwort kommt aus der .env und landet nur in der FreeSWITCH-Config
|
|
# (Rechte 600), nie im Git.
|
|
set -euo pipefail
|
|
PROJEKT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
FS_ETC="${FS_ETC:-/opt/homebrew/etc/freeswitch}"
|
|
|
|
# FreeSWITCHs record-App zerlegt ihre Argumente an Leerzeichen:
|
|
# record <pfad> <zeitlimit> <stille-schwelle> <stille-treffer>
|
|
# Ein Leerzeichen im Projektpfad macht daraus einen abgeschnittenen Pfad; die
|
|
# Aufnahme landet neben dem Projekt, der Eingang bleibt leer und der Watcher
|
|
# bekommt nie etwas zu sehen. Die Ansage laeuft trotzdem - playback nimmt sein
|
|
# Argument am Stueck. Der Fehler sieht deshalb aus wie ein Watcher-Problem.
|
|
case "$PROJEKT" in
|
|
*\ *)
|
|
ersatz="$HOME/$(basename "$PROJEKT" | tr ' ' '-')"
|
|
{
|
|
echo "Der Projektpfad enthaelt ein Leerzeichen:"
|
|
echo " $PROJEKT"
|
|
echo "FreeSWITCH kann darin nicht aufnehmen. Abhilfe - einen Pfad ohne"
|
|
echo "Leerzeichen anlegen und dieses Skript darueber aufrufen:"
|
|
echo " ln -s \"$PROJEKT\" \"$ersatz\""
|
|
echo " $ersatz/telefon/freeswitch/einrichten.sh"
|
|
} >&2
|
|
exit 1 ;;
|
|
esac
|
|
|
|
[ -d "$FS_ETC" ] || { echo "FreeSWITCH-Konfiguration nicht gefunden: $FS_ETC" >&2; exit 1; }
|
|
[ -f "$PROJEKT/.env" ] || { echo ".env fehlt in $PROJEKT" >&2; exit 1; }
|
|
|
|
# .env einlesen, ohne die Werte auszugeben.
|
|
set -a; source "$PROJEKT/.env"; set +a
|
|
for v in SIP_USER SIP_PASS SIP_DOMAIN; do
|
|
[ -n "${!v:-}" ] || { echo "$v fehlt in .env" >&2; exit 1; }
|
|
done
|
|
[ -f "$PROJEKT/telefon/ansage.wav" ] || {
|
|
echo "Ansage fehlt - erst telefon/ansage_bauen.sh ausfuehren" >&2; exit 1; }
|
|
|
|
mkdir -p "$FS_ETC/sip_profiles/external" "$FS_ETC/dialplan/public"
|
|
|
|
fuelle() { # <vorlage> <ziel>
|
|
sed -e "s|@@SIP_USER@@|$SIP_USER|g" \
|
|
-e "s|@@SIP_PASS@@|$SIP_PASS|g" \
|
|
-e "s|@@SIP_DOMAIN@@|$SIP_DOMAIN|g" \
|
|
-e "s|@@SIP_PROXY@@|${SIP_PROXY:-$SIP_DOMAIN}|g" \
|
|
-e "s|@@PROJEKT@@|$PROJEKT|g" "$1" > "$2"
|
|
}
|
|
|
|
fuelle "$PROJEKT/telefon/freeswitch/plusnet.xml.tpl" "$FS_ETC/sip_profiles/external/plusnet.xml"
|
|
chmod 600 "$FS_ETC/sip_profiles/external/plusnet.xml" # enthaelt das SIP-Passwort
|
|
fuelle "$PROJEKT/telefon/freeswitch/praxis_ab.xml.tpl" "$FS_ETC/dialplan/public/00_praxis_ab.xml"
|
|
|
|
echo "Trunk -> $FS_ETC/sip_profiles/external/plusnet.xml (Rechte 600)"
|
|
echo "Dialplan -> $FS_ETC/dialplan/public/00_praxis_ab.xml"
|
|
echo "Ansage -> $PROJEKT/telefon/ansage.wav"
|
|
echo "Eingang -> $PROJEKT/telefon/eingang"
|