Regional platforms
LINE
O LINE se conecta ao OpenClaw por meio da LINE Messaging API. O Plugin funciona como um receptor de Webhook no Gateway e usa o token de acesso do canal + o segredo do canal para autenticação.
Status: Plugin oficial, instalado separadamente. Há suporte a mensagens diretas, conversas em grupo, mídia, localizações, mensagens Flex, mensagens de modelo e respostas rápidas. Não há suporte a reações nem threads.
Instalação
Instale o LINE antes de configurar o canal:
openclaw plugins install @openclaw/lineCheckout local (ao executar a partir de um repositório git):
openclaw plugins install ./path/to/local/line-pluginConfiguração inicial
- Crie uma conta do LINE Developers e abra o Console: https://developers.line.biz/console/
- Crie (ou selecione) um Provider e adicione um canal da Messaging API.
- Copie o Channel access token e o Channel secret nas configurações do canal.
- Ative Use webhook nas configurações da Messaging API.
- Defina a URL do Webhook como o endpoint do seu Gateway (HTTPS obrigatório):
https://gateway-host/line/webhookO Gateway responde à verificação de Webhook do LINE (GET) e confirma os eventos de entrada assinados (POST) imediatamente após a validação da assinatura e do conteúdo; o processamento pelo agente continua de forma assíncrona.
Se precisar de um caminho personalizado, defina channels.line.webhookPath ou channels.line.accounts.<id>.webhookPath e atualize a URL de acordo.
Observações de segurança:
- A verificação da assinatura do LINE depende do corpo (HMAC sobre o corpo bruto), portanto o OpenClaw aplica um limite estrito de corpo antes da autenticação (64 KB) e um tempo limite de leitura antes da verificação.
- O OpenClaw processa os eventos de Webhook a partir dos bytes brutos verificados da solicitação. Valores de
req.bodytransformados por middleware anterior são ignorados para preservar a integridade da assinatura.
Configuração
Configuração mínima:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "pairing", }, },}Configuração pública de mensagens diretas:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "open", allowFrom: ["*"], }, },}Variáveis de ambiente (somente para a conta padrão):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Arquivos de token/segredo:
{ channels: { line: { tokenFile: "/path/to/line-token.txt", secretFile: "/path/to/line-secret.txt", }, },}tokenFile e secretFile devem apontar para arquivos comuns. Links simbólicos são rejeitados.
Os valores de configuração embutidos têm prioridade sobre os arquivos; as variáveis de ambiente são o último recurso para a conta padrão.
Várias contas:
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}Controle de acesso
Por padrão, as mensagens diretas exigem pareamento. Remetentes desconhecidos recebem um código de pareamento, e suas mensagens são ignoradas até a aprovação:
openclaw pairing list lineopenclaw pairing approve line <CODE>Listas de permissões e políticas:
channels.line.dmPolicy:pairing | allowlist | open | disabled(padrão:pairing)channels.line.allowFrom: IDs de usuários do LINE permitidos para mensagens diretas;dmPolicy: "open"exige["*"]channels.line.groupPolicy:allowlist | open | disabled(padrão:allowlist)channels.line.groupAllowFrom: IDs de usuários do LINE permitidos para grupos- Substituições por grupo:
channels.line.groups.<groupId>.allowFrom(além deenabled,requireMention,systemPrompt,skills) - Grupos estáticos de acesso de remetentes podem ser referenciados em
allowFrom,groupAllowFrome noallowFromde cada grupo comaccessGroup:<name>; consulte Grupos de acesso. - Observação de execução: se
channels.lineestiver completamente ausente, a execução usagroupPolicy="allowlist"como alternativa nas verificações de grupo (mesmo quechannels.defaults.groupPolicyesteja definido).
Os IDs do LINE diferenciam maiúsculas de minúsculas. IDs válidos têm esta aparência:
- Usuário:
U+ 32 caracteres hexadecimais - Grupo:
C+ 32 caracteres hexadecimais - Sala:
R+ 32 caracteres hexadecimais
Comportamento das mensagens
- O texto é dividido em blocos de 5.000 caracteres.
- A formatação Markdown é removida; blocos de código e tabelas são convertidos em cartões Flex quando possível.
- Respostas transmitidas por streaming são armazenadas em buffer; o LINE recebe blocos completos com uma animação de carregamento enquanto o agente trabalha.
- Os downloads de mídia são limitados por
channels.line.mediaMaxMb(padrão: 10). - A mídia recebida é salva em
~/.openclaw/media/inbound/antes de ser encaminhada ao agente, seguindo o armazenamento compartilhado de mídia usado por outros Plugins de canal.
Dados do canal (mensagens avançadas)
Use channelData.line para enviar respostas rápidas, localizações, cartões Flex ou mensagens de modelo.
{ 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", }, }, },}O Plugin do LINE também inclui um comando /card para predefinições de mensagens Flex:
/card info "Welcome" "Thanks for joining!"Suporte a ACP
O LINE oferece suporte a associações de conversa do ACP (Protocolo de Comunicação entre Agentes):
/acp spawn <agent> --bind hereassocia a conversa atual do LINE a uma sessão ACP sem criar uma thread filha.- Associações ACP configuradas e sessões ACP ativas associadas a conversas funcionam no LINE da mesma forma que em outros canais de conversa.
Consulte Agentes ACP para obter detalhes.
Mídia de saída
O Plugin do LINE envia imagens, vídeos e áudio por meio da ferramenta de mensagens do agente:
- Imagens: enviadas como mensagens de imagem do LINE; por padrão, a imagem de pré-visualização usa a URL da mídia.
- Vídeos: exigem uma imagem de pré-visualização; defina
channelData.line.previewImageUrlcomo uma URL de imagem. - Áudio: enviado como mensagens de áudio do LINE; a duração padrão é de 60 segundos, a menos que
channelData.line.durationMsesteja definido.
Quando definido, o tipo de mídia é obtido de channelData.line.mediaKind; caso contrário, ele é inferido com base nas outras opções do LINE ou no sufixo de arquivo da URL, usando imagem como alternativa.
As URLs de mídia de saída devem ser URLs HTTPS públicas com no máximo 2.000 caracteres. O OpenClaw valida o nome do host de destino antes de encaminhar a URL ao LINE e rejeita destinos de local loopback, link-local e redes privadas.
Envios genéricos de mídia sem opções específicas do LINE usam a rota de imagens.
Solução de problemas
- Falha na verificação do Webhook: verifique se a URL do Webhook usa HTTPS e se o
channelSecretcorresponde ao Console do LINE. - Nenhum evento de entrada: confirme se o caminho do Webhook corresponde a
channels.line.webhookPathe se o Gateway está acessível pelo LINE. - Erros ao baixar mídia: aumente
channels.line.mediaMaxMbse a mídia exceder o limite padrão.
Conteúdo relacionado
- Visão geral dos canais — todos os canais compatíveis
- Pareamento — autenticação de mensagens diretas e fluxo de pareamento
- Grupos — comportamento de conversas em grupo e controle por menções
- Roteamento de canais — roteamento de sessões para mensagens
- Segurança — modelo de acesso e reforço de segurança