Regional platforms
LINE
LINE se conecta a OpenClaw mediante la API de mensajería de LINE. El plugin se ejecuta como receptor de webhooks en el Gateway y utiliza el token de acceso al 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
Instale 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
- Cree una cuenta de LINE Developers y abra la consola: https://developers.line.biz/console/
- Cree (o elija) un proveedor y añada un canal de Messaging API.
- Copie Channel access token y Channel secret desde la configuración del canal.
- Habilite Use webhook en la configuración de Messaging API.
- Establezca la URL del webhook en el endpoint del Gateway (se requiere HTTPS):
https://gateway-host/line/webhookEl Gateway responde a la verificación del webhook de LINE (GET). Para los eventos entrantes firmados
(POST), escribe cada evento en la cola de entrada duradera antes de devolver 200;
el procesamiento del agente continúa de forma asíncrona. Los intentos de entrega fallidos se reintentan desde la
cola, incluso después de reiniciar el Gateway, y los eventos irrecuperables se convierten en registros fallidos de la cola
tras un número limitado de reintentos. Si falla la persistencia duradera, la solicitud devuelve
500 en lugar de confirmar un evento que podría perderse.
La entrega se realiza al menos una vez en el límite entre la cola y el agente: un apagado o
fallo del Gateway durante una entrega activa puede volver a procesar el turno. Los eventos de mensajes se desduplican mediante
el ID de mensaje de LINE; otros tipos de eventos usan webhookEventId. Los registros de finalización conservados
suprimen los webhooks duplicados habituales, pero los controladores que producen efectos secundarios externos
deben seguir siendo idempotentes.
Si se necesita una ruta personalizada, establezca channels.line.webhookPath o
channels.line.accounts.<id>.webhookPath y actualice la URL como 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 del cuerpo previo a la autenticación (64 KB) y un tiempo de espera de lectura antes de la verificación.
- OpenClaw procesa los eventos de webhook a partir de los bytes verificados de la solicitud sin procesar. Los valores
req.bodytransformados por middleware ascendente 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 la última alternativa para la cuenta predeterminada.
Varias cuentas:
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}Control de acceso
Los mensajes directos utilizan el emparejamiento de forma predeterminada. Los remitentes desconocidos reciben un código de emparejamiento y sus mensajes se ignoran hasta que se aprueban:
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: ID de usuario de LINE incluidos en la lista de permitidos para mensajes directos;dmPolicy: "open"requiere["*"]channels.line.groupPolicy:allowlist | open | disabled(valor predeterminado:allowlist)channels.line.groupAllowFrom: ID de usuario de LINE incluidos en la lista de permitidos para grupos; las entradasallowFromde mensajes directos no admiten remitentes de grupos- Anulaciones por grupo:
channels.line.groups.<groupId>.allowFrom(además deenabled,requireMention,systemPrompt,skills). CongroupPolicy: "allowlist", establezcagroupAllowFromo el valor por grupoallowFrom; una lista de permitidos de grupo vacía bloquea los mensajes grupales aunque los mensajes directos estén abiertos. - Se puede hacer referencia a grupos estáticos de acceso de remitentes desde
allowFrom,groupAllowFromy el valor por grupoallowFrommedianteaccessGroup:<name>; consulte Grupos de acceso. - Nota de ejecución: si falta por completo
channels.line, durante la ejecución se utilizagroupPolicy="allowlist"como alternativa para las comprobaciones de grupo (aunque se haya establecidochannels.defaults.groupPolicy).
Los ID de LINE distinguen entre mayúsculas y minúsculas. Los ID 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 pasarse al agente, de acuerdo con el almacén multimedia compartido que usan otros plugins de canal.
Datos del canal (mensajes enriquecidos)
Use channelData.line para enviar respuestas rápidas, ubicaciones, tarjetas Flex o mensajes
de plantilla.
{ text: "Aquí está", channelData: { line: { quickReplies: ["Estado", "Ayuda"], location: { title: "Oficina", address: "123 Main St", latitude: 35.681236, longitude: 139.767125, }, flexMessage: { altText: "Tarjeta de estado", contents: {/* Carga útil de Flex */}, }, templateMessage: { type: "confirm", text: "¿Continuar?", confirmLabel: "Sí", confirmData: "yes", cancelLabel: "No", cancelData: "no", }, }, },}El plugin de LINE también incluye un comando /card para valores preestablecidos de mensajes Flex:
/card info "Bienvenido" "¡Gracias por unirse!"Compatibilidad con ACP
LINE admite vinculaciones de conversaciones de ACP (Protocolo de comunicación entre agentes):
/acp spawn <agent> --bind herevincula el chat de LINE actual 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 como en otros canales de conversación.
Consulte 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 utiliza de forma predeterminada la URL del contenido multimedia.
- Vídeos: requieren una imagen de vista previa; establezca
channelData.line.previewImageUrlen una URL de 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 toma de channelData.line.mediaKind cuando está establecido; de lo contrario, se infiere
a partir de las demás opciones de LINE o del sufijo de archivo de la URL, y se utiliza imagen como alternativa.
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 bucle invertido, de enlace local y de 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
- Falla la verificación del webhook: asegúrese de que la URL del webhook use HTTPS y de que
channelSecretcoincida con la consola de LINE. - No hay eventos entrantes: confirme que la ruta del webhook coincida con
channels.line.webhookPathy que LINE pueda acceder al Gateway. - Errores de descarga de contenido multimedia: aumente
channels.line.mediaMaxMbsi el contenido multimedia supera el límite predeterminado.
Contenido relacionado
- Descripción general de los canales — todos los canales admitidos
- Emparejamiento — autenticación de mensajes directos y flujo de emparejamiento
- Grupos — comportamiento de los chats grupales y control mediante menciones
- Enrutamiento de canales — enrutamiento de sesiones para mensajes
- Seguridad — modelo de acceso y refuerzo