LINE (plugin)
O LINE conecta ao OpenClaw via LINE Messaging API. O plugin roda como um receptor de webhook no gateway e usa seu channel access token + channel secret para autenticação.
Status: suportado via plugin. Mensagens diretas, chats em grupo, mídia, localizações, mensagens Flex, mensagens de template e respostas rápidas são suportadas. Reações e threads não são suportadas.
Plugin necessário
Instale o plugin LINE:
openclaw plugins install @openclaw/line
Checkout local (quando rodando a partir de um repositório git):
openclaw plugins install ./extensions/line
Configuração
- Crie uma conta LINE Developers e abra o Console: https://developers.line.biz/console/
- Crie (ou escolha) um Provider e adicione um canal Messaging API.
- Copie o Channel access token e o Channel secret das configurações do canal.
- Habilite Use webhook nas configurações da Messaging API.
- Defina a URL do webhook para o endpoint do seu gateway (HTTPS obrigatório):
https://gateway-host/line/webhook
O gateway responde à verificação de webhook do LINE (GET) e eventos de entrada (POST).
Se precisar de um caminho personalizado, defina channels.line.webhookPath ou
channels.line.accounts.<id>.webhookPath e atualize a URL correspondente.
Nota de segurança:
- A verificação de assinatura do LINE depende do corpo da requisição (HMAC sobre o corpo bruto), então o OpenClaw aplica limites estritos de pré-autenticação no corpo e timeout antes da verificação.
Configurar
Configuração mínima:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}
Variáveis de ambiente (apenas conta padrão):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Arquivos de token/secret:
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}
tokenFile e secretFile devem apontar para arquivos regulares. Symlinks são rejeitados.
Múltiplas contas:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}
Controle de acesso
Mensagens diretas usam pareamento por padrão. Remetentes desconhecidos recebem um código de pareamento e suas mensagens são ignoradas até a aprovação.
openclaw pairing list line
openclaw pairing approve line <CODE>
Allowlists e políticas:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: IDs de usuário LINE permitidos para DMschannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: IDs de usuário LINE permitidos para grupos- Sobrescritas por grupo:
channels.line.groups.<groupId>.allowFrom - Nota de runtime: se
channels.lineestá completamente ausente, o runtime faz fallback paragroupPolicy="allowlist"para verificações de grupo (mesmo sechannels.defaults.groupPolicyestiver definido).
IDs do LINE são case-sensitive. IDs válidos se parecem com:
- Usuário:
U+ 32 caracteres hex - Grupo:
C+ 32 caracteres hex - Sala:
R+ 32 caracteres hex
Comportamento de mensagens
- Texto é dividido em 5000 caracteres.
- Formatação Markdown é removida; blocos de código e tabelas são convertidos em cards Flex quando possível.
- Respostas em streaming são armazenadas em buffer; o LINE recebe chunks completos com uma animação de carregamento enquanto o agente trabalha.
- Downloads de mídia são limitados por
channels.line.mediaMaxMb(padrão 10).
Dados do canal (mensagens ricas)
Use channelData.line para enviar respostas rápidas, localizações, cards Flex ou mensagens
de template.
{
text: "Aqui está",
channelData: {
line: {
quickReplies: ["Status", "Ajuda"],
location: {
title: "Escritório",
address: "Rua Principal, 123",
latitude: 35.681236,
longitude: 139.767125,
},
flexMessage: {
altText: "Card de status",
contents: {
/* Payload Flex */
},
},
templateMessage: {
type: "confirm",
text: "Prosseguir?",
confirmLabel: "Sim",
confirmData: "yes",
cancelLabel: "Não",
cancelData: "no",
},
},
},
}
O plugin LINE também inclui um comando /card para presets de mensagem Flex:
/card info "Bem-vindo" "Obrigado por entrar!"
Resolução de problemas
- Verificação de webhook falha: confirme que a URL do webhook é HTTPS e que o
channelSecretcorresponde ao console do LINE. - Sem eventos de entrada: confirme que o caminho do webhook corresponde a
channels.line.webhookPathe que o gateway está acessível pelo LINE. - Erros de download de mídia: aumente
channels.line.mediaMaxMbse a mídia exceder o limite padrão.