LINE (плагин)
LINE подключается к OpenClaw через LINE Messaging API. Плагин работает как приемник webhook на шлюзе и использует ваш токен доступа канала + секрет канала для аутентификации.
Статус: поддерживается через плагин. Личные сообщения, групповые чаты, медиа, местоположения, Flex сообщения, шаблонные сообщения и быстрые ответы поддерживаются. Реакции и треды не поддерживаются.
Требуется плагин
Установите плагин LINE:
openclaw plugins install @openclaw/line
Локальная версия (при запуске из git-репозитория):
openclaw plugins install ./extensions/line
Настройка
- Создайте учетную запись LINE Developers и откройте консоль: https://developers.line.biz/console/
- Создайте (или выберите) провайдера и добавьте канал Messaging API.
- Скопируйте токен доступа канала и секрет канала из настроек канала.
- Включите Использовать webhook в настройках Messaging API.
- Установите URL webhook на конечную точку вашего шлюза (требуется HTTPS):
https://gateway-host/line/webhook
Шлюз отвечает на проверку webhook LINE (GET) и входящие события (POST). Если вам нужен пользовательский путь, установите channels.line.webhookPath или channels.line.accounts.<id>.webhookPath и обновите URL соответственно.
Настройка
Минимальная конфигурация:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing"
}
}
}
Переменные окружения (только для учетной записи по умолчанию):
- LINE_CHANNEL_ACCESS_TOKEN
- LINE_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 | disabled
- channels.line.allowFrom: список разрешенных ID пользователей LINE для личных сообщений
- channels.line.groupPolicy: allowlist | open | disabled
- channels.line.groupAllowFrom: список разрешенных ID пользователей LINE для групп
- Переопределение для каждой группы: channels.line.groups.<groupId>.allowFrom
LINE ID чувствительны к регистру. Допустимые 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 Main St",
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 "Добро пожаловать" "Спасибо за присоединение!"
Устранение неполадок
- Проверка webhook не удалась: убедитесь, что URL webhook использует HTTPS и channelSecret соответствует консоли LINE.
- Нет входящих событий: подтвердите, что путь webhook соответствует channels.line.webhookPath и что шлюз доступен из LINE.
- Ошибки загрузки медиа: увеличьте channels.line.mediaMaxMb, если медиа превышает лимит по умолчанию.