LINE
ZeroClaw es compatible con LINE a través de la Messaging API, recibiendo mensajes mediante un servidor webhook integrado y respondiendo a través de la Reply API (con la Push API como alternativa cuando el token de respuesta ha expirado).
Quién puede hablar con el agente
Los remitentes entrantes se filtran contra el conjunto de pares resuelto para el agente vinculado, obtenido de la configuración peer_groups a la que pertenece el agente. La coincidencia elimina el @ inicial y no distingue mayúsculas de minúsculas frente al identificador nativo de remitente del canal. Un conjunto vacío deniega a todos; un conjunto que contiene "*" acepta a cualquiera; en caso contrario, solo se aceptan los pares externos listados (y los agentes pares). Esto es independiente del emparejamiento de la puerta de enlace (gateway.require_pairing), que autentica clientes HTTP/WebSocket, no remitentes de canales de chat.
Un grupo de pares para line establece channel a line, lista los remitentes permitidos en external_peers (para line, el ID de usuario de LINE; ["*"] acepta a cualquiera), opcionalmente nombra agents pares para el despacho entre agentes, una lista de bloqueo ignore y un output_modality (mirror, voice o text). Consulte Peer Groups para la referencia de campos.
Dónde configurar esto:
Panel de control del gateway
Abra /config/peer_groups en el panel de control web.
zerocode
En el panel Config, en Peer groups.
LINE aplica dm_policy y group_policy como capas sobre el conjunto de pares, consulta Políticas de Acceso más abajo. Cuando una política está configurada como allowlist, el conjunto de pares es la lista de permitidos.
Requisitos previos
- Una cuenta de LINE Developers Console.
- Un punto de conexión HTTPS público accesible desde los servidores de LINE (o ngrok para el desarrollo local).
- ZeroClaw construido con soporte para canales LINE habilitado (la función
channel-lineen el cratezeroclaw-channels).
1. Crear un bot de LINE
- Inicia sesión en la Consola de LINE Developers.
- Crea un Proveedor (o utiliza uno existente).
- Crea un nuevo canal de API de Mensajería bajo ese Proveedor.
- Desde la configuración del canal, recopila dos valores:
- Channel Access Token: pestaña Messaging API → Issue (emitir) un token de larga duración.
- Channel Secret: pestaña de Configuración básica.
2. Configurar ZeroClaw
channel_access_token 🔑
Token de acceso de canal de larga duración (desde LINE Developers Console). Se usa tanto para la Reply API como para el respaldo de la Push API. Si está vacío, recurre a la variable de entorno LINE_CHANNEL_ACCESS_TOKEN.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/line y configura el campo channels.line.<alias>.channel_access_token.
zerocode
En el panel Config, configure el campo channels.line.<alias>.channel_access_token.
zeroclaw config
zeroclaw config set channels.line.<alias>.channel_access_token # entrada enmascarada, almacenada cifrada
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__line__<alias>__channel_access_token=
channel_secret 🔑
Secreto del canal (desde LINE Developers Console). Se utiliza para verificar el encabezado X-Line-Signature en los webhooks entrantes. Si está vacío, recurre a la variable de entorno LINE_CHANNEL_SECRET.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/line y configura el campo channels.line.<alias>.channel_secret.
zerocode
En el panel Config, establece el campo channels.line.<alias>.channel_secret.
zeroclaw config
zeroclaw config set channels.line.<alias>.channel_secret # entrada enmascarada, almacenada cifrada
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__line__<alias>__channel_secret=
dm_policy
Política de acceso a DM (chat 1:1). Predeterminado: pairing. - open: responder a todos - pairing: requiere un handshake único /bind <code> en el primer contacto - allowlist: responder solo a los IDs de usuario listados en allowed_users
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/line y configura el campo channels.line.<alias>.dm_policy.
zerocode
En el panel Config, establece el campo channels.line.<alias>.dm_policy.
zeroclaw config
zeroclaw config set channels.line.<alias>.dm_policy <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__line__<alias>__dm_policy=
excluded_tools
Herramientas excluidas de la especificación de herramientas de este canal. Cuando se establece, estas herramientas no se exponen al modelo al responder a través de este canal.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/line y configura el campo channels.line.<alias>.excluded_tools.
zerocode
En el panel Config, establece el campo channels.line.<alias>.excluded_tools.
zeroclaw config
zeroclaw config set channels.line.<alias>.excluded_tools <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__line__<alias>__excluded_tools=
group_policy
Política de chats grupales / con varias personas. Predeterminado: mention. - open: responder a todos los mensajes - mention: responder solo cuando se @mencione - disabled: ignorar todos los mensajes grupales
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/line y configura el campo channels.line.<alias>.group_policy.
zerocode
En el panel Config, configure el campo channels.line.<alias>.group_policy.
zeroclaw config
zeroclaw config set channels.line.<alias>.group_policy <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__line__<alias>__group_policy=
proxy_url
URL de proxy por canal (http, https, socks5, socks5h). Anula la configuración global [proxy] solo para este canal.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/line y configura el campo channels.line.<alias>.proxy_url.
zerocode
En el panel Config, establece el campo channels.line.<alias>.proxy_url.
zeroclaw config
zeroclaw config set channels.line.<alias>.proxy_url <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__line__<alias>__proxy_url=
sender_name
Nombre para mostrar que se muestra como remitente en los globos de chat de LINE. El valor predeterminado es "AI" cuando no está configurado o está vacío.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abra /config/channels/line y establezca el campo channels.line.<alias>.sender_name.
zerocode
En el panel Config, establezca el campo channels.line.<alias>.sender_name.
zeroclaw config
zeroclaw config set channels.line.<alias>.sender_name <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__line__<alias>__sender_name=
webhook_port
Puerto TCP en el que escucha el servidor de webhooks integrado. Predeterminado: 8443.
Colócalo sobre cualquier superficie:
Panel de control del gateway
Abre /config/channels/line y configura el campo channels.line.<alias>.webhook_port.
zerocode
En el panel Config, establece el campo channels.line.<alias>.webhook_port.
zeroclaw config
zeroclaw config set channels.line.<alias>.webhook_port <value>
Variable de entorno
Exporte la anulación (shells POSIX; colóquelo en ~/.bashrc, ~/.zshrc, .env o un Dockerfile). Reemplace <alias> con el alias literal:
export ZEROCLAW_channels__line__<alias>__webhook_port=
Configura el canal de LINE en [channels.line.<alias>] con al menos channel_access_token y channel_secret. La semántica de cara al usuario de dm_policy / group_policy se describe en la §6 a continuación.
Usando variables de entorno en lugar de un archivo de configuración
Si prefieres no almacenar las credenciales en el archivo de configuración, omite los campos del token y expórtalos como variables de entorno:
sh
export LINE_CHANNEL_ACCESS_TOKEN="tu-token-de-acceso-al-canal"
export LINE_CHANNEL_SECRET="tu-secreto-de-canal"
Las variables de entorno tienen prioridad sobre los campos vacíos de la configuración.
3. Exponer el extremo del webhook
LINE envía mensajes publicando en tu URL de webhook. El servidor integrado escucha en el webhook_port configurado.
Para el desarrollo local (ngrok):
sh
ngrok http 8443
Copia la URL https:// que proporciona ngrok (por ejemplo, https://abc123.ngrok.io).
Para producción: expone el puerto 8443 (o el puerto que hayas configurado) detrás de un proxy inverso HTTPS (nginx, Caddy, etc.) o despliega directamente en un servidor con un certificado TLS.
4. Registra el Webhook en la consola de LINE Developers
- Ve a tu canal → pestaña API de Mensajería → Configuración de Webhook.
- Establece la URL del webhook en
https://your-domain.com/line/webhook. - Activa Usar webhook.
- Haz clic en Verify, LINE enviará una solicitud de prueba. ZeroClaw debe estar en ejecución para que la verificación tenga éxito.
5. Iniciar ZeroClaw
sh
zeroclaw daemon
Señal de registro de inicio:
LINE: el servidor webhook está escuchando en http://0.0.0.0:8443/line/webhook
6. Políticas de acceso
Mensaje directo (chat 1:1): dm_policy
| Valor | Comportamiento |
|---|---|
pairing (predeterminado) | El bot ignora todos los DM hasta que el usuario envía /bind <code>. Se muestra un código de emparejamiento en el registro de ZeroClaw al inicio. |
open | El bot responde a cada mensaje directo de inmediato. |
allowlist | El bot responde únicamente a los IDs de usuario de LINE que estén en el conjunto de pares del agente (consulta Quién puede hablar con el agente). |
Flujo de trabajo de emparejamiento:
- ZeroClaw imprime un código de emparejamiento en el registro al inicio.
- El usuario abre un DM de LINE con el bot y envía
/bind <code>. - ZeroClaw confirma el emparejamiento; los DMs posteriores son aceptados.
Chat grupal / de varias personas: group_policy
| Valor | Comportamiento |
|---|---|
mención (predeterminado) | El bot responde únicamente cuando se le menciona explícitamente con @. |
open | El bot responde a cada mensaje en el grupo. |
disabled | El bot ignora por completo todos los mensajes del grupo. |
7. Transcripción de mensajes de audio/voz (opcional)
Cuando la transcripción está habilitada (a través de la configuración global [transcription], consulte Config reference), los eventos de mensajes audio de LINE se descargan automáticamente desde la LINE Content API y se transcriben antes de pasarse al modelo.
El tamaño máximo aceptado para el audio es de 25 MB. Los archivos más grandes se omiten silenciosamente con una advertencia en el registro.
8. Solución de problemas
| Síntoma | Causa probable | Acción |
|---|---|---|
| La verificación de LINE falla | ZeroClaw no se está ejecutando o el puerto no es accesible | Confirma que el proceso está activo y que el puerto es accesible desde Internet. |
| El bot no responde a mensajes directos | dm_policy = pairing y el usuario no ha ejecutado /bind | El usuario debe enviar /bind <code> primero, o cambiar a dm_policy = open |
| El bot no responde en los grupos | group_policy = mention y el mensaje no tiene @mención | @menciona al bot, o cambia a group_policy = open |
| La respuesta llega como un mensaje push | El token de respuesta ha expirado (ventana de ~30 s) | Comportamiento de respaldo esperado, no se requiere ninguna acción |
| Mensajes de audio ignorados | [transcription] no configurado | Agrega un bloque [transcription] con enabled = true |
Palabras clave de registro
| Condición | Mensaje de registro |
|---|---|
| Inicio saludable | LINE: servidor webhook escuchando en http://0.0.0.0:<port>/line/webhook |
| Firma rechazada | LINE: firma X-Line-Signature no válida |
| DM no autorizado | LINE: DM de <userId> rechazada por la política |
| Emparejamiento requerido | LINE: usuario sin emparejar <userId>; ignorando hasta /bind |
| Audio ignorado (sin transcripción) | LINE: mensaje de audio ignorado (transcripción no configurada) |
| La transcripción de audio falló. | LINE: la transcripción falló para <messageId>: |
Ver también
- Referencia de configuración: índice completo de campos de configuración
- Documentación de los desarrolladores de LINE