Zum Inhalt springen

Brücke von WhatsApp zu Matrix

WhatsApp wird zwar immer noch von vielen Menschen genutzt, aber sowohl technologisch als auch mit Blick auf informationelle Selbstbestimmung gibt es mittlerweile gute Alternativen. Ich empfehle Wechselwilligen Threema und Signal. Technisch Interessierten oder Intensivnutzer:innen rate ich zu Matrix.

Da aber WhatsApp bei vielen Menschen leider immer noch der Standard-Messenger ist, gibt es immer mal wieder den Bedarf, auch auf WhatsApp erreichbar zu sein.

Wenn man ohnehin mit Matrix unterwegs ist, bietet es sich an, eine Brücke zwischen einem WhatsApp-Konto und dem eigenen Matrix-Konto aufzubauen. Am einfachsten ist es natürlich, wenn der genutzte Matrix-Service diese Brücke bereits anbietet oder man einen Dienste wie beeper.com nutzt.

Ist diese Brücke auf dem genutzten Matrix-Service verfügbar, dann ist die Kopplung mit dem eigenen WhatsApp-Konto schnell hergestellt und man kann genau auswählen, welche Chats und welche Gruppen man dann in Matrix sehen will.

Zunächst lädt man den zur Brücke gehörenden Bot in einen direkten Chat ein. Die weitere Steuerung der Matrix-WhatsApp-Brücke erfolgt über solche Befehle an den Bot in diesem direktem Chat.

Der erste Schritt: Einen direkten Chat mit dem WhatsApp Bridge Bot öffnen

Danach baut man dann die Brücke zu seinem WhatsApp-Konto auf, indem man dem Bot den Befehl „login“ sendet.

Die Einrichtung ist ähnlich zu WhatsApp Web. Der QR-Code wurde nachträglich verändert 🙂

Der Prozess danach ähnelt der Nutzung von WhatsApp-Web im Browser. Man fotografiert mit WhatsApp auf dem Mobiltelefon den QR-Code ab und danach ist dann der eigene Matrix-Service mit dem WhatsApp-Konto verbunden.

Daraufhin kann man die Chats und Kontakt mittels „sync“ synchronisieren. Man kann mittels „sync –create-all“ auch gleich alle bestehenden WhatsApp-Chats und -Gruppen automatisch auch als Matrix-Räume erstellen lassen, davon würde ich aber abraten. Ich finde es besser, wenn man sich dann selektiv die WhatsApp-Chats in die Matrix zieht, die man auch wirklich regelmäßig braucht. Zu neuen Chats wird man sowieso vom Bot eingeladen.

Synchronisation der Kontakte und Chats

Einen bestehenden persönlichen Chat kann man mittels der „pm“ gefolgt von der Telefonnummer in internationaler Schreibweise in Matrix aktivieren.

Öffnen eines bestehenden oder neuen Chats mit einem Kontakt

Die zu einem Kontakt gehörende Telefonnummer kann man mittels „list contacts“ anzeigen lassen.

Eine Liste aller synchronisierten Kontakte (gekürzt und natürlich verpixelt)

Eine Gruppe kann man mittels „open“ gefolgt von der Gruppen-ID in Matrix sichtbar machen.

Die zu einer Gruppe gehörende ID kann man mittels „list groups“ herausfinden.

Eine Liste von Gruppenchats, inklusive der allgegenwärtigen Sportgruppe für Eltern

Hat man beispielsweise eine Gruppe ausgewählt, so wird man dann durch den Bot zu einer neuen Matrix-Gruppe eingeladen, die die Inhalte der WhatsApp-Gruppe enthält. Alle Nutzer:innen der Gruppe sind sichtbar, das Gruppenbild wird auch übernommen. Medieninhalte wie Videos und Bilder sind genauso komfortabel aufrufbar wie im WhatsApp-Client.

Eine WhatsApp-Gruppe in Matrix

