LINE
LINE подключается к OpenClaw через LINE Messaging API. Плагин работает как получатель вебхуков на шлюзе и использует ваш токен доступа к каналу и секрет канала для аутентификации. Статус: поддерживается через плагин. Поддерживаются личные сообщения, групповые чаты, медиа, местоположения, Flex-сообщения, шаблонные сообщения и быстрые ответы. Реакции и ветки не поддерживаются.
Требуется плагин
Установите плагин LINE:
openclaw plugins install @openclaw/line
Локальная установка (при запуске из git-репозитория):
openclaw plugins install ./extensions/line
Настройка
- Создайте аккаунт LINE Developers и откройте Консоль: https://developers.line.biz/console/
- Создайте (или выберите) Провайдера и добавьте канал Messaging API.
- Скопируйте Channel access token и Channel secret из настроек канала.
- Включите Use webhook в настройках Messaging API.
- Установите URL вебхука на конечную точку вашего шлюза (требуется HTTPS):
https://gateway-host/line/webhook
Шлюз отвечает на проверку вебхука LINE (GET) и входящие события (POST). Если вам нужен пользовательский путь, установите channels.line.webhookPath или channels.line.accounts.<id>.webhookPath и обновите URL соответственно. Примечание по безопасности:
- Проверка подписи LINE зависит от тела запроса (HMAC над исходным телом), поэтому OpenClaw применяет строгие предварительные ограничения на размер тела и таймаут перед проверкой.
Конфигурация
Минимальная конфигурация:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}
Переменные окружения (только для аккаунта по умолчанию):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
Файлы с токеном/секретом:
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}
Несколько аккаунтов:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}
Контроль доступа
Личные сообщения по умолчанию используют режим сопряжения. Неизвестные отправители получают код сопряжения, и их сообщения игнорируются до подтверждения.
openclaw pairing list line
openclaw pairing approve line <CODE>
Белые списки и политики:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: разрешённые ID пользователей LINE для личных сообщенийchannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: разрешённые ID пользователей LINE для групп- Переопределения для конкретных групп:
channels.line.groups.<groupId>.allowFrom - Примечание для времени выполнения: если
channels.lineполностью отсутствует, среда выполнения возвращается кgroupPolicy="allowlist"для проверок групп (даже если установленchannels.defaults.groupPolicy).
ID LINE чувствительны к регистру. Валидные ID выглядят так:
- Пользователь:
U+ 32 шестнадцатеричных символа - Группа:
C+ 32 шестнадцатеричных символа - Комната:
R+ 32 шестнадцатеричных символа
Поведение сообщений
- Текст разбивается на части по 5000 символов.
- Форматирование Markdown удаляется; блоки кода и таблицы, по возможности, преобразуются в Flex-карточки.
- Потоковые ответы буферизуются; LINE получает полные фрагменты с анимацией загрузки, пока агент работает.
- Загрузка медиа ограничена параметром
channels.line.mediaMaxMb(по умолчанию 10).
Данные канала (расширенные сообщения)
Используйте channelData.line для отправки быстрых ответов, местоположений, Flex-карточек или шаблонных сообщений.
{
text: "Вот, пожалуйста",
channelData: {
line: {
quickReplies: ["Статус", "Помощь"],
location: {
title: "Офис",
address: "ул. Главная, 123",
latitude: 35.681236,
longitude: 139.767125,
},
flexMessage: {
altText: "Карточка статуса",
contents: {
/* Полезная нагрузка Flex */
},
},
templateMessage: {
type: "confirm",
text: "Продолжить?",
confirmLabel: "Да",
confirmData: "yes",
cancelLabel: "Нет",
cancelData: "no",
},
},
},
}
Плагин LINE также включает команду /card для предустановленных Flex-сообщений:
/card info "Добро пожаловать" "Спасибо, что присоединились!"
Устранение неполадок
- Не удаётся проверить вебхук: убедитесь, что URL вебхука использует HTTPS и
channelSecretсовпадает с указанным в консоли LINE. - Нет входящих событий: проверьте, что путь вебхука совпадает с
channels.line.webhookPathи что шлюз доступен из LINE. - Ошибки загрузки медиа: увеличьте значение
channels.line.mediaMaxMb, если медиа превышает лимит по умолчанию.