Ir al contenido

Cómo conectar OpenClaw con LINE

¿Alguna vez has intentado conectar un bot a LINE y te has perdido entre la gestión de webhooks y la validación de firmas? Configurar integraciones de mensajería suele ser frustrante cuando la documentación es confusa o el proceso de autenticación falla sin dar pistas claras.

Conectar OpenClaw a LINE es bastante directo si sigues los pasos adecuados. En esta guía te muestro cómo configurar el plugin para que tu Gateway gestione mensajes, contenido multimedia y mensajes enriquecidos sin complicaciones.

LINE se conecta a OpenClaw a través de la LINE Messaging API. El plugin funciona como un receptor de webhook en el Gateway y utiliza tu channel access token + channel secret para la autenticación.

Estado: soportado mediante plugin. Se admiten mensajes directos, chats grupales, multimedia, ubicaciones, Flex messages, mensajes de plantilla y respuestas rápidas. Las reacciones y los hilos no están soportados.

Instala el plugin de LINE:

Ventana de terminal
openclaw plugins install @openclaw/line

Local checkout (cuando se ejecuta desde un repositorio git):

Ventana de terminal
openclaw plugins install ./path/to/local/line-plugin
  1. Crea una cuenta de LINE Developers y abre la Console: https://developers.line.biz/console/
  2. Crea (o elige) un Provider y añade un canal de Messaging API.
  3. Copia el Channel access token y el Channel secret desde la configuración del canal.
  4. Activa Use webhook en la configuración de la Messaging API.
  5. Establece la URL del webhook hacia el endpoint de tu Gateway (requiere HTTPS):
https://gateway-host/line/webhook

El Gateway responde a la verificación del webhook de LINE (GET) y a los eventos entrantes (POST). Si necesitas una ruta personalizada, configura channels.line.webhookPath o channels.line.accounts.<id>.webhookPath y actualiza la URL según corresponda.

Nota de seguridad:

  • La verificación de la firma de LINE depende del cuerpo (HMAC sobre el cuerpo raw), por lo que OpenClaw aplica límites estrictos al cuerpo antes de la autenticación y tiempos de espera antes de la verificación.
  • OpenClaw procesa los eventos del webhook a partir de los bytes raw de la solicitud verificada. Los valores de req.body transformados por middleware upstream se ignoran para garantizar la integridad de la firma.

Configuración mínima:

{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}

Variables de entorno (solo para la cuenta por defecto):

  • LINE_CHANNEL_ACCESS_TOKEN
  • LINE_CHANNEL_SECRET

Archivos de token/secret:

{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}

tokenFile y secretFile deben apuntar a archivos regulares. Los enlaces simbólicos (symlinks) son rechazados.

Múltiples cuentas:

{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}

Los mensajes directos usan pairing por defecto. Los remitentes desconocidos reciben un código de emparejamiento y sus mensajes se ignoran hasta que sean aprobados.

Ventana de terminal
openclaw pairing list line
openclaw pairing approve line <CODE>

Listas de permitidos y políticas:

  • channels.line.dmPolicy: pairing | allowlist | open | disabled
  • channels.line.allowFrom: IDs de usuario de LINE en lista de permitidos para DMs
  • channels.line.groupPolicy: allowlist | open | disabled
  • channels.line.groupAllowFrom: IDs de usuario de LINE en lista de permitidos para grupos
  • Sobrescritura por grupo: channels.line.groups.<groupId>.allowFrom
  • Nota de ejecución: si channels.line no existe, el sistema usa por defecto groupPolicy="allowlist" para las comprobaciones de grupo (incluso si channels.defaults.groupPolicy está configurado).

Los IDs de LINE distinguen entre mayúsculas y minúsculas. Los IDs válidos tienen este aspecto:

  • Usuario: U + 32 caracteres hexadecimales
  • Grupo: C + 32 caracteres hexadecimales
  • Sala: R + 32 caracteres hexadecimales
  • El texto se divide en fragmentos de 5000 caracteres.
  • El formato Markdown se elimina; los bloques de código y las tablas se convierten en Flex cards cuando es posible.
  • Las respuestas en streaming se almacenan en búfer; LINE recibe fragmentos completos con una animación de carga mientras el agente trabaja.
  • Las descargas de multimedia están limitadas por channels.line.mediaMaxMb (por defecto 10).

Usa channelData.line para enviar respuestas rápidas, ubicaciones, Flex cards o mensajes de plantilla.

{
text: "Here you go",
channelData: {
line: {
quickReplies: ["Status", "Help"],
location: {
title: "Office",
address: "123 Main St",
latitude: 35.681236,
longitude: 139.767125,
},
flexMessage: {
altText: "Status card",
contents: {
/* Flex payload */
},
},
templateMessage: {
type: "confirm",
text: "Proceed?",
confirmLabel: "Yes",
confirmData: "yes",
cancelLabel: "No",
cancelData: "no",
},
},
},
}

El plugin de LINE también incluye un comando /card para presets de Flex messages:

/card info "Welcome" "Thanks for joining!"

LINE soporta vinculaciones de conversación ACP (Agent Communication Protocol):

  • /acp spawn <agent> --bind here vincula el chat actual de LINE a una sesión ACP sin crear un hilo hijo.
  • Las vinculaciones ACP configuradas y las sesiones ACP activas vinculadas a la conversación funcionan en LINE igual que en otros canales de conversación.

Consulta ACP agents para más detalles.

El plugin de LINE permite enviar imágenes, vídeos y archivos de audio a través de la herramienta de mensajes del agente. El contenido multimedia se envía mediante la ruta de entrega específica de LINE con el manejo adecuado de previsualización y seguimiento:

  • Imágenes: se envían como mensajes de imagen de LINE con generación automática de previsualización.
  • Vídeos: se envían con manejo explícito de previsualización y content-type.
  • Audio: se envían como mensajes de audio de LINE.

Los envíos de multimedia genéricos recurren a la ruta existente de solo imagen cuando no hay una ruta específica de LINE disponible.

  • La verificación del webhook falla: asegúrate de que la URL del webhook sea HTTPS y que el channelSecret coincida con el de la consola de LINE.
  • No hay eventos entrantes: confirma que la ruta del webhook coincide con channels.line.webhookPath y que el Gateway es accesible desde LINE.
  • Errores en la descarga de multimedia: aumenta el valor de channels.line.mediaMaxMb si el contenido multimedia supera el límite por defecto.
  • Channels Overview — todos los canales soportados
  • Pairing — flujo de autenticación y emparejamiento de DM
  • Groups — comportamiento de chats grupales y filtrado de menciones
  • Channel Routing — enrutamiento de sesiones para mensajes
  • Security — modelo de acceso y endurecimiento de seguridad
  • Configura tus ACP agents para interactuar en LINE.
  • Revisa la sección de Pairing para gestionar quién puede hablar con tu bot.

AI Setup Assistant

OpenClaw

OpenClaw Expert

Sigues atascado?

Si esta pagina no resolvio tu caso, pregunta a OpenClaw Expert para pasos concretos.