Skip to content

Signal

Connetta il Suo agente Triggerfish a Signal affinché le persone possano scrivergli dall'app Signal. L'adattatore comunica con un daemon signal-cli tramite JSON-RPC, utilizzando il Suo numero di telefono Signal collegato.

Come Signal è Diverso

L'adattatore Signal è il Suo numero di telefono. A differenza di Telegram o Slack dove esiste un account bot separato, i messaggi Signal provengono da altre persone al Suo numero. Questo significa:

  • Tutti i messaggi in entrata hanno isOwner: false -- provengono sempre da qualcun altro
  • L'adattatore risponde come il Suo numero di telefono
  • Non c'è un controllo proprietario per-messaggio come negli altri canali

Questo rende Signal ideale per ricevere messaggi dai contatti che scrivono al Suo numero, con l'agente che risponde per conto Suo.

Classificazione Predefinita

Signal è predefinito a classificazione PUBLIC. Poiché tutti i messaggi in entrata provengono da contatti esterni, PUBLIC è il valore predefinito sicuro.

Configurazione

Passaggio 1: Installi signal-cli

signal-cli è un client a riga di comando di terze parti per Signal. Triggerfish comunica con esso tramite un socket TCP o Unix.

Linux (build nativo -- Java non necessario):

Scarichi l'ultimo build nativo dalla pagina delle release di signal-cli, oppure lasci che Triggerfish lo scarichi per Lei durante la configurazione.

macOS / altre piattaforme (build JVM):

Richiede Java 21+. Triggerfish può scaricare automaticamente un JRE portatile se Java non è installato.

Può anche eseguire la configurazione guidata:

bash
triggerfish config add-channel signal

Questo verifica signal-cli, offre di scaricarlo se mancante, e La guida attraverso il collegamento.

Passaggio 2: Colleghi il Suo Dispositivo

signal-cli deve essere collegato al Suo account Signal esistente (come collegare un'app desktop):

bash
signal-cli link -n "Triggerfish"

Questo stampa un URI tsdevice:. Scansioni il codice QR con la Sua app Signal mobile (Impostazioni > Dispositivi collegati > Collega nuovo dispositivo).

Passaggio 3: Avvii il Daemon

signal-cli viene eseguito come daemon in background a cui Triggerfish si connette:

bash
signal-cli -a +14155552671 daemon --tcp localhost:7583

Sostituisca +14155552671 con il Suo numero di telefono in formato E.164.

Passaggio 4: Configuri Triggerfish

Aggiunga Signal al Suo triggerfish.yaml:

yaml
channels:
  signal:
    endpoint: "tcp://127.0.0.1:7583"
    account: "+14155552671"
    classification: PUBLIC
OpzioneTipoObbligatorioDescrizione
endpointstringIndirizzo daemon signal-cli (tcp://host:porta o unix:///percorso/al/socket)
accountstringIl Suo numero di telefono Signal (formato E.164)
classificationstringNoTetto di classificazione (default: PUBLIC)
defaultGroupModestringNoGestione messaggi di gruppo: always, mentioned-only, owner-only (default: always)
groupsobjectNoOverride di configurazione per-gruppo
ownerPhonestringNoRiservato per uso futuro
pairingbooleanNoAbilita la modalità di accoppiamento durante la configurazione

Passaggio 5: Avvii Triggerfish

bash
triggerfish stop && triggerfish start

Invii un messaggio al Suo numero di telefono da un altro utente Signal per confermare la connessione.

Messaggi di Gruppo

Signal supporta le chat di gruppo. Può controllare come l'agente risponde ai messaggi di gruppo:

ModalitàComportamento
alwaysRisponde a tutti i messaggi di gruppo (default)
mentioned-onlyRisponde solo quando menzionato per numero di telefono o @menzione
owner-onlyNon risponde mai nei gruppi

Configuri globalmente o per-gruppo:

yaml
channels:
  signal:
    endpoint: "tcp://127.0.0.1:7583"
    account: "+14155552671"
    defaultGroupMode: mentioned-only
    groups:
      "your-group-id":
        mode: always
        classification: INTERNAL

Gli ID di gruppo sono identificatori codificati in base64. Utilizzi triggerfish signal list-groups o consulti la documentazione di signal-cli per trovarli.

Suddivisione Messaggi

Signal ha un limite di 4.000 caratteri per messaggio. Le risposte più lunghe vengono automaticamente divise in più messaggi, spezzando su newline o spazi per la leggibilità.

Indicatori di Digitazione

L'adattatore invia indicatori di digitazione mentre l'agente sta elaborando una richiesta. Lo stato di digitazione si cancella quando la risposta viene inviata.

Strumenti Estesi

L'adattatore Signal espone strumenti aggiuntivi:

  • sendTyping / stopTyping -- Controllo manuale dell'indicatore di digitazione
  • listGroups -- Elenca tutti i gruppi Signal di cui l'account è membro
  • listContacts -- Elenca tutti i contatti Signal

Cambiare la Classificazione

yaml
channels:
  signal:
    endpoint: "tcp://127.0.0.1:7583"
    account: "+14155552671"
    classification: INTERNAL

Livelli validi: PUBLIC, INTERNAL, CONFIDENTIAL, RESTRICTED.

Riavvii il daemon dopo la modifica: triggerfish stop && triggerfish start

Funzionalità di Affidabilità

L'adattatore Signal include diversi meccanismi di affidabilità:

Auto-Riconnessione

Se la connessione a signal-cli cade (interruzione di rete, riavvio del daemon), l'adattatore si riconnette automaticamente con backoff esponenziale. Nessun intervento manuale necessario.

Controllo di Salute

All'avvio, Triggerfish verifica se un daemon signal-cli esistente è sano usando un probe ping JSON-RPC. Se il daemon non risponde, viene terminato e riavviato automaticamente.

Tracciamento della Versione

Triggerfish traccia la versione nota e funzionante di signal-cli (attualmente 0.13.0) e avvisa all'avvio se la versione installata è più vecchia. La versione di signal-cli viene registrata ad ogni connessione riuscita.

Supporto Socket Unix

Oltre agli endpoint TCP, l'adattatore supporta socket di dominio Unix:

yaml
channels:
  signal:
    endpoint: "unix:///run/signal-cli/socket"
    account: "+14155552671"

Risoluzione dei Problemi

Daemon signal-cli non raggiungibile:

  • Verifichi che il daemon sia in esecuzione: controlli il processo o provi nc -z 127.0.0.1 7583
  • signal-cli si vincola solo a IPv4 — usi 127.0.0.1, non localhost
  • La porta TCP predefinita è 7583
  • Triggerfish riavvierà automaticamente il daemon se rileva un processo non sano

Messaggi non in arrivo:

  • Confermi che il dispositivo sia collegato: verifichi nell'app Signal mobile sotto Dispositivi collegati
  • signal-cli deve aver ricevuto almeno una sincronizzazione dopo il collegamento
  • Verifichi i log per errori di connessione: triggerfish logs --tail

Errori Java (solo build JVM):

  • Il build JVM di signal-cli richiede Java 21+
  • Esegua java -version per verificare
  • Triggerfish può scaricare un JRE portatile durante la configurazione se necessario

Cicli di riconnessione:

  • Se vede ripetuti tentativi di riconnessione nei log, il daemon signal-cli potrebbe andare in crash
  • Verifichi lo stderr proprio di signal-cli per errori
  • Provi a riavviare con un daemon fresco: fermi Triggerfish, termini signal-cli, riavvii entrambi