LINE (Plugin)
LINE verbindet sich über die LINE Messaging API mit OpenClaw. Das Plugin läuft als Webhook-Empfänger auf dem Gateway und nutzt dein Channel Access Token + Channel Secret für die Authentifizierung.
Status: Unterstützt via Plugin. Direktnachrichten, Gruppenchats, Medien, Standorte, Flex Messages, Template Messages und Quick Replies werden unterstützt. Reactions und Threads werden nicht unterstützt.
Plugin erforderlich
Installiere das LINE Plugin:
openclaw plugins install @openclaw/line
Lokaler Checkout (wenn du aus einem Git-Repo arbeitest):
openclaw plugins install ./extensions/line
Setup
- Erstelle einen LINE Developers Account und öffne die Console: https://developers.line.biz/console/
- Erstelle (oder wähle) einen Provider und füge einen Messaging API Channel hinzu.
- Kopiere das Channel access token und Channel secret aus den Channel-Einstellungen.
- 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).
Falls du einen eigenen Pfad brauchst, setze channels.line.webhookPath oder
channels.line.accounts.<id>.webhookPath und passe die URL entsprechend an.
Konfiguration
Minimale Config:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}
Umgebungsvariablen (nur für den Standard-Account):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Token/Secret aus Dateien:
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}
Mehrere Accounts:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}
Zugriffskontrolle
Direktnachrichten nutzen standardmäßig Pairing. Unbekannte Absender bekommen einen Pairing-Code und ihre Nachrichten werden ignoriert, bis sie freigegeben werden.
openclaw pairing list line
openclaw pairing approve line <CODE>
Allowlists und Policies:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: Allowlist mit LINE User-IDs für DMschannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: Allowlist mit LINE User-IDs für Gruppen- Gruppenspezifische Overrides:
channels.line.groups.<groupId>.allowFrom
LINE IDs sind case-sensitive. Gültige IDs sehen so aus:
- User:
U+ 32 Hex-Zeichen - Group:
C+ 32 Hex-Zeichen - Room:
R+ 32 Hex-Zeichen
Nachrichtenverhalten
- Text wird bei 5000 Zeichen aufgeteilt.
- Markdown-Formatierung wird entfernt; Code-Blöcke und Tabellen werden wenn möglich in Flex Cards umgewandelt.
- Streaming-Antworten werden gepuffert; LINE erhält vollständige Chunks mit einer Lade-Animation, während der Agent arbeitet.
- Medien-Downloads sind durch
channels.line.mediaMaxMbbegrenzt (Standard: 10).
Channel Data (Rich Messages)
Nutze 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!"
Troubleshooting
- Webhook-Verifizierung schlägt fehl: Stelle sicher, dass die Webhook-URL HTTPS nutzt und das
channelSecretmit der LINE Console übereinstimmt. - Keine eingehenden Events: Prüfe, ob der Webhook-Pfad mit
channels.line.webhookPathübereinstimmt und das Gateway von LINE aus erreichbar ist. - Medien-Download-Fehler: Erhöhe
channels.line.mediaMaxMb, falls Medien das Standard-Limit überschreiten.