Перейти к содержанию

Feishu

На этой странице Hermes Agent интегрируется с Feishu и Lark в качестве полнофункционального бота. После подключения вы можете общаться с агентом в личных сообщениях или групповых чатах, получать результаты cron-задач в домашнем чате, а также отправлять текст, изображения, аудио и файлы через обычный gateway-поток.

Интеграция поддерживает оба режима подключения: * websocket — рекомендуется; Hermes открывает исходящее соединение, и вам не нужна публичная вебхук-точка * webhook — полезен, когда вы хотите, чтобы Feishu/Lark отправлял события в ваш gateway через HTTP

Как работает Hermes​

Контекст Поведение
Личные сообщения Hermes отвечает на каждое сообщение.
Групповые чаты Hermes отвечает только когда бот упомянут (@mention) в чате.
Общие групповые чаты По умолчанию история сессии изолируется для каждого пользователя внутри общего чата.
Это поведение общего чата управляется через config.yaml:
[code]
group_sessions_per_user: true

[/code] Установите false, только если вам явно нужен один общий разговор на весь чат.

Шаг 1: Создайте приложение Feishu / Lark​

Рекомендуемый способ: Создание по QR-коду (одна команда)​

[code] hermes gateway setup

[/code] Выберите Feishu / Lark и отсканируйте QR-код мобильным приложением Feishu или Lark. Hermes автоматически создаст приложение-бота с правильными разрешениями и сохранит учётные данные.

Альтернатива: Настройка вручную​

Если создание по QR-коду недоступно, мастер переключится на ручной ввод: 1. Откройте консоль разработчика Feishu или Lark: * Feishu: https://open.feishu.cn/ * Lark: https://open.larksuite.com/ 2. Создайте новое приложение. 3. В разделе Credentials & Basic Info скопируйте App ID и App Secret. 4. Включите возможность Bot для приложения. 5. Запустите hermes gateway setup, выберите Feishu / Lark и введите учётные данные по запросу.

warning Храните App Secret в тайне. Любой, у кого есть доступ к нему, может выдать себя за ваше приложение.

Шаг 2: Выберите режим подключения​

Рекомендуемый: Режим WebSocket​

Используйте режим WebSocket, когда Hermes запущен на вашем ноутбуке, рабочей станции или частном сервере. Публичный URL не требуется. Официальный Lark SDK открывает и поддерживает постоянное исходящее WebSocket-соединение с автоматическим переподключением. [code] FEISHU_CONNECTION_MODE=websocket

[/code] Требования: Должен быть установлен Python-пакет websockets. SDK управляет жизненным циклом соединения, поддержанием активности (heartbeats) и автоматическим переподключением. Как это работает: Адаптер запускает WebSocket-клиент Lark SDK в фоновом потоке исполнителя. Входящие события (сообщения, реакции, действия с карточками) отправляются в основной asyncio-цикл. При разрыве соединения SDK автоматически попытается переподключиться.

Опционально: Режим Webhook​

Используйте режим webhook только если Hermes уже работает за достижимой HTTP-точкой. [code] FEISHU_CONNECTION_MODE=webhook

[/code] В режиме webhook Hermes запускает HTTP-сервер (через aiohttp) и обслуживает endpoint Feishu по адресу: [code] /feishu/webhook

[/code] Требования: Должен быть установлен Python-пакет aiohttp. Вы можете настроить адрес и путь вебхук-сервера: [code] FEISHU_WEBHOOK_HOST=127.0.0.1 # по умолчанию: 127.0.0.1 FEISHU_WEBHOOK_PORT=8765 # по умолчанию: 8765 FEISHU_WEBHOOK_PATH=/feishu/webhook # по умолчанию: /feishu/webhook

[/code] Когда Feishu отправляет проверочный запрос на верификацию URL (type: url_verification), webhook отвечает автоматически, так что вы можете завершить настройку подписки в консоли разработчика Feishu.

Шаг 3: Настройте Hermes​

Вариант A: Интерактивная настройка​

[code] hermes gateway setup

[/code] Выберите Feishu / Lark и следуйте подсказкам.

Вариант B: Ручная настройка​

Добавьте следующее в ~/.hermes/.env: [code] FEISHU_APP_ID=cli_xxx FEISHU_APP_SECRET=secret_xxx FEISHU_DOMAIN=feishu FEISHU_CONNECTION_MODE=websocket

# Опционально, но настоятельно рекомендуется
FEISHU_ALLOWED_USERS=ou_xxx,ou_yyy
FEISHU_HOME_CHANNEL=oc_xxx

