LINE (plugin)
LINE se connecte a OpenClaw via la LINE Messaging API. Le plugin fonctionne comme recepteur de webhooks sur la gateway et utilise votre jeton d’acces canal + secret de canal pour l’authentification.
Statut : pris en charge via plugin. Messages prives, discussions de groupe, medias, localisations, messages Flex, messages template et reponses rapides sont pris en charge. Les reactions et les fils de discussion ne sont pas pris en charge.
Plugin requis
Installez le plugin LINE :
openclaw plugins install @openclaw/line
Checkout local (execution depuis un depot git) :
openclaw plugins install ./extensions/line
Configuration
- Creez un compte LINE Developers et ouvrez la Console : https://developers.line.biz/console/
- Creez (ou choisissez) un Provider et ajoutez un canal Messaging API.
- Copiez le Channel access token et le Channel secret depuis les parametres du canal.
- Activez Use webhook dans les parametres Messaging API.
- Definissez l’URL du webhook sur votre endpoint de gateway (HTTPS requis) :
https://gateway-host/line/webhook
La gateway repond a la verification du webhook LINE (GET) et aux evenements entrants (POST).
Si vous avez besoin d’un chemin personnalise, definissez channels.line.webhookPath ou
channels.line.accounts.<id>.webhookPath et mettez a jour l’URL en consequence.
Remarque de securite :
- La verification de signature LINE depend du corps (HMAC sur le corps brut), donc OpenClaw applique des limites strictes de corps pre-authentification et un delai avant la verification.
Configurer
Configuration minimale :
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}
Variables d’environnement (compte par defaut uniquement) :
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Fichiers de jeton/secret :
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}
tokenFile et secretFile doivent pointer vers des fichiers reguliers. Les liens symboliques sont rejetes.
Comptes multiples :
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}
Controle d’acces
Les messages prives utilisent l’appairage par defaut. Les expediteurs inconnus recoivent un code d’appairage et leurs messages sont ignores jusqu’a approbation.
openclaw pairing list line
openclaw pairing approve line <CODE>
Listes d’autorisation et politiques :
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: IDs utilisateur LINE autorises pour les DMschannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: IDs utilisateur LINE autorises pour les groupes- Surcharges par groupe :
channels.line.groups.<groupId>.allowFrom - Remarque d’execution : si
channels.lineest completement absent, l’execution se replie surgroupPolicy="allowlist"pour les verifications de groupe (meme sichannels.defaults.groupPolicyest defini).
Les IDs LINE sont sensibles a la casse. Les IDs valides ressemblent a :
- Utilisateur :
U+ 32 caracteres hex - Groupe :
C+ 32 caracteres hex - Salon :
R+ 32 caracteres hex
Comportement des messages
- Le texte est decoupe a 5000 caracteres.
- Le formatage Markdown est supprime ; les blocs de code et tableaux sont convertis en cartes Flex quand c’est possible.
- Les reponses en streaming sont mises en tampon ; LINE recoit des blocs complets avec une animation de chargement pendant que l’agent travaille.
- Les telechargements de medias sont limites par
channels.line.mediaMaxMb(par defaut 10).
Donnees de canal (messages enrichis)
Utilisez channelData.line pour envoyer des reponses rapides, localisations, cartes Flex ou messages
template.
{
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",
},
},
},
}
Le plugin LINE inclut egalement une commande /card pour les presets de messages Flex :
/card info "Welcome" "Thanks for joining!"
Depannage
- La verification du webhook echoue : assurez-vous que l’URL du webhook est HTTPS et que le
channelSecretcorrespond a la console LINE. - Pas d’evenements entrants : confirmez que le chemin du webhook correspond a
channels.line.webhookPathet que la gateway est accessible depuis LINE. - Erreurs de telechargement de medias : augmentez
channels.line.mediaMaxMbsi les medias depassent la limite par defaut.