mirror of
https://github.com/Jeuners/Logpy-AgentOne.git
synced 2026-09-18 03:06:11 +02:00
Hauptnummer und DW3 spielen nach dem Annehmen den Notruf-Ton aus dem Profil (8 kHz mono PCM16). Taste 1 geht wie Durchwahl 9 an den Pipecat-Bootstrap, ohne Taste weiter zu Ansage und Aufnahme. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
80 lines
3.6 KiB
Bash
Executable file
80 lines
3.6 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|@@DW3_DDI@@|${DW3_DDI:-}|g" \
|
|
-e "s|@@DW9_DDI@@|${DW9_DDI:-}|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"
|
|
# Kontext fuer Taste 1 waehrend des Notruf-Tons - Top-Level unter dialplan/,
|
|
# nicht in public/ (siehe notruf_menue.xml.tpl).
|
|
fuelle "$PROJEKT/telefon/freeswitch/notruf_menue.xml.tpl" "$FS_ETC/dialplan/notruf_menue.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 "Notruf -> $FS_ETC/dialplan/notruf_menue.xml (Ton: telefon/notruf_ton.wav, Taste 1 -> Astra)"
|
|
echo "Eingang -> $PROJEKT/telefon/eingang"
|
|
|
|
if [ -n "${DW3_DDI:-}" ]; then
|
|
fuelle "$PROJEKT/telefon/freeswitch/dw3_warten.xml.tpl" "$FS_ETC/dialplan/public/00_dw3_warten.xml"
|
|
echo "DW3 -> $FS_ETC/dialplan/public/00_dw3_warten.xml (DDI: $DW3_DDI, 20s Wartezeit)"
|
|
else
|
|
echo "DW3 -> uebersprungen (DW3_DDI leer in .env)"
|
|
fi
|
|
|
|
# DW9 (rufagent) -> Astra-Telefonagent. Dateiname "00_dw9_..." ist Absicht:
|
|
# muss alphabetisch vor 00_praxis_ab.xml einsortieren, siehe
|
|
# dw9_rufagent.xml.tpl fuer die Begruendung (2026-09-13 gefunden).
|
|
if [ -n "${DW9_DDI:-}" ]; then
|
|
fuelle "$PROJEKT/telefon/freeswitch/dw9_rufagent.xml.tpl" "$FS_ETC/dialplan/public/00_dw9_rufagent.xml"
|
|
echo "DW9 -> $FS_ETC/dialplan/public/00_dw9_rufagent.xml (DDI: $DW9_DDI, -> Astra)"
|
|
else
|
|
echo "DW9 -> uebersprungen (DW9_DDI leer in .env)"
|
|
fi
|