[/code] FEISHU_DOMAIN принимает: * feishu для Feishu China * lark для Lark international

Шаг 4: Запустите Gateway​

[code] hermes gateway

[/code] Затем отправьте боту сообщение из Feishu/Lark, чтобы убедиться, что соединение активно.

Домашний чат​

Используйте /set-home в чате Feishu/Lark, чтобы отметить его как домашний канал для результатов cron-задач и кросс-платформенных уведомлений. Вы также можете предварительно настроить его: [code] FEISHU_HOME_CHANNEL=oc_xxx

[/code]

Безопасность​

Белый список пользователей​

Для production-использования укажите белый список открытых идентификаторов (open_id) Feishu: [code] FEISHU_ALLOWED_USERS=ou_xxx,ou_yyy

[/code] Если оставить белый список пустым, любой, кто может связаться с ботом, сможет его использовать. В групповых чатах белый список проверяется по полю open_id отправителя перед обработкой сообщения.

Ключ шифрования вебхука​

При работе в режиме webhook укажите ключ шифрования для проверки подписи входящих вебхук-нагрузок: [code] FEISHU_ENCRYPT_KEY=your-encrypt-key

[/code] Этот ключ находится в разделе Event Subscriptions конфигурации вашего приложения Feishu. Когда он установлен, адаптер проверяет каждый вебхук-запрос с помощью алгоритма подписи: [code] SHA256(timestamp + nonce + encrypt_key + body)

[/code] Вычисленный хеш сравнивается с заголовком x-lark-signature с использованием time-safe сравнения. Запросы с недействительной или отсутствующей подписью отклоняются с HTTP 401.

tip В режиме WebSocket проверка подписей выполняется самим SDK, поэтому FEISHU_ENCRYPT_KEY опционален. В режиме webhook настоятельно рекомендуется для production.

Токен верификации​

Дополнительный уровень аутентификации, который проверяет поле token внутри вебхук-нагрузок: [code] FEISHU_VERIFICATION_TOKEN=your-verification-token

[/code] Этот токен также находится в разделе Event Subscriptions вашего приложения Feishu. Когда он установлен, каждая входящая вебхук-нагрузка должна содержать соответствующий token в объекте header. Несовпадающие токены отклоняются с HTTP 401. Оба параметра — FEISHU_ENCRYPT_KEY и FEISHU_VERIFICATION_TOKEN — могут использоваться вместе для обеспечения эшелонированной защиты.

Политика групповых сообщений​

Переменная окружения FEISHU_GROUP_POLICY определяет, как и отвечает ли Hermes в групповых чатах: [code] FEISHU_GROUP_POLICY=allowlist # по умолчанию

[/code] Значение| Поведение ---|--- open| Hermes отвечает на @упоминания от любого пользователя в любой группе. allowlist| Hermes отвечает только на @упоминания от пользователей, указанных в FEISHU_ALLOWED_USERS. disabled| Hermes полностью игнорирует все групповые сообщения. Во всех режимах бот должен быть явно упомянут (@упоминание или @all) в группе, прежде чем сообщение будет обработано. Личные сообщения всегда обходят это ограничение. Установите FEISHU_REQUIRE_MENTION=false, чтобы разрешить Hermes читать весь групповой трафик без необходимости @упоминания: [code] FEISHU_REQUIRE_MENTION=false

[/code] Для початового управления установите require_mention в записи group_rules — см. раздел Управление доступом для каждой группы ниже.

Идентификация бота​

Hermes автоматически определяет open_id и отображаемое имя бота при запуске. Вам нужно задавать их вручную только в случае, когда автоопределение не может связаться с API Feishu или когда ваше приложение использует идентификаторы пользователей с областью видимости тенанта: [code] FEISHU_BOT_OPEN_ID=ou_xxx # только если автоопределение не удалось FEISHU_BOT_USER_ID=xxx # требуется, если приложение использует sender_id_type=user_id FEISHU_BOT_NAME=MyBot # только если автоопределение не удалось

[/code]

Обмен сообщениями между ботами​

По умолчанию Hermes игнорирует сообщения, отправленные другими ботами. Включите обмен между ботами, если хотите, чтобы Hermes участвовал в A2A-оркестрации или получал уведомления от других ботов в той же группе. [code] FEISHU_ALLOW_BOTS=mentions # по умолчанию: none

