Files
BSN-Chatsystem/docs/plans/2026-06-18-multi-channel-erweiterung.md
T

12 KiB
Raw Blame History

Multi-Channel-Erweiterung für Boardgame.network — Analyse & Implementierungsplan

Für: Daniel Krause (brettspiel-news.de)
Datum: 18.06.2026
Status: Analyse & Priorisierung


Ist-Zustand

Das aktuelle Intake-System (app.py auf Port 5002) unterstützt:

Kanal Status Einträge in DB Technik
WhatsApp Live 15 Meta Cloud API Webhook /whatsapp/webhook
Web-Formular Live 7 /api/submit (Multipart-Formular)
Telegram ⚠️ 1 Test-Eintrag 1 Nicht im Chatbot implementiert — wird extern behandelt

Der existierende Meta System User Token (permanent, expires: 0) hat bereits folgende Scopes:

  • instagram_basic
  • instagram_content_publish
  • pages_read_engagement
  • pages_show_list
  • whatsapp_business_management
  • whatsapp_business_messaging

Das bedeutet: Instagram und Facebook Messenger könnten über die bestehende Meta-Infrastruktur integriert werden, ohne neue Berechtigungen!


Kanal-Analyse (sortiert nach Geschwindigkeit der Umsetzbarkeit)

🔥 Kanal 1: Telegram (Bot API) — schnellster Gewinn

Kriterium Bewertung
Aufwand 34 Stunden
API-Typ Offizielle REST API, sehr gut dokumentiert
Integration Webhook-Pattern wie WhatsApp: Telegram POSTed Updates → unser Endpoint antwortet
Message-Typen Text, Foto, Video, Audio, Voice, Standort, Dokumente
Kosten Kostenlos
DSGVO ⚠️ Telegram ist in Dubai ansässig, Server global verteilt. Datenschutzerklärung muss Telegram als Auftragsverarbeiter nennen. ABER: Nutzer wählen Telegram selbst → ihre Entscheidung. Keine Gesundheitsdaten o.Ä. → vertretbares Risiko.

Technische Umsetzung:

  • Bot via @BotFather erstellen → API-Token
  • Neuer Endpoint: POST /telegram/webhook in app.py
  • Webhook-URL setzen: https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://chat.datenhimmel.work/telegram/webhook
  • Parser-Funktion: Telegram-Update → Submission-DB-Schema mappen
  • Media-Download via https://api.telegram.org/file/bot<TOKEN>/<file_path>
  • Anti-Spam: Gleiche GDPR-Lösch-Logik wie WhatsApp

Status: Ein Test-Eintrag existiert bereits in der DB → Telegram wurde schon mal angetestet. Jetzt sauber implementieren.


🔥 Kanal 2: Instagram Direct Messages — Meta-API, fast geschenkt

Kriterium Bewertung
Aufwand 46 Stunden
API-Typ Meta Graph API (gleiche Infrastruktur wie WhatsApp!)
Integration Instagram Professional Account an App koppeln → Webhook konfigurieren → Nachrichten landen im gleichen Webhook-Endpoint
Message-Typen Text, Bilder, Videos, Story-Replies, Link-Attachments
Kosten Kostenlos (Teil der Meta Graph API)
DSGVO ⚠️ Meta = US-Konzern. ABER: Gleiche Rechtsgrundlage wie WhatsApp-Integration. Standardvertragsklauseln. Datenschutzerklärung ist bereits Meta-konform (WhatsApp-Teil). Instagram DM ist weniger invasiv als WhatsApp (keine Telefonnummer zwingend erforderlich).

Technische Umsetzung:

  1. Instagram Professional Account mit der Meta-App "Brettspiel-News.de" verbinden
  2. Im Meta Developer Dashboard: Webhook-Produkt instagram hinzufügen
  3. Webhook-Feld messages abonnieren → Test-Send von Instagram
  4. Neuer Handler in app.py für Instagram-Events (gleicher Webhook-Endpoint, anderer object-Typ: instagram)
  5. Message-Format-Mapper: Instagram-Nachricht → Submission-Schema
  6. Media-Download via Instagram Graph API (Media-URLs sind kurzlebig — direkt downloaden!)

PITFALL: Instagram-Webhooks nutzen das GLEICHE Webhook-Endpoint-Format wie WhatsApp, aber mit "object": "instagram" statt "object": "whatsapp_business_account". Kann also im selben /whatsapp/webhook-Endpoint behandelt werden — nur eine Fallunterscheidung nötig.


