LINE (Plugin)
LINE verbindet sich mit OpenClaw über die LINE Messaging API. Das Plugin läuft als Webhook-Empfänger auf dem Gateway und verwendet deinen Channel Access Token + Channel Secret zur Authentifizierung.
Status: Unterstützt via Plugin. Direktnachrichten, Gruppenchats, Medien, Standorte, Flex Messages, Template Messages und Quick Replies werden unterstützt. Reaktionen und Threads werden nicht unterstützt.
Plugin erforderlich
Installiere das LINE Plugin:
openclaw plugins install @openclaw/line
Lokaler Checkout (wenn aus einem Git-Repo ausgeführt):
openclaw plugins install ./extensions/line
Einrichtung
- Erstelle ein LINE Developers-Konto und öffne die Konsole: https://developers.line.biz/console/
- Erstelle (oder wähle) einen Provider und füge einen Messaging API-Kanal hinzu.
- Kopiere den Channel access token und das Channel secret aus den Kanaleinstellungen.
- Aktiviere Use webhook in den Messaging API-Einstellungen.
- Setze die Webhook-URL auf deinen Gateway-Endpunkt (HTTPS erforderlich):
https://gateway-host/line/webhook
Das Gateway antwortet auf LINEs Webhook-Verifizierung (GET) und eingehende Events (POST).
Wenn du einen benutzerdefinierten Pfad benötigst, setze channels.line.webhookPath oder
channels.line.accounts.<id>.webhookPath und aktualisiere die URL entsprechend.
Sicherheitshinweis:
- LINEs Signaturverifizierung ist Body-abhängig (HMAC über den rohen Body), daher wendet OpenClaw strikte Pre-Auth-Body-Limits und Timeout vor der Verifizierung an.
Konfiguration
Minimale Konfiguration:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}
Umgebungsvariablen (nur Standardkonto):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Token/Secret-Dateien:
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}
tokenFile und secretFile müssen auf reguläre Dateien zeigen. Symlinks werden abgelehnt.
Mehrere Konten:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}
Zugriffssteuerung
Direktnachrichten verwenden standardmäßig Pairing. Unbekannte Absender erhalten einen Pairing-Code und ihre Nachrichten werden bis zur Genehmigung ignoriert.
openclaw pairing list line
openclaw pairing approve line <CODE>
Allowlists und Richtlinien:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: erlaubte LINE Benutzer-IDs für DMschannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: erlaubte LINE Benutzer-IDs für Gruppen- Pro-Gruppen-Überschreibungen:
channels.line.groups.<groupId>.allowFrom - Laufzeithinweis: wenn
channels.linevollständig fehlt, fällt die Laufzeit aufgroupPolicy="allowlist"für Gruppenprüfungen zurück (auch wennchannels.defaults.groupPolicygesetzt ist).
LINE IDs sind case-sensitiv. Gültige IDs sehen so aus:
- Benutzer:
U+ 32 Hex-Zeichen - Gruppe:
C+ 32 Hex-Zeichen - Raum:
R+ 32 Hex-Zeichen
Nachrichtenverhalten
- Text wird bei 5000 Zeichen aufgeteilt.
- Markdown-Formatierung wird entfernt; Codeblöcke und Tabellen werden wenn möglich in Flex Cards konvertiert.
- Streaming-Antworten werden gepuffert; LINE erhält vollständige Chunks mit einer Ladeanimation, während der Agent arbeitet.
- Medien-Downloads sind begrenzt durch
channels.line.mediaMaxMb(Standard 10).
Kanaldaten (Rich Messages)
Verwende channelData.line, um Quick Replies, Standorte, Flex Cards oder Template Messages zu senden.
{
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",
},
},
},
}
Das LINE Plugin enthält auch einen /card-Befehl für Flex Message Presets:
/card info "Welcome" "Thanks for joining!"
Fehlerbehebung
- Webhook-Verifizierung schlägt fehl: Stelle sicher, dass die Webhook-URL HTTPS ist und das
channelSecretmit der LINE-Konsole übereinstimmt. - Keine eingehenden Events: Bestätige, dass der Webhook-Pfad mit
channels.line.webhookPathübereinstimmt und das Gateway von LINE aus erreichbar ist. - Medien-Download-Fehler: Erhöhe
channels.line.mediaMaxMb, wenn Medien das Standardlimit überschreiten.