Regional platforms
LINE
LINE łączy się z OpenClaw za pośrednictwem LINE Messaging API. Plugin działa jako odbiornik webhooków w Gateway i używa tokenu dostępu do kanału oraz sekretu kanału do uwierzytelniania.
Status: oficjalny Plugin, instalowany oddzielnie. Obsługiwane są wiadomości bezpośrednie, czaty grupowe, multimedia, lokalizacje, wiadomości Flex, wiadomości szablonowe i szybkie odpowiedzi. Reakcje i wątki nie są obsługiwane.
Instalacja
Przed skonfigurowaniem kanału zainstaluj LINE:
openclaw plugins install @openclaw/lineLokalne repozytorium (w przypadku uruchamiania z repozytorium git):
openclaw plugins install ./path/to/local/line-pluginKonfiguracja początkowa
- Utwórz konto LINE Developers i otwórz Console: https://developers.line.biz/console/
- Utwórz (lub wybierz) Provider i dodaj kanał Messaging API.
- Skopiuj Channel access token i Channel secret z ustawień kanału.
- Włącz Use webhook w ustawieniach Messaging API.
- Ustaw adres URL webhooka na punkt końcowy Gateway (wymagany HTTPS):
https://gateway-host/line/webhookGateway odpowiada na weryfikację webhooka LINE (GET) i natychmiast potwierdza podpisane
zdarzenia przychodzące (POST) po zweryfikowaniu podpisu i ładunku; przetwarzanie przez agenta
jest kontynuowane asynchronicznie.
Jeśli potrzebna jest niestandardowa ścieżka, ustaw channels.line.webhookPath lub
channels.line.accounts.<id>.webhookPath i odpowiednio zaktualizuj adres URL.
Uwagi dotyczące bezpieczeństwa:
- Weryfikacja podpisu LINE zależy od treści żądania (HMAC obliczany na podstawie nieprzetworzonej treści), dlatego OpenClaw przed uwierzytelnieniem stosuje ścisły limit rozmiaru treści (64 KB) i limit czasu odczytu.
- OpenClaw przetwarza zdarzenia webhooka na podstawie zweryfikowanych, nieprzetworzonych bajtów żądania. Wartości
req.bodyprzekształcone przez nadrzędne oprogramowanie pośredniczące są ignorowane w celu zapewnienia integralności podpisu.
Konfiguracja
Konfiguracja minimalna:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "pairing", }, },}Konfiguracja publicznych wiadomości bezpośrednich:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "open", allowFrom: ["*"], }, },}Zmienne środowiskowe (tylko konto domyślne):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Pliki tokenu/sekretu:
{ channels: { line: { tokenFile: "/path/to/line-token.txt", secretFile: "/path/to/line-secret.txt", }, },}tokenFile i secretFile muszą wskazywać zwykłe pliki. Dowiązania symboliczne są odrzucane.
Wartości konfiguracji wbudowane bezpośrednio mają pierwszeństwo przed plikami; zmienne środowiskowe stanowią ostatnią opcję rezerwową dla konta domyślnego.
Wiele kont:
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}Kontrola dostępu
Wiadomości bezpośrednie domyślnie wymagają parowania. Nieznani nadawcy otrzymują kod parowania, a ich wiadomości są ignorowane do czasu zatwierdzenia:
openclaw pairing list lineopenclaw pairing approve line <CODE>Listy dozwolonych nadawców i zasady:
channels.line.dmPolicy:pairing | allowlist | open | disabled(domyślniepairing)channels.line.allowFrom: dozwolone identyfikatory użytkowników LINE dla wiadomości bezpośrednich;dmPolicy: "open"wymaga["*"]channels.line.groupPolicy:allowlist | open | disabled(domyślnieallowlist)channels.line.groupAllowFrom: dozwolone identyfikatory użytkowników LINE dla grup; wpisyallowFromdotyczące wiadomości bezpośrednich nie dopuszczają nadawców grupowych- Nadpisania dla poszczególnych grup:
channels.line.groups.<groupId>.allowFrom(orazenabled,requireMention,systemPrompt,skills). W przypadkugroupPolicy: "allowlist"ustawgroupAllowFromluballowFromdla danej grupy; pusta lista dozwolonych nadawców grupy blokuje wiadomości grupowe nawet wtedy, gdy wiadomości bezpośrednie są otwarte. - Do statycznych grup dostępu nadawców można odwoływać się z poziomu
allowFrom,groupAllowFromorazallowFromdla poszczególnych grup za pomocąaccessGroup:<name>; zobacz Grupy dostępu. - Uwaga dotycząca środowiska uruchomieniowego: jeśli całkowicie brakuje
channels.line, środowisko uruchomieniowe używa zastępczogroupPolicy="allowlist"do sprawdzania grup (nawet jeśli ustawionochannels.defaults.groupPolicy).
W identyfikatorach LINE rozróżniana jest wielkość liter. Prawidłowe identyfikatory mają następującą postać:
- Użytkownik:
U+ 32 znaki szesnastkowe - Grupa:
C+ 32 znaki szesnastkowe - Pokój:
R+ 32 znaki szesnastkowe
Obsługa wiadomości
- Tekst jest dzielony na fragmenty po 5000 znaków.
- Formatowanie Markdown jest usuwane; bloki kodu i tabele są w miarę możliwości konwertowane na karty Flex.
- Odpowiedzi strumieniowe są buforowane; LINE otrzymuje pełne fragmenty wraz z animacją ładowania podczas pracy agenta.
- Rozmiar pobieranych multimediów jest ograniczony przez
channels.line.mediaMaxMb(domyślnie 10). - Przychodzące multimedia są zapisywane w
~/.openclaw/media/inbound/przed przekazaniem ich agentowi, zgodnie ze współdzielonym magazynem multimediów używanym przez inne Pluginy kanałów.
Dane kanału (wiadomości rozszerzone)
Użyj channelData.line, aby wysyłać szybkie odpowiedzi, lokalizacje, karty Flex lub wiadomości
szablonowe.
{ text: "Proszę bardzo", channelData: { line: { quickReplies: ["Status", "Pomoc"], location: { title: "Biuro", address: "123 Main St", latitude: 35.681236, longitude: 139.767125, }, flexMessage: { altText: "Karta statusu", contents: {/* Ładunek Flex */}, }, templateMessage: { type: "confirm", text: "Kontynuować?", confirmLabel: "Tak", confirmData: "yes", cancelLabel: "Nie", cancelData: "no", }, }, },}Plugin LINE zawiera również polecenie /card do używania ustawień wstępnych wiadomości Flex:
/card info "Witamy" "Dziękujemy za dołączenie!"Obsługa ACP
LINE obsługuje powiązania konwersacji ACP (Agent Communication Protocol):
/acp spawn <agent> --bind herewiąże bieżący czat LINE z sesją ACP bez tworzenia wątku podrzędnego.- Skonfigurowane powiązania ACP i aktywne sesje ACP powiązane z konwersacją działają w LINE tak samo jak w innych kanałach konwersacji.
Szczegółowe informacje zawiera strona Agenci ACP.
Multimedia wychodzące
Plugin LINE wysyła obrazy, filmy i dźwięk za pośrednictwem narzędzia wiadomości agenta:
- Obrazy: wysyłane jako wiadomości graficzne LINE; obraz podglądu domyślnie używa adresu URL multimediów.
- Filmy: wymagają obrazu podglądu; ustaw
channelData.line.previewImageUrlna adres URL obrazu. - Dźwięk: wysyłany jako wiadomości dźwiękowe LINE; czas trwania domyślnie wynosi 60 sekund, chyba że ustawiono
channelData.line.durationMs.
Rodzaj multimediów jest pobierany z channelData.line.mediaKind, jeśli ta wartość jest ustawiona; w przeciwnym razie jest ustalany
na podstawie innych opcji LINE lub rozszerzenia pliku w adresie URL, z obrazem jako wartością domyślną.
Adresy URL wychodzących multimediów muszą być publicznymi adresami HTTPS o długości nieprzekraczającej 2000 znaków. OpenClaw weryfikuje docelową nazwę hosta przed przekazaniem adresu URL do LINE i odrzuca adresy pętli zwrotnej, łącza lokalnego oraz sieci prywatnych.
Ogólne wysyłanie multimediów bez opcji specyficznych dla LINE korzysta ze ścieżki obrazów.
Rozwiązywanie problemów
- Weryfikacja webhooka nie powiodła się: upewnij się, że adres URL webhooka używa HTTPS, a
channelSecretodpowiada wartości w LINE Console. - Brak zdarzeń przychodzących: potwierdź, że ścieżka webhooka odpowiada
channels.line.webhookPathi że Gateway jest dostępny z LINE. - Błędy pobierania multimediów: zwiększ
channels.line.mediaMaxMb, jeśli multimedia przekraczają domyślny limit.
Powiązane materiały
- Przegląd kanałów — wszystkie obsługiwane kanały
- Parowanie — uwierzytelnianie wiadomości bezpośrednich i proces parowania
- Grupy — obsługa czatów grupowych i wymóg wzmianki
- Routing kanałów — routing sesji dla wiadomości
- Bezpieczeństwo — model dostępu i wzmacnianie zabezpieczeń