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 @@
[Unit]
Description=Notruf-Bridge (Voice-Assistant Webhook -> seven.io SMS/Anruf)
After=network-online.target
Wants=network-online.target
[Service]
User=voice
Group=voice
WorkingDirectory=/opt/voice-assistant
EnvironmentFile=/etc/voice-assistant/emergency-bridge.env
ExecStart=/opt/voice-assistant/.venv/bin/uvicorn emergency_bridge.main:app --host ${BRIDGE_HOST} --port ${BRIDGE_PORT}
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target