WIP - tool for automated / mass messaging using Signal
Find a file
2020-09-27 20:21:33 +02:00
receiver init 2020-09-27 17:55:15 +02:00
sender init 2020-09-27 17:55:15 +02:00
signal-cli-rest-api init 2020-09-27 17:55:15 +02:00
worker init 2020-09-27 17:55:15 +02:00
.gitignore init 2020-09-27 17:55:15 +02:00
docker-compose.yml No need to expose port outside developing 2020-09-27 17:56:59 +02:00
README.md Draft of README 2020-09-27 20:21:33 +02:00
registrations.json.template init 2020-09-27 17:55:15 +02:00

signal-mass-dockerized

Set of docker containers for asynchronous Signal message processing (sending & receiving). It can be used as a gateway for automated notifications, bot with automatic replies or Signal equivalent of Telegram public groups where individuals can't see other users in group.

Signal-cli-rest-api

Slightly edited version of https://github.com/bbernhard/signal-cli-rest-api Manages installation and running of signal-cli, registrations of new Signal accounts sending and receiving of Signal messages over REST API. In future, it will probably be remade in Python to allow for receiving and sending attachments. In future, it should use DBus for messages, because it is a LOT faster than calling signal-cli all the time.

registrations.json

Simple json file that receiver and sender scripts use as source of registered Signal accounts. At this time registrations need to be added manually to this file. It's also possible to run signal-cli-rest-api on different server, or in multiple instances by using the "url" field-

Receiver

Periodicaly asks signal-cli-rest-api for new messages on Signal servers for each registered number. If there is new message, it writes it to RabbitMQ (queue signal-receive) for processing.

Sender

Listens for new messages in RabbitMQ (queue signal-send) and sends them to signal-cli-rest-api server accroding to registrations.json

RabbitMQ

Stores received messages and messages that are supposed to be sent out. Reason for using it is to accomodate communication between scripts and to be able to receive, send and process messages asynchronously.

Worker

Processes recieved messages in RabbitMQ and sends new messages into it. Doesn't care about the state of sending or receiving (for now). More workers could be added for different tasks if needed.

Right now, worker just takes received message and sends it back to the sender.

In future, there should be API for receiving messages from other apps and respond to automatic messages.



                                +-------------------------+
                                |                         |
                 +--------------+   signal-cli-rest-api   <------------------+
                 |              |                         |                  |
                 |              +-------------------------+                  |
                 |                                                           |
                 |                                                           |
                 |                                                           |
                 |                                                           |
    +------------v---------+       +---------------------+       +----------------------+
    |                      |       |                     |       |                      |
    |       Receiver       +------->  registrations.json <-------+        Sender        |
    |                      |       |                     |       |                      |
    +----------------------+       +---------------------+       +-----------^----------+
                 |                                                           |
                 |                                                           |
                 |                                                           |
                 |                                                           |
                 |                                                           |
                 |                 +----------------------+                  |
                 |                 |                      |                  |
                 +----------------->       RabbitMQ       +------------------+
                                   |                      |
                                   +-----------^----------+
                                               |
                                               |
                                               |
                                               |
                                   +-----------v----------+
                                   |                      |
                                   |        Worker        |
                                   |                      |
                                   +----------------------+