Regional platforms
LINE
LINE łączy się z OpenClaw przez LINE Messaging API. Plugin działa jako odbiornik webhook w Gateway i używa tokena dostępu kanału oraz sekretu kanału do uwierzytelniania.
Status: Plugin do pobrania. 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
Zainstaluj LINE przed skonfigurowaniem kanału:
openclaw plugins install @openclaw/lineLokalny checkout (podczas uruchamiania z repozytorium git):
openclaw plugins install ./path/to/local/line-pluginKonfiguracja początkowa
- Utwórz konto LINE Developers i otwórz konsolę: 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 URL webhooka na punkt końcowy Gateway (wymagane HTTPS):
https://gateway-host/line/webhookGateway odpowiada na weryfikację webhooka LINE (GET) i potwierdza podpisane
zdarzenia przychodzące (POST) natychmiast po weryfikacji podpisu i ładunku; przetwarzanie przez agenta
jest kontynuowane asynchronicznie.
Jeśli potrzebujesz niestandardowej ścieżki, ustaw channels.line.webhookPath albo
channels.line.accounts.<id>.webhookPath i odpowiednio zaktualizuj URL.
Uwaga dotycząca bezpieczeństwa:
- Weryfikacja podpisu LINE zależy od treści żądania (HMAC po surowej treści), dlatego OpenClaw stosuje ścisłe limity treści przed uwierzytelnieniem oraz limit czasu przed weryfikacją.
- OpenClaw przetwarza zdarzenia webhooka ze zweryfikowanych surowych bajtów żądania. Wartości
req.bodyprzekształcone przez middleware wyżej w stosie są ignorowane w celu zachowania integralności podpisu.
Konfiguracja
Minimalna konfiguracja:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "pairing", }, },}Publiczna konfiguracja DM:
{ 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 tokena/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.
Wiele kont:
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}Kontrola dostępu
Wiadomości bezpośrednie domyślnie używają 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 i zasady:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: dozwolone identyfikatory użytkowników LINE dla DM;dmPolicy: "open"wymaga["*"]channels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: dozwolone identyfikatory użytkowników LINE dla grup- Nadpisania dla grup:
channels.line.groups.<groupId>.allowFrom - Statyczne grupy dostępu nadawców mogą być przywoływane z
allowFrom,groupAllowFromi grupowegoallowFromza pomocąaccessGroup:<name>. - Uwaga dotycząca działania: jeśli całkowicie brakuje
channels.line, środowisko uruchomieniowe wraca dogroupPolicy="allowlist"dla sprawdzania grup (nawet jeśli ustawionochannels.defaults.groupPolicy).
Identyfikatory LINE rozróżniają wielkość liter. Prawidłowe identyfikatory wyglądają tak:
- Użytkownik:
U+ 32 znaki szesnastkowe - Grupa:
C+ 32 znaki szesnastkowe - Pokój:
R+ 32 znaki szesnastkowe
Zachowanie 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 z animacją ładowania, gdy agent pracuje.
- Pobieranie multimediów jest ograniczone przez
channels.line.mediaMaxMb(domyślnie 10). - Multimedia przychodzące są zapisywane w
~/.openclaw/media/inbound/, zanim zostaną przekazane agentowi, zgodnie ze wspólnym magazynem multimediów używanym przez inne dołączone Pluginy kanałów.
Dane kanału (bogate wiadomości)
Użyj channelData.line, aby wysyłać szybkie odpowiedzi, lokalizacje, karty Flex albo wiadomości
szablonowe.
{ 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 zawiera też polecenie /card dla presetów wiadomości Flex:
/card info "Welcome" "Thanks for joining!"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 jak w innych kanałach konwersacji.
Szczegóły znajdziesz w agentach ACP.
Multimedia wychodzące
Plugin LINE obsługuje wysyłanie obrazów, filmów i plików audio przez narzędzie wiadomości agenta. Multimedia są wysyłane ścieżką dostarczania specyficzną dla LINE, z odpowiednią obsługą podglądu i śledzenia:
- Obrazy: wysyłane jako wiadomości obrazów LINE z automatycznym generowaniem podglądu.
- Filmy: wysyłane z jawną obsługą podglądu i typu zawartości.
- Audio: wysyłane jako wiadomości audio LINE.
Adresy URL multimediów wychodzących muszą być publicznymi adresami URL HTTPS. OpenClaw weryfikuje docelową nazwę hosta przed przekazaniem URL do LINE i odrzuca cele local loopback, link-local oraz z sieci prywatnych.
Ogólne wysyłanie multimediów wraca do istniejącej trasy tylko dla obrazów, gdy ścieżka specyficzna dla LINE nie jest dostępna.
Rozwiązywanie problemów
- Weryfikacja webhooka kończy się niepowodzeniem: upewnij się, że URL webhooka używa HTTPS, a
channelSecretodpowiada wartości w konsoli LINE. - Brak zdarzeń przychodzących: potwierdź, że ścieżka webhooka odpowiada
channels.line.webhookPathi że Gateway jest osiągalny z LINE. - Błędy pobierania multimediów: zwiększ
channels.line.mediaMaxMb, jeśli multimedia przekraczają domyślny limit.
Powiązane
- Przegląd kanałów — wszystkie obsługiwane kanały
- Parowanie — uwierzytelnianie DM i przepływ parowania
- Grupy — zachowanie czatów grupowych i bramkowanie wzmianek
- Routing kanałów — routing sesji dla wiadomości
- Bezpieczeństwo — model dostępu i utwardzanie