My boring Blog

Home page di Mauro Frigerio

Notifiche Home Assistant o Uptime Kuma su Signal

25-10-2021 Tempo di lettura 4 minuti Article

Introduzione

Tanti sistemi necessitano di inviare notifiche in situazioni particolari e tra questi ci sono Home Assistant e Uptime Kuma. Ogni tanto è comodo inviare le notifiche a più persone. Signal permette d’inviare dei messaggi ad un unico numero o a un gruppo di persone. Inoltre è possibile consultare i messaggi di un account da molteplici apparecchi.

Su GitHub è possibile trovare un progetto che crea un container docker contenente le API per Signal (documentazione).

Requisiti

  • dominio (in questo esempio uso signal.example.com)
  • uno smartphone con Signal attivo

Questi sono dei requisiti opzionali per rendere l’untilizzo delle API migliori:

  • utilizzo di un reverse proxy (in questo esempio traefik)
  • un secondo smartphone con Signal (da usare come numero per l’invio di messaggi)

Container docker API Signal

Container docker

https://github.com/bbernhard/signal-cli-rest-api

version: "3"
services:
  signal-cli-rest-api:
    image: bbernhard/signal-cli-rest-api:latest
    environment:
      - MODE=normal #supported modes: json-rpc, native, normal
    ports:
      - "8080:8080" #use this option only without a reverse proxy
    volumes:
      - "/home/user/docker/signal-cli-config:/home/.local/share/signal-cli" 	#change the path

Attivazione Signal

L’utilizzo delle API di Signal è come aggiungere un device alla lista di quelli collegati ad un account. Ogni messaggio verrà poi inviato da quel numero e quinddi se i messaggi sono inviati ad un gruppo a chi appartiene il numereo non riceverà nessuna notifica. Per questo motivo consiglio di utilizzare un secondo numero di telefono.

Se non è possibile avere due numeri di telefono diversi, allora si deve inviare il messaggio al proprio numero e i messaggi arriveranno come Note personali con relativa notifica.

Lo svolgimento dell’attivazione richiede uno smartphone con Signal installato e funzionante per il numero di telefono e un tablet o computer che possa accedere al container delle API. Per semplificare un po’ la guida userò solo il dominio https://signal.example.com per accedere al container, ma se non usate un reverse proxy allora dovete sostituire il tutto con: http://1.2.3.4:8080

  1. Sul computer aprire l’indirizzo nel browser https://signal.example.com/v1/qrcodelink?device_name=NOME_DEVICE , sostituire NOME_DEVICE con un nome per identificare il container tra i device collegati all’account di Signal

  2. Se appare un QR code potete procedere

  3. Sullo smartphone aprire l’app di Signal e aggiungere un nuovo device. In Android

  4. Sul computer aprire con il browser l’indirizzo: https://signal.example/v1/receive/MOBILE_NUMBER , sostituire OBILE_NUMBER con il numero di telefono dello smartphone, non dimenticare il prefisso all’inizio (+41… per la Svizzera). Se appaiono parecchie informazioni vuol dire che l’API è collegata con l’account e può essere usata secondo la documentazione.

Invio di messaggi a un numero di telefono

ATTENZIONE: non è possibile inviare contemporaneamente dei messaggi a dei numeri di telefono e a dei gruppi. Le chiamate devono essere fatte separatamente.

  1. Dal computer si può richiedere l’invio del messaggio, questo esempio mostra il comando da lanciare nel terminal su Linux (per Windows ci sono programmi come Postman)

  2. Aprire un editor di testo (p. es. gedit) e modificate i punti necessari (dominio e MOBILE_NUMBER)

curl -X 'POST' \
  'https://signal.example.com/v2/send' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "message": "TEST INVIO MESSAGGIO",
  "number": "MOBILE_NUMBER",
  "recipients": [
    "MOBILE_NUMBER"
  ]
}'
  1. Copiare il comando modificato e copiarlo in un terminal, se il risultato riporta tutti i parametri inseriti a breve riceverai il messaggio nelle Note personali

Invio di messaggi a un gruppo

ATTENZIONE: non è possibile inviare contemporaneamente dei messaggi a dei numeri di telefono e a dei gruppi. Le chiamate devono essere fatte separatamente.

  1. Prima di tutto si deve sapere l’ID del gruppo, in un browser si può richiamare l’indirizzo modificando MOBILE_NUMBER: https://signal.example.com/v1/groups/MOBILE_NUMBER

  2. Copiare l’ID (inizia con group.abcd...xyz=)del gruppo e metterlo al posto del MOBILE_NUMBER nel comando per l’invio di messaggi.

Utilizzo con Uptime Kuma

Aggiungere una notifica di tipo Signal con queste opzioni:

  • Tipo notifica: Signal
  • Nome amichevole: inserire un testo per riconosce i destinatari delle notifiche
  • Post URL: https://signal.example.com/v2/send
  • Number: MOBILE_NUMBER
  • Recipients: MOBILE_NUMBER o ID gruppo (ATTENZIONE non è possibile aggiungere numeri di telefono e gruppi, si devono creare due notifiche diverse)

Utilizzo con Home Assistant

Documentazion ufficiale dell’integrazione di Signal su Home Assistant.

Al file di configurazione di Home Assistant aggiungere la seguente configurazione:

notify:
	- name: signal_personal_number
    platform: signal_messenger
    url: "https://signal.example.com"
    number: "MOBILE_NUMBER"
    recipients:
      - "MOBILE_NUMBER"

Immagine di copertina: torstensimon da Pixabay