Regional platforms
LINE
LINE se connecte à OpenClaw via l’API LINE Messaging. Le plugin s’exécute comme récepteur de Webhook sur le Gateway et utilise votre jeton d’accès au canal ainsi que le secret du canal pour l’authentification.
Statut : plugin officiel, installé séparément. Les messages directs, les discussions de groupe, les médias, les emplacements, les messages Flex, les messages modèles et les réponses rapides sont pris en charge. Les réactions et les fils de discussion ne sont pas pris en charge.
Installation
Installez LINE avant de configurer le canal :
openclaw plugins install @openclaw/lineDépôt local (lors d’une exécution depuis un dépôt git) :
openclaw plugins install ./path/to/local/line-pluginConfiguration initiale
- Créez un compte LINE Developers et ouvrez la console : https://developers.line.biz/console/
- Créez (ou choisissez) un fournisseur et ajoutez un canal Messaging API.
- Copiez le Channel access token et le Channel secret depuis les paramètres du canal.
- Activez Use webhook dans les paramètres de Messaging API.
- Définissez l’URL du Webhook sur le point de terminaison de votre Gateway (HTTPS requis) :
https://gateway-host/line/webhookLe Gateway répond à la vérification du Webhook de LINE (GET) et accuse immédiatement réception des
événements entrants signés (POST) après validation de la signature et de la charge utile ; le traitement
par l’agent se poursuit de manière asynchrone.
Si vous avez besoin d’un chemin personnalisé, définissez channels.line.webhookPath ou
channels.line.accounts.<id>.webhookPath, puis mettez à jour l’URL en conséquence.
Remarques de sécurité :
- La vérification de la signature LINE dépend du corps de la requête (HMAC calculé sur le corps brut). OpenClaw applique donc une limite stricte de 64 Ko au corps avant authentification ainsi qu’un délai maximal de lecture avant la vérification.
- OpenClaw traite les événements du Webhook à partir des octets bruts vérifiés de la requête. Les valeurs
req.bodytransformées par un intergiciel en amont sont ignorées afin de préserver l’intégrité de la signature.
Configuration
Configuration minimale :
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "pairing", }, },}Configuration des messages directs publics :
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "open", allowFrom: ["*"], }, },}Variables d’environnement (compte par défaut uniquement) :
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Fichiers de jeton et de secret :
{ channels: { line: { tokenFile: "/path/to/line-token.txt", secretFile: "/path/to/line-secret.txt", }, },}tokenFile et secretFile doivent désigner des fichiers ordinaires. Les liens symboliques sont refusés.
Les valeurs de configuration intégrées sont prioritaires sur les fichiers ; les variables d’environnement constituent le dernier recours pour le compte par défaut.
Comptes multiples :
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}Contrôle d’accès
Par défaut, les messages directs nécessitent un appairage. Les expéditeurs inconnus reçoivent un code d’appairage et leurs messages sont ignorés jusqu’à leur approbation :
openclaw pairing list lineopenclaw pairing approve line <CODE>Listes d’autorisation et stratégies :
channels.line.dmPolicy:pairing | allowlist | open | disabled(pairingpar défaut)channels.line.allowFrom: identifiants utilisateur LINE autorisés pour les messages directs ;dmPolicy: "open"nécessite["*"]channels.line.groupPolicy:allowlist | open | disabled(allowlistpar défaut)channels.line.groupAllowFrom: identifiants utilisateur LINE autorisés pour les groupes- Remplacements par groupe :
channels.line.groups.<groupId>.allowFrom(ainsi queenabled,requireMention,systemPrompt,skills) - Les groupes statiques d’accès des expéditeurs peuvent être référencés depuis
allowFrom,groupAllowFromet la propriétéallowFrompropre à chaque groupe avecaccessGroup:<name>; consultez Groupes d’accès. - Remarque sur l’exécution : si
channels.lineest totalement absent, l’exécution utilise par défautgroupPolicy="allowlist"pour les vérifications de groupe (même sichannels.defaults.groupPolicyest défini).
Les identifiants LINE sont sensibles à la casse. Les identifiants valides se présentent comme suit :
- Utilisateur :
U+ 32 caractères hexadécimaux - Groupe :
C+ 32 caractères hexadécimaux - Salon :
R+ 32 caractères hexadécimaux
Comportement des messages
- Le texte est découpé en segments de 5 000 caractères.
- La mise en forme Markdown est supprimée ; les blocs de code et les tableaux sont convertis en cartes Flex lorsque cela est possible.
- Les réponses diffusées en continu sont mises en mémoire tampon ; LINE reçoit des segments complets avec une animation de chargement pendant que l’agent travaille.
- La taille des téléchargements de médias est limitée par
channels.line.mediaMaxMb(10 par défaut). - Les médias entrants sont enregistrés sous
~/.openclaw/media/inbound/avant d’être transmis à l’agent, conformément au stockage de médias partagé utilisé par les autres plugins de canal.
Données du canal (messages enrichis)
Utilisez channelData.line pour envoyer des réponses rapides, des emplacements, des cartes Flex ou des messages
modèles.
{ 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 fournit également une commande /card pour les préréglages de messages Flex :
/card info "Welcome" "Thanks for joining!"Prise en charge d’ACP
LINE prend en charge les liaisons de conversation ACP (protocole de communication entre agents) :
/acp spawn <agent> --bind herelie la discussion LINE actuelle à une session ACP sans créer de fil enfant.- Les liaisons ACP configurées et les sessions ACP actives liées à une conversation fonctionnent sur LINE comme sur les autres canaux de conversation.
Consultez Agents ACP pour plus de détails.
Médias sortants
Le plugin LINE envoie des images, des vidéos et du contenu audio au moyen de l’outil de messagerie de l’agent :
- Images : envoyées sous forme de messages image LINE ; l’image d’aperçu utilise par défaut l’URL du média.
- Vidéos : nécessitent une image d’aperçu ; définissez
channelData.line.previewImageUrlsur l’URL d’une image. - Audio : envoyé sous forme de messages audio LINE ; la durée est de 60 secondes par défaut, sauf si
channelData.line.durationMsest défini.
Le type de média provient de channelData.line.mediaKind lorsqu’il est défini ; sinon, il est déduit
des autres options LINE ou du suffixe de fichier de l’URL, avec le type image comme solution de repli.
Les URL des médias sortants doivent être des URL HTTPS publiques de 2 000 caractères au maximum. OpenClaw valide le nom d’hôte cible avant de transmettre l’URL à LINE et refuse les cibles de bouclage local, les adresses locales au lien et les réseaux privés.
Les envois de médias génériques sans options propres à LINE utilisent la voie des images.
Dépannage
- Échec de la vérification du Webhook : assurez-vous que l’URL du Webhook utilise HTTPS et que
channelSecretcorrespond à celui de la console LINE. - Aucun événement entrant : vérifiez que le chemin du Webhook correspond à
channels.line.webhookPathet que le Gateway est accessible depuis LINE. - Erreurs de téléchargement des médias : augmentez
channels.line.mediaMaxMbsi le média dépasse la limite par défaut.
Voir aussi
- Présentation des canaux — tous les canaux pris en charge
- Appairage — authentification des messages directs et processus d’appairage
- Groupes — comportement des discussions de groupe et filtrage par mention
- Routage des canaux — routage des sessions pour les messages
- Sécurité — modèle d’accès et renforcement de la sécurité