LINE (plugin)
LINE laczy sie z OpenClaw przez LINE Messaging API. Plugin dziala jako odbiornik webhooka na gateway i uzywa tokenu dostepu kanalu + sekretu kanalu do uwierzytelniania.
Status: obslugiwany przez plugin. Wiadomosci bezposrednie, czaty grupowe, media, lokalizacje, wiadomosci Flex, wiadomosci szablonowe i szybkie odpowiedzi sa obslugiwane. Reakcje i watki nie sa obslugiwane.
Wymagany plugin
Zainstaluj plugin LINE:
openclaw plugins install @openclaw/line
Lokalny checkout (przy uruchomieniu z repozytorium git):
openclaw plugins install ./extensions/line
Konfiguracja
- Utworz konto LINE Developers i otworz Konsole: https://developers.line.biz/console/
- Utworz (lub wybierz) Dostawce i dodaj kanal Messaging API.
- Skopiuj Channel access token i Channel secret z ustawien kanalu.
- Wlacz Use webhook w ustawieniach Messaging API.
- Ustaw URL webhooka na endpoint twojego gateway (wymagany HTTPS):
https://gateway-host/line/webhook
Gateway odpowiada na weryfikacje webhooka LINE (GET) i zdarzenia przychodzace (POST).
Jesli potrzebujesz niestandardowej sciezki, ustaw channels.line.webhookPath lub
channels.line.accounts.<id>.webhookPath i odpowiednio zaktualizuj URL.
Uwaga bezpieczenstwa:
- Weryfikacja podpisu LINE zalezy od ciala (HMAC po surowym ciele), wiec OpenClaw stosuje scisle limity ciala pre-auth i timeout przed weryfikacja.
Konfigurowanie
Minimalna konfiguracja:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}
Zmienne srodowiskowe (tylko domyslne konto):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Pliki z tokenem/sekretem:
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}
tokenFile i secretFile musza wskazywac na zwykle pliki. Dowiazania symboliczne sa odrzucane.
Wiele kont:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}
Kontrola dostepu
Wiadomosci bezposrednie domyslnie uzywaja parowania. Nieznani nadawcy otrzymuja kod parowania, a ich wiadomosci sa ignorowane do momentu zatwierdzenia.
openclaw pairing list line
openclaw pairing approve line <CODE>
Listy dozwolonych i polityki:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: dozwolone ID uzytkownikow LINE dla DMchannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: dozwolone ID uzytkownikow LINE dla grup- Nadpisania per grupe:
channels.line.groups.<groupId>.allowFrom - Uwaga runtime: jesli
channels.linecalkowicie brakuje, runtime stosuje zastepczymgroupPolicy="allowlist"dla sprawdzen grupowych (nawet jeslichannels.defaults.groupPolicyjest ustawione).
ID LINE rozrozniaja wielkosc liter. Prawidlowe ID wygladaja tak:
- Uzytkownik:
U+ 32 znaki hex - Grupa:
C+ 32 znaki hex - Pokoj:
R+ 32 znaki hex
Zachowanie wiadomosci
- Tekst jest dzielony na kawalki po 5000 znakow.
- Formatowanie markdown jest usuwane; bloki kodu i tabele sa konwertowane na karty Flex gdy to mozliwe.
- Odpowiedzi strumieniowe sa buforowane; LINE otrzymuje pelne kawalki z animacja ladowania podczas pracy agenta.
- Pobieranie mediow jest ograniczone przez
channels.line.mediaMaxMb(domyslnie 10).
Dane kanalu (bogate wiadomosci)
Uzyj channelData.line do wysylania szybkich odpowiedzi, lokalizacji, kart Flex lub wiadomosci
szablonowych.
{
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",
},
},
},
}
Plugin LINE dostarcza rowniez polecenie /card dla presetow wiadomosci Flex:
/card info "Welcome" "Thanks for joining!"
Rozwiazywanie problemow
- Weryfikacja webhooka nie udaje sie: upewnij sie, ze URL webhooka jest HTTPS, a
channelSecretpasuje do konsoli LINE. - Brak zdarzen przychodzacych: potwierdz, ze sciezka webhooka pasuje do
channels.line.webhookPathi ze gateway jest osiagalny z LINE. - Bledy pobierania mediow: zwieksz
channels.line.mediaMaxMbjesli media przekraczaja domyslny limit.