🔥 Kanal 3: Facebook Messenger — größte Reichweite unter Brettspielern

Kriterium Bewertung
Aufwand 68 Stunden
API-Typ Meta Graph API (Send/Receive API)
Integration Facebook Page an App koppeln → Webhook konfigurieren → Nachrichten verarbeiten
Message-Typen Text, Bilder, Videos, Audio, Dateien, Quick Replies, Templates
Kosten Kostenlos (24h-Standard-Messaging-Fenster, danach nur Message-Tags)
DSGVO ⚠️ Wie Instagram: Meta-US. ABER: Facebook-Seiten-Admin hat geteilte Verantwortlichkeit mit Meta (Art. 26 DSGVO). Muss in Datenschutzerklärung explizit genannt werden. Page-Admin-Tools geben Einblick in Datenverarbeitung.

Technische Umsetzung:

  1. Facebook Page "Brettspiel News" mit der Meta-App verbinden (Page Access Token)
  2. Meta Developer Dashboard: Webhook-Produkt messenger hinzufügen
  3. Webhook-Felder messages und messaging_postbacks abonnieren
  4. Page abonnieren (ohne Subscription kommen keine Events!)
  5. Handler für "object": "page" im Webhook-Endpoint
  6. Messenger-Send-API für Antworten (POST /{page_id}/messages)
  7. Media-Handling: Messenger-Attachments → Download via URL (authorisiert mit Page Token)
  8. 24h-Fenster beachten: Nach 24h nur noch per Message-Tag antworten

PITFALL: Messenger hat ein 24-Stunden-Fenster für freie Antworten. Danach nur noch per Message-Tag (z.B. HUMAN_AGENT, POST_PURCHASE_UPDATE). Unsere Auto-Replies müssen innerhalb von 24h erfolgen — was bei Echtzeit-Antworten gegeben ist.


⚠️ Kanal 4: Signal (via signal-cli) — datenschutzfreundlich, aber aufwendig

Kriterium Bewertung
Aufwand 1216 Stunden + laufender Wartungsaufwand
API-Typ Keine offizielle API. signal-cli (Open Source, Java) als REST-Wrapper
Integration Signal-Telefonnummer registrieren → signal-cli als Daemon → REST-Endpoint exposed → Polling oder Webhook-ähnlich
Message-Typen Text, Bilder, Videos, Dateien, Gruppen (eingeschränkt)
Kosten Kostenlos (Signal selbst), aber: dedizierte Telefonnummer nötig (~510€/Monat)
DSGVO 🟢 Bester Datenschutz aller Optionen: Signal ist E2E-verschlüsselt, non-profit, kein US-Datenzugriff. ABER: signal-cli ist ein inoffizieller Client — rechtliche Grauzone. Theoretisch DSGVO-freundlich, praktisch nicht auditierbar.

Technische Umsetzung:

  1. Dedizierte SIM-Karte / VoIP-Nummer für Signal registrieren
  2. signal-cli installieren + als systemd-Daemon einrichten
  3. REST-Mode aktivieren: signal-cli daemon --http-listen 127.0.0.1:8080
  4. Polling-Loop oder lokalen Webhook via nginx auf die REST-API von signal-cli
  5. Parser: Signal-Nachrichten-Format → Submission-Schema
  6. Media: signal-cli lädt Attachments automatisch → lokaler Pfad referenzieren
  7. Gruppen-Kommunikation: Signal-Gruppen sind verschlüsselt — nicht moderierbar vor Empfang

PITFALLS:

  • signal-cli bricht bei größeren Updates von Signal regelmäßig → Wartungsaufwand
  • Telefonnummer kann von Signal gebannt werden, wenn als Bot erkannt
  • Kein offizieller Support — bei Problemen auf sich allein gestellt
  • Gruppen-Nachrichten: Bot muss Gruppenmitglied sein (Einladung nötig)

Fazit: Nur umsetzen, wenn Datenschutz-Enthusiasten explizit Signal fordern. Strategisch wertvoll als DSGVO-Vorzeigekanal, aber operativ teuer.


🎮 Bonus-Kanal 5: Discord — Gaming-Community, einfach integrierbar

Kriterium Bewertung
Aufwand 35 Stunden
API-Typ Offizielle REST + Gateway (WebSocket) API
Integration Discord Bot App → Webhook oder Gateway-Events → Handler
Kosten Kostenlos
DSGVO ⚠️ Discord = US-Unternehmen. Standardvertragsklauseln nötig. Aber: Gaming-Community ist Discord-affin — viele Brettspiel-Discords existieren bereits.

