12 KiB
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 |
|---|---|---|---|
| ✅ 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 | 3–4 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/webhookinapp.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 | 4–6 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:
- Instagram Professional Account mit der Meta-App "Brettspiel-News.de" verbinden
- Im Meta Developer Dashboard: Webhook-Produkt
instagramhinzufügen - Webhook-Feld
messagesabonnieren → Test-Send von Instagram - Neuer Handler in
app.pyfür Instagram-Events (gleicher Webhook-Endpoint, andererobject-Typ:instagram) - Message-Format-Mapper: Instagram-Nachricht → Submission-Schema
- 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 | 6–8 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:
- Facebook Page "Brettspiel News" mit der Meta-App verbinden (Page Access Token)
- Meta Developer Dashboard: Webhook-Produkt
messengerhinzufügen - Webhook-Felder
messagesundmessaging_postbacksabonnieren - Page abonnieren (ohne Subscription kommen keine Events!)
- Handler für
"object": "page"im Webhook-Endpoint - Messenger-Send-API für Antworten (POST
/{page_id}/messages) - Media-Handling: Messenger-Attachments → Download via URL (authorisiert mit Page Token)
- 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 | 12–16 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 (~5–10€/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:
- Dedizierte SIM-Karte / VoIP-Nummer für Signal registrieren
- signal-cli installieren + als systemd-Daemon einrichten
- REST-Mode aktivieren:
signal-cli daemon --http-listen 127.0.0.1:8080 - Polling-Loop oder lokalen Webhook via nginx auf die REST-API von signal-cli
- Parser: Signal-Nachrichten-Format → Submission-Schema
- Media: signal-cli lädt Attachments automatisch → lokaler Pfad referenzieren
- 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 | 3–5 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 |
|---|---|---|---|
| ✅ (Meta US) | Ja (Double Opt-In empfohlen) | Meta Platforms Inc. | |
| ✅ (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):
- Datenschutzerklärung um jeden Kanal erweitern
- Double Opt-In:
VERIFICATION_REQUIRED=1in.envaktivieren - Löschlogik:
DELETE /submission/<id>bereits implementiert — GDPR-Request manuell auslösbar - Datenminimierung: Wir speichern nur
sender_id,sender_name,content,media_path— keine Metadaten (IP, Standort, Gerätedaten) - 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 │ 3–4 h │ Hoch │ Mittel │ 🔥🔥🔥 │
│ 2. │ Instagram │ 4–6 h │ Mittel │ Mittel │ 🔥🔥 │
│ 3. │ Facebook Msgr │ 6–8 h │ Sehr hoch│ Mittel │ 🔥🔥 │
│ 4. │ Discord │ 3–5 h │ Mittel │ Mittel │ 🔥 │
│ 5. │ Signal │ 12–16 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/webhookinapp.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
instagramim 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 (1–2 Tage)
- Facebook Page mit App verbinden, Page Access Token holen
- Webhook
messengerkonfigurieren + 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. 🚀