Principe

Par ce salop de Croco et corrigé par ce salop de fl0w5

Matrix permet de réaliser des bridges afin de centraliser tous les messages de certaines applications sur une simple application. Ainsi, il est possible de mettre en place un bot qui récupérera tous les messages de Facebook messenger et vous permettra, depuis le client Element, de recevoir, et envoyer de smessages, réagir aux messages et supprimer des messages. Il sera aussi possible de créer de nouvelles conversations avec d'autres utilisateurs Facebook. Cela sera transparent pour vous et pour eux.

Installation

Pour commencer, éteindre la stack matrix afin de pouvoir la modifier sereinement. Ensuite, l'éditer et ajouter ceci:

# ...

volumes:
  # ...
  mautrix-fb:
    driver: local

services:

 # ...

  mautrix-facebook:
  container_name: mautrix-facebook
  image: dock.mau.dev/mautrix/facebook
  restart: unless-stopped
  networks:
    - matrix
  depends_on:
    - synapse
  volumes:
    - mautrix-fb:/data
  environment:
    - TZ=Europe/Paris

Ce simple service va pouvoir créer les fichiers de configuration qu'il faudra éditer par la suite. Attendre une minute suite au lancement de la stack et l'éteindre afin de pouvoir modifier le fichier de configuration de mautrix-facebook.

Configuration

Ouvrir le fichier de configuration de mautrix-facebook qui est dans le volume mautrix-fb d'après la stack:

vim /var/lib/docker/volumes/matrix_mautrix-fb/_data/config.yaml

Dans ce fichier, il faudra modifier différentes parties:

  • Tout d'abord, il faut préciser les informations de notre serveur synapse:
homeserver:
#...
    address: http://synapse:8008
    domain: <domain>
#...
  • Ensuite, il faut mettre à jour la base de données que le bridge va utiliser. Le mot de passe <mautrixfb-password> est celui utilisé lors de la création de la base de données mautrix-fb dans le init.db ou alors il faudra créer une base de données avec ENCODING 'UTF8', LC_COLLATE='C' et LC_CTYPE='C'. Voici comment enregistrer la base de données pour le bot.
appservice:
    #...
    database: postgres://mautrixfacebook:<mautrixfb-password>@postgres:5432/mautrixfacebook
    #...
  • Enfin, il faut configurer les différents utilisateurs qui auront accès au bot. Ainsi, selon l'utilisateur créé lors de l'étape précédente:
bridge:
    #...
    permissions:
            '@<user>:<domain>': <admin/user>
    #...

Ici le <admin/user> est un choix à faire. Dans tous les cas, le bot marchera. Cependant, l'administrateur aura le droit de changer certains paramètres du bot (il n'est pas obligé d'avoir un compte admin pour le bon fonctionnement du bridge). Il est possible de rajouter autant d'utilisateurs et/ou d'admin que désiré mais un utilisateur doit être soit administrateur soit utilisateur. Les deux ne sont pas possibles.

Suite à cela, il faudra redémarrer la stack matrix, attendre une minute et l'éteindre à nouveau. En effet, mautrix-fb va nous créer un nouveau fichier de configuration prenant en compte nos changements dans le fichier config.yaml. A chaque changement de ce fichier, il faudra re-réaliser ces étapes.

Un nouveau fichier sera donc créé dans le volume mautrix-fb nommé registration.yaml. Il faudra alors le copier dans le volume monté de matrix:

cp /var/lib/docker/volumes/matrix_mautrix-fb/_data/registration.yaml /var/lib/docker/volumes/matrix_matrix/_data/mautrix-facebook-registration.yaml

Le changement du nom du fichier est arbitraire. En effet, nous allons surement installer d'autres bots donc nous allons avoir un fichier registration.yaml par bot.

Ensuite il faut éditer le fichier de configuration matrix homeserver.yaml afin d'ajouter le bot:

app_service_config_files:
  #...
  - /data/mautrix-facebook-registration.yaml

Il est alors possible de redémarrer la stack sur portainer. Cela peut prendre plusieurs minutes le temps de bien configurer la base de données pour le bot et d'enregistrer le bot dans le serveur synapse.

Création du bridge

Maintenant que le bot est contactable sur le serveur synapse, il faut configurer le bridge avec son compte messenger. Seulement les comptes renseignés comme user ou admin pourront communiquer avec l bot.

Sur Element, créer un nouvel espace afin de pouvoir inviter le bot facebook dessus:

Aller dans la room, inviter un utilisateur et saisir le nom d'utilisateur du bot:

@facebookbot:<domain>

Ensuite, ouvrir une conversation privée avec lui et à l'aide de la commande help vous aurez l'ensemble des commandes disponibles.

Pour vous connecter, il suffit de lui envoyer login et ensuite de suivre les instructions envoyées par le bot:

Et voila cette saloperie de bot va importer vos dernières discussions messenger (1:1 et de groupe) et il vous sera possible d'utiliser la commande search avec le bot pour ajouter des disucssions. Aussi, si une personne vous contacte, une nouvelle room sera créée afin de pouvoir discuter avec la personne.