LINE (plugin)
LINE maakt verbinding met OpenClaw via de LINE Messaging API. De plugin draait als webhook-ontvanger op de gateway en gebruikt je channel access token + channel secret voor authenticatie.
Status: ondersteund via plugin. Directe berichten, groepschats, media, locaties, Flex-berichten, sjabloonberichten en snelle antwoorden worden ondersteund. Reacties en threads worden niet ondersteund.
Plugin vereist
Installeer de LINE-plugin:
openclaw plugins install @openclaw/line
Lokale checkout (vanuit een git-repo):
openclaw plugins install ./extensions/line
Installatie
- Maak een LINE Developers-account aan en open de Console: https://developers.line.biz/console/
- Maak een Provider aan (of kies een bestaande) en voeg een Messaging API-kanaal toe.
- Kopieer het Channel access token en Channel secret uit de kanaalinstellingen.
- Schakel Use webhook in bij de Messaging API-instellingen.
- Stel de webhook-URL in naar je gateway-eindpunt (HTTPS vereist):
https://gateway-host/line/webhook
De gateway beantwoordt LINE’s webhook-verificatie (GET) en inkomende events (POST).
Als je een aangepast pad nodig hebt, stel dan channels.line.webhookPath of
channels.line.accounts.<id>.webhookPath in en pas de URL dienovereenkomstig aan.
Beveiligingsopmerking:
- LINE-handtekeningverificatie is body-afhankelijk (HMAC over de ruwe body), dus OpenClaw past strikte pre-authenticatie body-limieten en time-outs toe voordat verificatie plaatsvindt.
Configureren
Minimale configuratie:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}
Omgevingsvariabelen (alleen standaardaccount):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Token-/secretbestanden:
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}
tokenFile en secretFile moeten naar reguliere bestanden verwijzen. Symlinks worden geweigerd.
Meerdere accounts:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}
Toegangscontrole
Directe berichten staan standaard op koppeling. Onbekende afzenders krijgen een koppelingscode en hun berichten worden genegeerd totdat ze zijn goedgekeurd.
openclaw pairing list line
openclaw pairing approve line <CODE>
Allowlists en beleid:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: toegestane LINE-gebruikers-ID’s voor DM’schannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: toegestane LINE-gebruikers-ID’s voor groepen- Per-groep-overschrijvingen:
channels.line.groups.<groupId>.allowFrom - Runtime-opmerking: als
channels.linevolledig ontbreekt, valt de runtime terug opgroupPolicy="allowlist"voor groepscontroles (zelfs alschannels.defaults.groupPolicyis ingesteld).
LINE-ID’s zijn hoofdlettergevoelig. Geldige ID’s zien er zo uit:
- Gebruiker:
U+ 32 hex-tekens - Groep:
C+ 32 hex-tekens - Kamer:
R+ 32 hex-tekens
Berichtgedrag
- Tekst wordt opgesplitst bij 5000 tekens.
- Markdown-opmaak wordt verwijderd; codeblokken en tabellen worden waar mogelijk omgezet naar Flex-kaarten.
- Streaming-antwoorden worden gebufferd; LINE ontvangt volledige chunks met een laadanimatie terwijl de agent werkt.
- Mediadownloads zijn begrensd door
channels.line.mediaMaxMb(standaard 10).
Kanaaldata (rijke berichten)
Gebruik channelData.line om snelle antwoorden, locaties, Flex-kaarten of sjabloonberichten te verzenden.
{
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",
},
},
},
}
De LINE-plugin bevat ook een /card-commando voor Flex-berichtpresets:
/card info "Welcome" "Thanks for joining!"
Probleemoplossing
- Webhook-verificatie mislukt: zorg ervoor dat de webhook-URL HTTPS is en dat het
channelSecretovereenkomt met de LINE-console. - Geen inkomende events: bevestig dat het webhook-pad overeenkomt met
channels.line.webhookPathen dat de gateway bereikbaar is vanuit LINE. - Mediadownloadfouten: verhoog
channels.line.mediaMaxMbals media de standaardlimiet overschrijdt.