[/code] Значение| Поведение ---|--- none| Игнорировать все сообщения от других ботов (по умолчанию). mentions| Принимать только когда другой бот упоминает (@mention) Hermes. all| Принимать все сообщения от других ботов. Также настраивается как feishu.allow_bots в config.yaml (переменная окружения имеет приоритет, если заданы оба параметра). Ботов-отправителей не нужно добавлять в FEISHU_ALLOWED_USERS — этот белый список применяется только к отправителям-людям. Предоставьте область application:bot.basic_info:read, чтобы отображать имена ботов-отправителей; без неё боты-отправители всё равно будут корректно маршрутизироваться, но будут отображаться как их open_id.

Интерактивные действия с карточками​

Когда пользователи нажимают кнопки или взаимодействуют с интерактивными карточками, отправленными ботом, адаптер направляет их как синтетические события команды /card: * Нажатия кнопок становятся: /card button {"key": "value", ...} * Нагрузка value из определения карточки включается в формате JSON. * Действия с карточками дедуплицируются с окном в 15 минут для предотвращения двойной обработки.

События действий с карточками отправляются с типом MessageType.COMMAND, поэтому они проходят через обычный конвейер обработки команд. Это также механизм работы подтверждения команд — когда агенту нужно выполнить опасную команду, он отправляет интерактивную карточку с кнопками Allow Once / Session / Always / Deny. Пользователь нажимает кнопку, и колбэк действия с карточкой передаёт решение об одобрении обратно агенту.

Требуемая конфигурация приложения Feishu​

