Regional platforms
LINE
LINE se conecta a OpenClaw mediante la API de mensajería de LINE. El plugin funciona como receptor de Webhooks en el Gateway y utiliza el token de acceso del canal y el secreto del canal para la autenticación.
Estado: plugin oficial, instalado por separado. Se admiten mensajes directos, chats grupales, contenido multimedia, ubicaciones, mensajes Flex, mensajes de plantilla y respuestas rápidas. No se admiten reacciones ni hilos.
Instalación
Instala LINE antes de configurar el canal:
openclaw plugins install @openclaw/lineCopia de trabajo local (cuando se ejecuta desde un repositorio git):
openclaw plugins install ./path/to/local/line-pluginConfiguración inicial
- Crea una cuenta de LINE Developers y abre la consola: https://developers.line.biz/console/
- Crea (o elige) un proveedor y añade un canal de Messaging API.
- Copia Channel access token y Channel secret desde la configuración del canal.
- Activa Use webhook en la configuración de Messaging API.
- Establece la URL del Webhook en el endpoint de tu Gateway (se requiere HTTPS):
https://gateway-host/line/webhookEl Gateway responde a la verificación del Webhook de LINE (GET) y confirma los eventos entrantes firmados (POST) inmediatamente después de validar la firma y la carga útil; el procesamiento del agente continúa de forma asíncrona.
Si necesitas una ruta personalizada, establece channels.line.webhookPath o
channels.line.accounts.<id>.webhookPath y actualiza la URL según corresponda.
Notas de seguridad:
- La verificación de firmas de LINE depende del cuerpo (HMAC sobre el cuerpo sin procesar), por lo que OpenClaw aplica un límite estricto al cuerpo antes de la autenticación (64 KB) y un tiempo de espera de lectura antes de verificarlo.
- OpenClaw procesa los eventos de Webhook a partir de los bytes verificados de la solicitud sin procesar. Los valores de
req.bodytransformados por middleware anterior se ignoran para proteger la integridad de la firma.
Configuración
Configuración mínima:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "pairing", }, },}Configuración de mensajes directos públicos:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "open", allowFrom: ["*"], }, },}Variables de entorno (solo para la cuenta predeterminada):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Archivos de token y secreto:
{ channels: { line: { tokenFile: "/path/to/line-token.txt", secretFile: "/path/to/line-secret.txt", }, },}tokenFile y secretFile deben apuntar a archivos normales. Se rechazan los enlaces simbólicos.
Los valores de configuración en línea tienen prioridad sobre los archivos; las variables de entorno son el último recurso para la cuenta predeterminada.
Varias cuentas:
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}Control de acceso
De forma predeterminada, los mensajes directos requieren emparejamiento. Los remitentes desconocidos reciben un código de emparejamiento y sus mensajes se ignoran hasta que sean aprobados:
openclaw pairing list lineopenclaw pairing approve line <CODE>Listas de permitidos y políticas:
channels.line.dmPolicy:pairing | allowlist | open | disabled(valor predeterminado:pairing)channels.line.allowFrom: identificadores de usuario de LINE permitidos para mensajes directos;dmPolicy: "open"requiere["*"]channels.line.groupPolicy:allowlist | open | disabled(valor predeterminado:allowlist)channels.line.groupAllowFrom: identificadores de usuario de LINE permitidos para grupos- Sustituciones por grupo:
channels.line.groups.<groupId>.allowFrom(además deenabled,requireMention,systemPrompt,skills) - Los grupos estáticos de acceso de remitentes pueden referenciarse desde
allowFrom,groupAllowFromy el valorallowFromde cada grupo medianteaccessGroup:<name>; consulta Grupos de acceso. - Nota sobre el entorno de ejecución: si falta por completo
channels.line, el entorno de ejecución usagroupPolicy="allowlist"como alternativa para las comprobaciones de grupos (incluso si se ha establecidochannels.defaults.groupPolicy).
Los identificadores de LINE distinguen entre mayúsculas y minúsculas. Los identificadores válidos tienen este aspecto:
- Usuario:
U+ 32 caracteres hexadecimales - Grupo:
C+ 32 caracteres hexadecimales - Sala:
R+ 32 caracteres hexadecimales
Comportamiento de los mensajes
- El texto se divide en fragmentos de 5000 caracteres.
- Se elimina el formato Markdown; los bloques de código y las tablas se convierten en tarjetas Flex 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 contenido multimedia están limitadas por
channels.line.mediaMaxMb(valor predeterminado: 10). - El contenido multimedia entrante se guarda en
~/.openclaw/media/inbound/antes de pasarlo al agente, de acuerdo con el almacenamiento multimedia compartido que utilizan otros plugins de canales.
Datos del canal (mensajes enriquecidos)
Usa channelData.line para enviar respuestas rápidas, ubicaciones, tarjetas Flex 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 ajustes preestablecidos de mensajes Flex:
/card info "Welcome" "Thanks for joining!"Compatibilidad con ACP
LINE admite vinculaciones de conversaciones de ACP (Protocolo de comunicación entre agentes):
/acp spawn <agent> --bind herevincula el chat actual de LINE a una sesión de ACP sin crear un hilo secundario.- Las vinculaciones de ACP configuradas y las sesiones de ACP activas vinculadas a conversaciones funcionan en LINE igual que en otros canales de conversación.
Consulta Agentes de ACP para obtener más información.
Contenido multimedia saliente
El plugin de LINE envía imágenes, vídeos y audio mediante la herramienta de mensajes del agente:
- Imágenes: se envían como mensajes de imagen de LINE; la imagen de vista previa usa de forma predeterminada la URL del contenido multimedia.
- Vídeos: requieren una imagen de vista previa; establece
channelData.line.previewImageUrlen la URL de una imagen. - Audio: se envía como mensajes de audio de LINE; la duración predeterminada es de 60 segundos, salvo que se establezca
channelData.line.durationMs.
El tipo de contenido multimedia se obtiene de channelData.line.mediaKind cuando está establecido; de lo contrario, se deduce de las demás opciones de LINE o del sufijo de archivo de la URL, y se utiliza imagen como alternativa predeterminada.
Las URL de contenido multimedia saliente deben ser URL HTTPS públicas de un máximo de 2000 caracteres. OpenClaw valida el nombre de host de destino antes de proporcionar la URL a LINE y rechaza destinos de local loopback, vínculo local y redes privadas.
Los envíos genéricos de contenido multimedia sin opciones específicas de LINE utilizan la ruta de imágenes.
Solución de problemas
- La verificación del Webhook falla: asegúrate de que la URL del Webhook use HTTPS y de que
channelSecretcoincida con el de la consola de LINE. - No hay eventos entrantes: confirma que la ruta del Webhook coincida con
channels.line.webhookPathy que LINE pueda acceder al Gateway. - Errores al descargar contenido multimedia: aumenta
channels.line.mediaMaxMbsi el contenido multimedia supera el límite predeterminado.
Temas relacionados
- Descripción general de los canales — todos los canales compatibles
- Emparejamiento — autenticación de mensajes directos y flujo de emparejamiento
- Grupos — comportamiento de los chats grupales y control por menciones
- Enrutamiento de canales — enrutamiento de sesiones para mensajes
- Seguridad — modelo de acceso y refuerzo de seguridad