Regional platforms
LINE
LINE подключается к OpenClaw через LINE Messaging API. Плагин работает как приёмник Webhook на Gateway и использует токен доступа канала и секрет канала для аутентификации.
Статус: официальный плагин, устанавливаемый отдельно. Поддерживаются личные сообщения, групповые чаты, медиафайлы, местоположения, сообщения Flex, шаблонные сообщения и быстрые ответы. Реакции и ветки обсуждений не поддерживаются.
Установка
Установите LINE перед настройкой канала:
openclaw plugins install @openclaw/lineЛокальная рабочая копия (при запуске из git-репозитория):
openclaw plugins install ./path/to/local/line-pluginНастройка
- Создайте учётную запись LINE Developers и откройте Console: https://developers.line.biz/console/
- Создайте (или выберите) Provider и добавьте канал Messaging API.
- Скопируйте Channel access token и Channel secret из настроек канала.
- Включите Use webhook в настройках Messaging API.
- Укажите в качестве URL-адреса Webhook конечную точку Gateway (требуется HTTPS):
https://gateway-host/line/webhookGateway отвечает на проверочный запрос Webhook от LINE (GET) и подтверждает подписанные
входящие события (POST) сразу после проверки подписи и полезной нагрузки; обработка
агентом продолжается асинхронно.
Если требуется пользовательский путь, задайте channels.line.webhookPath или
channels.line.accounts.<id>.webhookPath и соответствующим образом обновите URL-адрес.
Примечания по безопасности:
- Проверка подписи LINE зависит от тела запроса (HMAC вычисляется по необработанному телу), поэтому перед проверкой OpenClaw применяет строгий лимит размера тела до аутентификации (64 КБ) и тайм-аут чтения.
- OpenClaw обрабатывает события Webhook из проверенных необработанных байтов запроса. Значения
req.body, преобразованные промежуточным ПО вышестоящего уровня, игнорируются для сохранения целостности подписи.
Конфигурация
Минимальная конфигурация:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "pairing", }, },}Конфигурация общедоступных личных сообщений:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "open", allowFrom: ["*"], }, },}Переменные окружения (только для учётной записи по умолчанию):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Файлы токена и секрета:
{ channels: { line: { tokenFile: "/path/to/line-token.txt", secretFile: "/path/to/line-secret.txt", }, },}tokenFile и secretFile должны указывать на обычные файлы. Символические ссылки отклоняются.
Значения, заданные непосредственно в конфигурации, имеют приоритет над файлами; переменные окружения используются в последнюю очередь для учётной записи по умолчанию.
Несколько учётных записей:
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}Управление доступом
По умолчанию для личных сообщений используется сопряжение. Неизвестные отправители получают код сопряжения, а их сообщения игнорируются до одобрения:
openclaw pairing list lineopenclaw pairing approve line <CODE>Списки разрешённых отправителей и политики:
channels.line.dmPolicy:pairing | allowlist | open | disabled(по умолчаниюpairing)channels.line.allowFrom: разрешённые идентификаторы пользователей LINE для личных сообщений;dmPolicy: "open"требует["*"]channels.line.groupPolicy:allowlist | open | disabled(по умолчаниюallowlist)channels.line.groupAllowFrom: разрешённые идентификаторы пользователей LINE для групп; записиallowFromдля личных сообщений не предоставляют отправителям доступ к группам- Переопределения для отдельных групп:
channels.line.groups.<groupId>.allowFrom(а такжеenabled,requireMention,systemPrompt,skills). ПриgroupPolicy: "allowlist"задайтеgroupAllowFromили групповой параметрallowFrom; пустой список разрешённых отправителей группы блокирует групповые сообщения, даже если личные сообщения открыты. - На статические группы доступа отправителей можно ссылаться из
allowFrom,groupAllowFromи группового параметраallowFromс помощьюaccessGroup:<name>; см. Группы доступа. - Примечание о среде выполнения: если
channels.lineполностью отсутствует, среда выполнения используетgroupPolicy="allowlist"для проверок групп (даже если заданchannels.defaults.groupPolicy).
Идентификаторы LINE чувствительны к регистру. Допустимые идентификаторы имеют следующий вид:
- Пользователь:
U+ 32 шестнадцатеричных символа - Группа:
C+ 32 шестнадцатеричных символа - Комната:
R+ 32 шестнадцатеричных символа
Обработка сообщений
- Текст разбивается на фрагменты длиной до 5000 символов.
- Форматирование Markdown удаляется; блоки кода и таблицы по возможности преобразуются в карточки Flex.
- Потоковые ответы буферизуются; LINE получает полные фрагменты с анимацией загрузки, пока агент выполняет работу.
- Размер загружаемых медиафайлов ограничен параметром
channels.line.mediaMaxMb(по умолчанию 10). - Входящие медиафайлы сохраняются в
~/.openclaw/media/inbound/перед передачей агенту в соответствии с общим хранилищем медиафайлов, используемым другими плагинами каналов.
Данные канала (форматированные сообщения)
Используйте channelData.line для отправки быстрых ответов, местоположений, карточек Flex или шаблонных
сообщений.
{ 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", }, }, },}Плагин LINE также предоставляет команду /card для предустановок сообщений Flex:
/card info "Добро пожаловать" "Спасибо, что присоединились!"Поддержка ACP
LINE поддерживает привязки разговоров ACP (Agent Communication Protocol):
/acp spawn <agent> --bind hereпривязывает текущий чат LINE к сеансу ACP без создания дочерней ветки.- Настроенные привязки ACP и активные сеансы ACP, привязанные к разговору, работают в LINE так же, как и в других разговорных каналах.
Дополнительные сведения см. в разделе Агенты ACP.
Исходящие медиафайлы
Плагин LINE отправляет изображения, видео и аудио с помощью инструмента сообщений агента:
- Изображения: отправляются как сообщения LINE с изображением; по умолчанию для предварительного просмотра используется изображение по URL-адресу медиафайла.
- Видео: требуют изображения для предварительного просмотра; задайте в
channelData.line.previewImageUrlURL-адрес изображения. - Аудио: отправляется как аудиосообщения LINE; длительность по умолчанию составляет 60 секунд, если не задан
channelData.line.durationMs.
Тип медиафайла берётся из channelData.line.mediaKind, если этот параметр задан; в противном случае он определяется
по другим параметрам LINE или суффиксу файла в URL-адресе, а резервным вариантом является изображение.
URL-адреса исходящих медиафайлов должны быть общедоступными URL-адресами HTTPS длиной не более 2000 символов. OpenClaw проверяет имя целевого хоста перед передачей URL-адреса в LINE и отклоняет адреса обратной петли, локального канала и частной сети.
При обычной отправке медиафайлов без параметров LINE используется маршрут изображений.
Устранение неполадок
- Проверка Webhook завершается ошибкой: убедитесь, что URL-адрес Webhook использует HTTPS и
channelSecretсоответствует значению в консоли LINE. - Входящие события отсутствуют: убедитесь, что путь Webhook соответствует
channels.line.webhookPathи что Gateway доступен из LINE. - Ошибки загрузки медиафайлов: увеличьте
channels.line.mediaMaxMb, если размер медиафайлов превышает установленный по умолчанию лимит.
Связанные разделы
- Обзор каналов — все поддерживаемые каналы
- Сопряжение — аутентификация личных сообщений и процесс сопряжения
- Группы — обработка групповых чатов и управление доступом по упоминаниям
- Маршрутизация каналов — маршрутизация сеансов для сообщений
- Безопасность — модель доступа и усиление защиты