Skip to content

Signal

Conecten su agente de Triggerfish a Signal para que las personas puedan enviarle mensajes desde la app de Signal. El adaptador se comunica con un daemon de signal-cli mediante JSON-RPC, usando su número de teléfono vinculado de Signal.

Cómo Signal es Diferente

El adaptador de Signal es su número de teléfono. A diferencia de Telegram o Slack donde existe una cuenta de bot separada, los mensajes de Signal provienen de otras personas hacia su número. Esto significa:

  • Todos los mensajes entrantes tienen isOwner: false -- siempre son de otra persona
  • El adaptador responde como su número de teléfono
  • No hay verificación de propietario por mensaje como en otros canales

Esto hace que Signal sea ideal para recibir mensajes de contactos que escriben a su número, con el agente respondiendo en su nombre.

Clasificación Predeterminada

Signal tiene clasificación PUBLIC por defecto. Como todos los mensajes entrantes provienen de contactos externos, PUBLIC es el valor predeterminado seguro.

Configuración

Paso 1: Instalar signal-cli

signal-cli es un cliente de línea de comandos de terceros para Signal. Triggerfish se comunica con él a través de un socket TCP o Unix.

Linux (compilación nativa -- no necesita Java):

Descarguen la última compilación nativa desde la página de releases de signal-cli, o dejen que Triggerfish lo descargue durante la configuración.

macOS / otras plataformas (compilación JVM):

Requiere Java 21+. Triggerfish puede descargar un JRE portátil automáticamente si Java no está instalado.

También pueden ejecutar la configuración guiada:

bash
triggerfish config add-channel signal

Esto verifica signal-cli, ofrece descargarlo si falta y los guía a través de la vinculación.

Paso 2: Vincular su Dispositivo

signal-cli debe vincularse a su cuenta de Signal existente (como vincular una app de escritorio):

bash
signal-cli link -n "Triggerfish"

Esto imprime un URI tsdevice:. Escaneen el código QR con su app móvil de Signal (Configuración > Dispositivos Vinculados > Vincular Nuevo Dispositivo).

Paso 3: Iniciar el Daemon

signal-cli se ejecuta como un daemon en segundo plano al que Triggerfish se conecta:

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

Reemplacen +14155552671 con su número de teléfono en formato E.164.

Paso 4: Configurar Triggerfish

Agreguen Signal a su triggerfish.yaml:

yaml
channels:
  signal:
    endpoint: "tcp://127.0.0.1:7583"
    account: "+14155552671"
    classification: PUBLIC
OpciónTipoRequeridoDescripción
endpointstringDirección del daemon signal-cli (tcp://host:puerto o unix:///ruta/al/socket)
accountstringSu número de teléfono de Signal (formato E.164)
classificationstringNoTecho de clasificación (predeterminado: PUBLIC)
defaultGroupModestringNoManejo de mensajes grupales: always, mentioned-only, owner-only (predeterminado: always)
groupsobjectNoConfiguraciones por grupo
ownerPhonestringNoReservado para uso futuro
pairingbooleanNoHabilitar modo de emparejamiento durante la configuración

Paso 5: Iniciar Triggerfish

bash
triggerfish stop && triggerfish start

Envíen un mensaje a su número de teléfono desde otro usuario de Signal para confirmar la conexión.

Mensajes Grupales

Signal soporta chats grupales. Pueden controlar cómo el agente responde a mensajes grupales:

ModoComportamiento
alwaysResponder a todos los mensajes grupales (predeterminado)
mentioned-onlySolo responder cuando se menciona por número o @mención
owner-onlyNunca responder en grupos

Configuren globalmente o por grupo:

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

Los IDs de grupo son identificadores codificados en base64. Usen triggerfish signal list-groups o consulten la documentación de signal-cli para encontrarlos.

División de Mensajes

Signal tiene un límite de mensaje de 4,000 caracteres. Las respuestas más largas se dividen automáticamente en múltiples mensajes, separando por saltos de línea o espacios para facilitar la lectura.

Indicadores de Escritura

El adaptador envía indicadores de escritura mientras el agente está procesando una solicitud. El estado de escritura se borra cuando se envía la respuesta.

Herramientas Extendidas

El adaptador de Signal expone herramientas adicionales:

  • sendTyping / stopTyping -- Control manual de indicadores de escritura
  • listGroups -- Listar todos los grupos de Signal de los que la cuenta es miembro
  • listContacts -- Listar todos los contactos de Signal

Cambiar la Clasificación

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

Niveles válidos: PUBLIC, INTERNAL, CONFIDENTIAL, RESTRICTED.

Reinicien el daemon después de cambiar: triggerfish stop && triggerfish start

Características de Confiabilidad

El adaptador de Signal incluye varios mecanismos de confiabilidad:

Reconexión Automática

Si la conexión con signal-cli se cae (interrupción de red, reinicio del daemon), el adaptador se reconecta automáticamente con retroceso exponencial. No se necesita intervención manual.

Verificación de Salud

Al iniciar, Triggerfish verifica si un daemon signal-cli existente está saludable usando una prueba de ping JSON-RPC. Si el daemon no responde, se detiene y reinicia automáticamente.

Seguimiento de Versión

Triggerfish rastrea la versión conocida como buena de signal-cli (actualmente 0.13.0) y advierte al inicio si su versión instalada es más antigua. La versión de signal-cli se registra en cada conexión exitosa.

Soporte de Socket Unix

Además de endpoints TCP, el adaptador soporta sockets de dominio Unix:

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

Solución de Problemas

Daemon signal-cli no accesible:

  • Verifiquen que el daemon esté ejecutándose: busquen el proceso o intenten nc -z 127.0.0.1 7583
  • signal-cli se enlaza solo a IPv4 -- usen 127.0.0.1, no localhost
  • El puerto TCP predeterminado es 7583
  • Triggerfish reiniciará automáticamente el daemon si detecta un proceso no saludable

Los mensajes no llegan:

  • Confirmen que el dispositivo está vinculado: revisen la app móvil de Signal en Dispositivos Vinculados
  • signal-cli debe haber recibido al menos una sincronización después de vincular
  • Revisen los logs en busca de errores de conexión: triggerfish logs --tail

Errores de Java (solo compilación JVM):

  • La compilación JVM de signal-cli requiere Java 21+
  • Ejecuten java -version para verificar
  • Triggerfish puede descargar un JRE portátil durante la configuración si es necesario

Bucles de reconexión:

  • Si ven intentos de reconexión repetidos en los logs, el daemon signal-cli puede estar fallando
  • Revisen la salida stderr propia de signal-cli en busca de errores
  • Intenten reiniciar con un daemon limpio: detengan Triggerfish, detengan signal-cli, reinicien ambos