Wenn man jetzt daran denkt, Matrix-Räume mit mehreren Nutzer:innen mit einem WhatsApp-Raum zu verbinden, muss man leider anders planen. Die Brücke zwischen WhatsApp und Matrix ist an ein WhatsApp-Konto gebunden. Man brückt also nicht zwei Netzwerke, sondern nur ein Konto. Alle Nachrichten in diesem Raum würden ansonsten in WhatsApp ja so dargestellt werden, als hätte dieses eine Konto dies versendet. Aus diesem Grund verweigert der Bot auch die Zusammenarbeit, wenn man nicht allein in einem Matrix-Raum ist. (Eine andere Art der Anbindung ist über den RelayBot möglich, das habe ich aber noch nicht ausprobiert.)

Man kann keine Matrix-Räume mit mehreren Nutzer:innen verbinden.

Betreibt man seinen eigenen Matrix-Server bereits selbst, dann geht das Einrichten der mautrix-whatsapp-bridge schnell von der Hand.

Die Funktionsweise der Bridge ist in der Online Dokumentation zu mautrix-whatsapp gut beschrieben.

Ich betreibe meine Matrix-Server und die „umliegenden“ Dienste als Docker-Instanzen und nutze dafür docker-compose. Für die Bridge richte ich einen zusätzlichen Container ein:

  whatsapp-bridge:
    image: dock.mau.dev/mautrix/whatsapp:latest
    restart: unless-stopped
    volumes:
      -   ./whatsapp-bridge:/data
    networks:
      matrix:

Nachdem man die Bridge einmal mit „docker-compose up whatsapp-bridge“ gestartet und beendet hat, kann man das erzeugte Konfigurationsfile und die notwendige Konfiguration am Matrix-Service vornehmen.

In der Konfigurationsdatei der Bridge (config.yaml, bei mir dann im Verzeichnis whatsapp-bridge) ist es wichtig, die Adresse des Matrix-Servers und die dazu gehörende Domain richtig einzutragen. Macht man bei der Domain Fehler, können später die Kontakte und Gruppen aus WhatsApp nicht erzeugt werden.

# Homeserver details.
homeserver:
    # The address that this appservice can use to connect to the homeserver.
    address: https://matrix.tumelum.de
    # The domain of the homeserver (for MXIDs, etc).
    domain: tumelum.de

Dann müssen in der Datei zumindest noch die Werte

as_token: hierstehtdanneinwert
hs_token: hierstehtdannaucheinwert

bearbeitet werden. Dies soll eigentlich automagisch passieren, ich musste diese aber aus der ebenfalls automatisch erzeugten Datei „registration.yaml“ kopieren.

In der Datei „registration.yaml“ bitte darauf achten, dass die Werte für sender_localpart etc. richtig konfiguriert sind.

sender_localpart: whatsappbot
namespaces:
  users:
  - regex: ^@whatsapp_[0-9]+:tumelum.de$
    exclusive: true
  - regex: ^@whatsappbot:tumelum.de$
    exclusive: true

Diese Bridge arbeitet als Application Service in direkter Kopplung zum Matrix-Service. Die Datei registration.yaml muss deshalb im Matrix-Service bekannt gemacht werden. Ich habe diese unter einem sprechenderen Namen im Docker-Container des Dienstes „synapse“ bereitgestellt. In der Konfigurationsdatei (mit Namen „homeserver.yaml“) trägt man dann folgendes ein:

# A list of application service config files to use
#
app_service_config_files:
  - /data/whatsapp-bridge.yaml

Und das wars auch schon. Beide Dienste (Synapse und die WhatsApp-Bridge) neu starten und in die aussagekräftigen Logfiles schauen, ob es Fehlermeldungen gibt.

Die Dokumentation und verschiedenen Howtos gehen über das hier Gezeigte dann noch ein wenig hinaus. Man kann die Brücke zwischen Matrix und WhatsApp sehr fein steuern. Und: Es gibt sogar eine Anleitung, wie man WhatsApp nur noch in einem Android-Emulator verwendet.

(Titelbild von Wolfgang Claussen auf Pixabay)

Published inAllgemein