Интерактивные карточки требуют трёх шагов настройки в консоли разработчика Feishu. Отсутствие любого из них приводит к ошибке 200340 при нажатии пользователем кнопок на карточке. 1. Подпишитесь на событие действий с карточками: В разделе Event Subscriptions добавьте card.action.trigger в подписанные события. 2. Включите возможность «Интерактивная карточка»: В App Features > Bot убедитесь, что переключатель Interactive Card включён. Это сообщает Feishu, что ваше приложение может получать колбэки действий с карточками. 3. Настройте URL запроса карточки (только для режима webhook): В App Features > Bot > Message Card Request URL установите URL на тот же endpoint, что и ваш событийный webhook (например, https://your-server:8765/feishu/webhook). В режиме WebSocket это обрабатывается автоматически SDK.

warning Без всех трёх шагов Feishu успешно отправит интерактивные карточки (для отправки требуется только разрешение im:message:send), но нажатие любой кнопки вернёт ошибку 200340. Карточка выглядит работающей — ошибка проявляется только когда пользователь взаимодействует с ней.

Интеллектуальные ответы на комментарии в документах​

Помимо чата, адаптер также может отвечать на @-упоминания, оставленные в документах Feishu/Lark. Когда пользователь оставляет комментарий к документу (выделение текста или комментарий ко всему документу) и упоминает бота (@mention), Hermes читает документ вместе с окружающей нитью комментариев и публикует ответ LLM непосредственно в нити. Работает на основе события drive.notice.comment_add_v1, обработчик: * Загружает содержимое документа и временную шкалу комментариев параллельно (20 сообщений для нитей ко всему документу, 12 для нитей с выделением текста). * Запускает агента с наборами инструментов feishu_doc + feishu_drive, ограниченными данной сессией комментария. * Разбивает ответы на части по 4000 символов и публикует их как ответы в нити. * Кэширует сессии для каждого документа на 1 час с лимитом в 50 сообщений, так что последующие комментарии к тому же документу сохраняют контекст.

Трёхуровневое управление доступом​

Ответы на комментарии в документах работают только по явному разрешению — неявного режима «разрешить всем» нет. Права разрешаются в следующем порядке (первое совпадение выигрывает, для каждого поля): 1. Конкретный документ — правило, ограниченное конкретным токеном документа. 2. Шаблон (wildcard) — правило, соответствующее шаблону документов. 3. Верхний уровень — правило по умолчанию для рабочего пространства.

Для каждого правила доступны две политики: * allowlist — статический список пользователей / тенантов. * pairing — статический список ∪ разрешения, выданные в рантайме. Полезно для развёртывания, где модераторы могут предоставлять доступ в реальном времени.

Правила хранятся в ~/.hermes/feishu_comment_rules.json (парные разрешения в ~/.hermes/feishu_comment_pairing.json) с горячей перезагрузкой по mtime — изменения вступают в силу при следующем событии комментария без перезапуска gateway. CLI: [code] # Просмотр текущих правил и состояния парных разрешений python -m gateway.platforms.feishu_comment_rules status

# Симуляция проверки доступа для конкретного документа + пользователя
python -m gateway.platforms.feishu_comment_rules check <fileType:fileToken> <user_open_id>

# Управление парными разрешениями в рантайме
python -m gateway.platforms.feishu_comment_rules pairing list
python -m gateway.platforms.feishu_comment_rules pairing add <user_open_id>
python -m gateway.platforms.feishu_comment_rules pairing remove <user_open_id>

[/code]

Требуемая конфигурация приложения Feishu​

В дополнение к уже предоставленным разрешениям чата/карточек, добавьте событие drive comment: * Подпишитесь на drive.notice.comment_add_v1 в разделе Event Subscriptions. * Предоставьте области docs:doc:readonly и drive:drive:readonly, чтобы обработчик мог читать содержимое документа.

Поддержка медиа​

Входящие (приём)​

Адаптер принимает и кэширует следующие типы медиа от пользователей: Тип| Расширения| Как обрабатывается ---|---|--- Изображения| .jpg, .jpeg, .png, .gif, .webp, .bmp| Загружаются через API Feishu и кэшируются локально Аудио| .ogg, .mp3, .wav, .m4a, .aac, .flac, .opus, .webm| Загружаются и кэшируются; небольшие текстовые файлы автоматически извлекаются Видео| .mp4, .mov, .avi, .mkv, .webm, .m4v, .3gp| Загружаются и кэшируются как документы Файлы| .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx и другие| Загружаются и кэшируются как документы Медиа из сообщений с форматированным текстом (post), включая встроенные изображения и вложения, также извлекаются и кэшируются. Для небольших текстовых документов (.txt, .md) содержимое файла автоматически внедряется в текст сообщения, чтобы агент мог прочитать его напрямую без использования инструментов.

Исходящие (отправка)​

Метод Что отправляет
send Текстовые или форматированные post-сообщения (автоопределение на основе содержимого markdown)
send_image / send_image_file Загружает изображение в Feishu, затем отправляет как нативный блок изображения (с опциональной подписью)
send_document Загружает файл в API Feishu, затем отправляет как вложение
send_voice Загружает аудиофайл как вложение Feishu
send_video Загружает видео и отправляет как нативное медиасообщение
send_animation GIF-файлы понижаются до вложений (у Feishu нет нативного GIF-блока)
Маршрутизация загрузки файлов автоматическая, на основе расширения:
* .ogg, .opus → загружаются как аудио opus
* .mp4, .mov, .avi, .m4v → загружаются как медиа mp4
* .pdf, .doc(x), .xls(x), .ppt(x) → загружаются с их типом документа
* Всё остальное → загружается как generic stream-файл

Рендеринг Markdown и запасной вариант Post​

Когда исходящий текст содержит форматирование markdown (заголовки, жирный текст, списки, блоки кода, ссылки и т.д.), адаптер автоматически отправляет его как сообщение Feishu post со встроенным тегом md вместо обычного текста. Это обеспечивает расширенный рендеринг в клиенте Feishu. Если API Feishu отклоняет нагрузку post (например, из-за неподдерживаемых конструкций markdown), адаптер автоматически переключается на отправку простого текста с удалённым markdown. Этот двухэтапный механизм гарантирует, что сообщения всегда доставляются. Сообщения без markdown (обычный текст) отправляются как простой тип text.

Реакции статуса обработки​

Пока агент работает, бот показывает реакцию Typing на вашем сообщении. Она исчезает, когда приходит ответ, или заменяется на CrossMark, если обработка завершилась ошибкой. Установите FEISHU_REACTIONS=false, чтобы отключить это.

Защита от всплесков и пакетная обработка​

Адаптер включает подавление (debouncing) для быстрых всплесков сообщений, чтобы не перегружать агента:

Пакетная обработка текста​

Когда пользователь отправляет несколько текстовых сообщений подряд, они объединяются в одно событие перед отправкой: Настройка| Переменная окружения| По умолчанию ---|---|--- Период тишины| HERMES_FEISHU_TEXT_BATCH_DELAY_SECONDS| 0.6с Макс. сообщений в пакете| HERMES_FEISHU_TEXT_BATCH_MAX_MESSAGES| 8 Макс. символов в пакете| HERMES_FEISHU_TEXT_BATCH_MAX_CHARS| 4000

Пакетная обработка медиа​

Несколько медиавложений, отправленных подряд (например, перетаскивание нескольких изображений), объединяются в одно событие: Настройка| Переменная окружения| По умолчанию ---|---|--- Период тишины| HERMES_FEISHU_MEDIA_BATCH_DELAY_SECONDS| 0.8с

Последовательная обработка для каждого чата​

Сообщения в одном чате обрабатываются последовательно (по одному за раз) для обеспечения связности разговора. Каждый чат имеет свою собственную блокировку, поэтому сообщения в разных чатах обрабатываются параллельно.

Ограничение частоты запросов (режим Webhook)​

В режиме webhook адаптер применяет ограничение частоты запросов по IP для защиты от злоупотреблений: * Окно: скользящее окно 60 секунд * Лимит: 120 запросов за окно на тройку (app_id, path, IP) * Лимит отслеживания: до 4096 уникальных ключей (предотвращает неограниченный рост памяти)

Запросы, превышающие лимит, получают HTTP 429 (Too Many Requests).

Отслеживание аномалий вебхука​

Адаптер отслеживает количество последовательных ошибочных ответов для каждого IP-адреса. После 25 последовательных ошибок с одного IP-адреса в течение 6-часового окна в лог записывается предупреждение. Это помогает обнаружить неверно настроенных клиентов или попытки сканирования. Дополнительные защиты вебхука: * Лимит размера тела: максимум 1 МБ * Таймаут чтения тела: 30 секунд * Проверка Content-Type: принимается только application/json

Настройка WebSocket​

При использовании режима websocket вы можете настроить поведение переподключения и ping: [code] platforms: feishu: extra: ws_reconnect_interval: 120 # Секунды между попытками переподключения (по умолчанию: 120) ws_ping_interval: 30 # Секунды между WebSocket-ping (опционально; если не задано — по умолчанию SDK)

[/code] Настройка| Ключ конфигурации| По умолчанию| Описание ---|---|---|--- Интервал переподключения| ws_reconnect_interval| 120с| Сколько ждать между попытками переподключения Интервал ping| ws_ping_interval| (по умолчанию SDK)| Частота поддерживающих ping-запросов WebSocket

Управление доступом для каждой группы​

В дополнение к глобальной FEISHU_GROUP_POLICY, вы можете установить детальные правила для каждой группы в group_rules в config.yaml: [code] platforms: feishu: extra: default_group_policy: "open" # Значение по умолчанию для групп, не указанных в group_rules admins: # Пользователи, которые могут управлять настройками бота - "ou_admin_open_id" group_rules: "oc_group_chat_id_1": policy: "allowlist" # open | allowlist | blacklist | admin_only | disabled allowlist: - "ou_user_open_id_1" - "ou_user_open_id_2" "oc_group_chat_id_2": policy: "admin_only" "oc_group_chat_id_3": policy: "blacklist" blacklist: - "ou_blocked_user" "oc_free_chat": policy: "open" require_mention: false # переопределяет FEISHU_REQUIRE_MENTION для этого чата

[/code] Политика| Описание ---|--- open| Любой участник группы может использовать бота allowlist| Только пользователи из allowlist группы могут использовать бота blacklist| Все, кроме пользователей из blacklist группы, могут использовать бота admin_only| Только пользователи из глобального списка admins могут использовать бота в этой группе disabled| Бот игнорирует все сообщения в этой группе Установите require_mention: false в записи group_rules, чтобы пропустить требование @упоминания для этого конкретного чата. Если не указано, чат наследует глобальное значение FEISHU_REQUIRE_MENTION. Группы, не указанные в group_rules, возвращаются к default_group_policy (по умолчанию равно значению FEISHU_GROUP_POLICY).

Дедупликация​

Входящие сообщения дедуплицируются с использованием идентификаторов сообщений с TTL в 24 часа. Состояние дедупликации сохраняется между перезапусками в ~/.hermes/feishu_seen_message_ids.json. Настройка| Переменная окружения| По умолчанию ---|---|--- Размер кэша| HERMES_FEISHU_DEDUP_CACHE_SIZE| 2048 записей

Все переменные окружения​

Переменная Обязательная По умолчанию Описание
FEISHU_APP_ID ✅ — App ID Feishu/Lark
FEISHU_APP_SECRET ✅ — App Secret Feishu/Lark
FEISHU_DOMAIN — feishu feishu (Китай) или lark (международная)
FEISHU_CONNECTION_MODE — websocket websocket или webhook
FEISHU_ALLOWED_USERS — (пусто) Список open_id через запятую для белого списка пользователей
FEISHU_ALLOW_BOTS — none Принимать сообщения от других ботов: none, mentions или all
FEISHU_REQUIRE_MENTION — true Должны ли групповые сообщения содержать @упоминание бота
FEISHU_HOME_CHANNEL — — ID чата для вывода cron/уведомлений
FEISHU_ENCRYPT_KEY — (пусто) Ключ шифрования для проверки подписи вебхука
FEISHU_VERIFICATION_TOKEN — (пусто) Токен верификации для аутентификации вебхук-нагрузки
FEISHU_GROUP_POLICY — allowlist Политика групповых сообщений: open, allowlist, disabled
FEISHU_BOT_OPEN_ID — (пусто) open_id бота (для обнаружения @упоминаний)
FEISHU_BOT_USER_ID — (пусто) user_id бота (для обнаружения @упоминаний)
FEISHU_BOT_NAME — (пусто) Отображаемое имя бота (для обнаружения @упоминаний)
FEISHU_WEBHOOK_HOST — 127.0.0.1 Адрес привязки вебхук-сервера
FEISHU_WEBHOOK_PORT — 8765 Порт вебхук-сервера
FEISHU_WEBHOOK_PATH — /feishu/webhook Путь endpoint вебхука
HERMES_FEISHU_DEDUP_CACHE_SIZE — 2048 Макс. количество отслеживаемых дедуплицированных ID сообщений
HERMES_FEISHU_TEXT_BATCH_DELAY_SECONDS — 0.6 Период тишины для подавления всплесков текста
HERMES_FEISHU_TEXT_BATCH_MAX_MESSAGES — 8 Макс. сообщений, объединяемых в текстовый пакет
HERMES_FEISHU_TEXT_BATCH_MAX_CHARS — 4000 Макс. символов, объединяемых в текстовый пакет
HERMES_FEISHU_MEDIA_BATCH_DELAY_SECONDS — 0.8 Период тишины для подавления всплесков медиа
Настройки WebSocket и ACL для каждой группы настраиваются через config.yaml в разделе platforms.feishu.extra (см. Настройка WebSocket и Управление доступом для каждой группы выше).

Устранение неполадок​

Проблема Решение
lark-oapi not installed Установите SDK: pip install lark-oapi
websockets not installed; websocket mode unavailable Установите websockets: pip install websockets
aiohttp not installed; webhook mode unavailable Установите aiohttp: pip install aiohttp
FEISHU_APP_ID or FEISHU_APP_SECRET not set Установите обе переменные окружения или настройте через hermes gateway setup
Another local Hermes gateway is already using this Feishu app_id Только один экземпляр Hermes может использовать один app_id одновременно. Сначала остановите другой gateway.
Бот не отвечает в группах Убедитесь, что бот упомянут (@mention), проверьте FEISHU_GROUP_POLICY и проверьте, находится ли отправитель в FEISHU_ALLOWED_USERS, если политика allowlist
Webhook rejected: invalid verification token Убедитесь, что FEISHU_VERIFICATION_TOKEN совпадает с токеном в конфигурации Event Subscriptions вашего приложения Feishu
Webhook rejected: invalid signature Убедитесь, что FEISHU_ENCRYPT_KEY совпадает с ключом шифрования в конфигурации приложения Feishu
Post-сообщения отображаются как обычный текст API Feishu отклонил нагрузку post; это нормальное поведение запасного варианта. Проверьте логи для подробностей.
Изображения/файлы не получены ботом Предоставьте области разрешений im:message и im:resource вашему приложению Feishu
Идентификация бота не определена автоматически Обычно временная сетевая проблема при обращении к endpoint информации о боте Feishu. Временно задайте FEISHU_BOT_OPEN_ID и FEISHU_BOT_NAME вручную.
Сообщения от других ботов по-прежнему игнорируются после включения FEISHU_ALLOW_BOTS Hermes не может идентифицировать себя — задайте FEISHU_BOT_OPEN_ID (и FEISHU_BOT_USER_ID, если ваше приложение использует sender_id_type=user_id).
Боты-отправители отображаются как ou_xxxxxx вместо имени Предоставьте область application:bot.basic_info:read.
Ошибка 200340 при нажатии кнопок подтверждения Включите возможность Interactive Card и настройте Card Request URL в консоли разработчика Feishu. См. Требуемая конфигурация приложения Feishu выше.
Webhook rate limit exceeded Более 120 запросов/мин с одного IP. Обычно это неверная конфигурация или зацикливание.

Набор инструментов​

Feishu / Lark использует предустановку платформы hermes-feishu, которая включает те же основные инструменты, что и Telegram и другие платформы на основе gateway.