feat: Notruf-Bridge (seven.io) — Webhook-Empfänger für SMS + Anruf

Konkreter Provider hinter dem provider-agnostischen EMERGENCY_WEBHOOK_URL:
ein kleiner FastAPI-Dienst (emergency_bridge/), der das Notruf-Payload der
App entgegennimmt und pro Telefonnummer SMS und/oder TTS-Anruf über die
seven.io-API auslöst.

- main.py: POST /notruf (Bearer-Token-Prüfung), GET /health; seven.io
  SMS (/api/sms) + Voice (/api/voice, Text als SSML, XML-escaped), best
  effort mit Statuscode-100-Auswertung; Kanäle/Texte kommen aus dem Payload
- Betrieb: eigener systemd-Service auf 127.0.0.1:8090, läuft in der
  vorhandenen venv; .env.example + README mit Installations- und
  Verdrahtungsschritten
- Tests: SMS+Anruf-Fan-out, SSML-Escaping, Token-Auth, Kanal-Filter (5 Tests)
- DEPLOYMENT.md: optionaler Abschnitt 2.9 mit Verweis auf die Bridge

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-25 10:53:34 +02:00
commit 7addb903b2
7 changed files with 353 additions and 0 deletions

View file

@ -0,0 +1,16 @@
# Notruf-Bridge — Konfiguration. Kopieren nach /etc/voice-assistant/emergency-bridge.env
# (chmod 600, Eigentümer voice). KEINE Inline-Kommentare hinter den Werten!
# --- seven.io ---
SEVENIO_API_KEY=dein-seven-io-api-key
SEVENIO_SMS_FROM=Notruf
# SEVENIO_VOICE_FROM=+49XXXXXXXXXX
SEVENIO_VOICE_NAME=de-de-female
# --- Absicherung gegen die App ---
# Muss EMERGENCY_WEBHOOK_TOKEN in der voice-assistant.env entsprechen.
BRIDGE_TOKEN=ein-langes-zufaelliges-geheimnis
# --- Bind (nur lokal; die App ruft localhost) ---
BRIDGE_HOST=127.0.0.1
BRIDGE_PORT=8090