DSGVO-Zusammenfassung

Kanal US-Datenübermittlung Einwilligung nötig? Auftragsverarbeiter
WhatsApp (Meta US) Ja (Double Opt-In empfohlen) Meta Platforms Inc.
Instagram (Meta US) Ja Meta Platforms Inc.
Messenger (Meta US) Ja Meta Platforms Inc. (geteilte Verantwortung)
Telegram ⚠️ (Dubai, nicht US/EU) Empfohlen Telegram FZ-LLC
Signal (E2E, non-profit) Nein (Datenschutz per Design) Keiner (direkte Kommunikation)
Discord (US) Empfohlen Discord Inc.

Generelle DSGVO-Maßnahmen (für alle Kanäle):

  1. Datenschutzerklärung um jeden Kanal erweitern
  2. Double Opt-In: VERIFICATION_REQUIRED=1 in .env aktivieren
  3. Löschlogik: DELETE /submission/<id> bereits implementiert — GDPR-Request manuell auslösbar
  4. Datenminimierung: Wir speichern nur sender_id, sender_name, content, media_path — keine Metadaten (IP, Standort, Gerätedaten)
  5. Server-Standort: Deutschland (netcup) — DSGVO-konformes Hosting

Wichtig: Für Meta-Kanäle (WhatsApp, Instagram, Messenger) sollte die Datenschutzerklärung einen expliziten Hinweis enthalten, dass Nachrichten über Meta-Server in die USA geleitet werden und der Nutzer dem durch Nutzung des jeweiligen Kanals zustimmt.


Rangliste: Was zuerst?

┌───────┬─────────────────┬──────────┬──────────┬──────────┬──────────┐
│ Rang  │ Kanal           │ Aufwand  │ Nutzen   │ DSGVO    │ Prio     │
├───────┼─────────────────┼──────────┼──────────┼──────────┼──────────┤
│  1.   │ Telegram        │ 34 h    │ Hoch     │ Mittel   │ 🔥🔥🔥   │
│  2.   │ Instagram       │ 46 h    │ Mittel   │ Mittel   │ 🔥🔥     │
│  3.   │ Facebook Msgr   │ 68 h    │ Sehr hoch│ Mittel   │ 🔥🔥     │
│  4.   │ Discord         │ 35 h    │ Mittel   │ Mittel   │ 🔥       │
│  5.   │ Signal          │ 1216 h  │ Niedrig  │ Grün    │ ⚡       │
└───────┴─────────────────┴──────────┴──────────┴──────────┴──────────┘

Empfehlung: Starte mit Telegram + Instagram parallel (beide zusammen ~8h), dann Facebook Messenger (~8h). Discord und Signal sind Optional.


Implementierungs-Roadmap

Phase 1: Telegram (1 Tag)

  • Bot mit @BotFather erstellen, Token in .env
  • Endpoint POST /telegram/webhook in app.py
  • Parser: Telegram-Update → submissions-Schema
  • Media-Download via Telegram File API
  • Webhook-URL registrieren, Test-Nachricht senden
  • Deployment + Tunnel-Verifikation

Phase 2: Instagram (1 Tag)

  • Instagram Professional Account mit Meta-App verbinden
  • Webhook instagram im Meta Developer Dashboard konfigurieren
  • Handler im WhatsApp-Webhook: object == "instagram" Fall
  • Message-Mapper + Media-Download
  • Test: Instagram DM an verknüpften Account senden
  • Deployment + Verifikation

Phase 3: Facebook Messenger (12 Tage)

  • Facebook Page mit App verbinden, Page Access Token holen
  • Webhook messenger konfigurieren + Page abonnieren
  • Handler im Webhook für object == "page"
  • Messenger Send API für Antworten
  • Media-Handling (Attachments über Messenger Platform API)
  • 24h-Fenster-Logik für Antworten
  • Test + Deployment

Phase 4 (Optional): Discord + Signal

  • Discord: Bot App erstellen, Gateway verbinden, Commands
  • Signal: signal-cli installieren, Daemon, REST-Integration

Nächster Schritt

Soll ich direkt mit Phase 1 (Telegram) loslegen? Der Bot kann in ~3 Stunden live sein, und wir haben schon einen Test-Eintrag in der DB. Wenn du grünes Licht gibst, schreibe ich den Code, deploye und verifiziere. 🚀