Настройка Feishu / Lark
VibeOS интегрируется с Feishu и Lark в качестве полнофункционального бота. После подключения вы можете общаться с агентом в личных сообщениях или групповых чатах, получать результаты cron-задач в домашнем чате, а также отправлять текст, изображения, аудио и файлы через стандартный шлюз.
Интеграция поддерживает оба режима подключения:
websocket— рекомендуется; VibeOS открывает исходящее соединение, и вам не нужен публичный webhook-эндпоинтwebhook— полезен, когда вы хотите, чтобы Feishu/Lark отправлял события в ваш шлюз через HTTP
Как работает VibeOS
| Контекст | Поведение |
|---|---|
| Личные сообщения | VibeOS отвечает на каждое сообщение. |
| Групповые чаты | VibeOS отвечает только при упоминании бота в чате. |
| Общие групповые чаты | По умолчанию история сессии изолирована для каждого пользователя внутри общего чата. |
Это поведение общего чата управляется через config.yaml:
group_sessions_per_user: true
Установите значение false, только если вы явно хотите один общий разговор на чат.
Шаг 1: Создание приложения Feishu / Lark
Рекомендуемый способ: Создание по QR-коду (одна команда)
vibeos gateway setup
Выберите Feishu / Lark и отсканируйте QR-код мобильным приложением Feishu или Lark. Vibeos автоматически создаст приложение-бота с правильными разрешениями и сохранит учётные данные.
Альтернатива: Ручная настройка
Если создание по QR-коду недоступно, мастер переключится на ручной ввод:
- Откройте консоль разработчика Feishu или Lark:
- Feishu: https://open.feishu.cn/
- Lark: https://open.larksuite.com/
- Создайте новое приложение.
- В разделе Credentials & Basic Info скопируйте App ID и App Secret.
- Включите возможность Bot для приложения.
- Запустите
vibeos gateway setup, выберите Feishu / Lark и введите учётные данные по запросу.
Храните App Secret в секрете. Любой, кто им завладеет, сможет выдать себя за ваше приложение.
Настройка разрешений
В консоли разработчика Feishu перейдите в Permission Management и добавьте следующие области. Вы можете импортировать их массово на странице разрешений.
Обязательные разрешения:
| Область | Назначение |
|---|---|
im:message | Получение и чтение сообщений |
im:message:send_as_bot | Отправка сообщений от имени бота |
im:resource | Доступ к изображениям, файлам и аудио, отправленным пользователями |
im:chat | Доступ к метаданным чатов/групп |
im:chat:readonly | Чтение списка чатов и участников |
Рекомендуемые разрешения (для полной функциональности):
| Область | Назначение |
|---|---|
im:message.reactions:readonly | Получение событий реакций-эмодзи |
admin:app.info:readonly | Автоматическое определение идентичности бота для проверки @упоминаний |
contact:user.id:readonly | Разрешение ID пользователей для сопоставления с белым списком |
Настройка событий
В разделе Events and Callbacks:
- Установите режим подключения Long Connection (WebSocket) (рекомендуется) или настройте URL вебхука
- В разделе Event Configuration подпишитесь на:
im.message.receive_v1— обязательно для получения сообщений
Публикация приложения
После настройки разрешений и событий перейдите в Version Management и опубликуйте новую версию приложения. Разрешения вступят в силу только после публикации и утверждения версии (для корпоративных приложений может потребоваться одобрение администратора).
Шаг 2: Выбор режима подключения
Рекомендуемый режим: WebSocket
Используйте режим WebSocket, когда VibeOS работает на вашем ноутбуке, рабочей станции или частном сервере. Публичный URL не требуется. Официальный SDK Lark открывает и поддерживает постоянное исходящее WebSocket-соединение с автоматическим переподключением.
FEISHU_CONNECTION_MODE=websocket
Требования: Пакет Python websockets должен быть установлен. SDK управляет жизненным циклом соединения, поддержанием активности и автоматическим переподключением.
Как это работает: Адаптер запускает WebSocket-клиент SDK Lark в фоновом потоке-исполнителе. Входящие события (сообщения, реакции, действия с карточками) направляются в основной цикл asyncio. При разрыве соединения SDK автоматически попытается переподключиться.
Опциональный режим: Webhook
Используйте режим webhook только в том случае, если VibeOS уже работает за доступным HTTP-эндпоинтом.
FEISHU_CONNECTION_MODE=webhook
В режиме webhook VibeOS запускает HTTP-сервер (через aiohttp) и обслуживает эндпоинт Feishu по адресу:
/feishu/webhook
Требования: Пакет Python aiohttp должен быть установлен.
Вы можете настроить адрес привязки и путь сервера вебхука:
FEISHU_WEBHOOK_HOST=127.0.0.1 # по умолчанию: 127.0.0.1
FEISHU_WEBHOOK_PORT=8765 # по умолчанию: 8765
FEISHU_WEBHOOK_PATH=/feishu/webhook # по умолчанию: /feishu/webhook
Когда Feishu отправляет запрос проверки URL (type: url_verification), вебхук отвечает автоматически, чтобы вы могли завершить настройку подписки в консоли разработчика Feishu. Ответ на проверку ограничен FEISHU_VERIFICATION_TOKEN, если он установлен — запросы проверки с отсутствующим или несовпадающим токеном отклоняются, чтобы неаутентифицированный удалённый клиент не мог доказать контроль над эндпоинтом, повторяя управляемые злоумышленником данные проверки.
Шаг 3: Настройка VibeOS
Вариант A: Интерактивная настройка
vibeos gateway setup
Выберите Feishu / Lark и заполните подсказки.
Вариант B: Ручная настройка
Добавьте следующее в ~/.vibeos/.env:
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
FEISHU_DOMAIN принимает:
feishuдля Feishu (Китай)larkдля Lark (международная версия)
Шаг 4: Запуск шлюза
vibeos gateway
Затем отправьте сообщение боту из Feishu/Lark, чтобы подтвердить, что соединение активно.
Домашний чат
Используйте /set-home в чате Feishu/Lark, чтобы назначить его домашним каналом для результатов cron-задач и кроссплатформенных уведомлений.
Вы также можете предварительно настроить его:
FEISHU_HOME_CHANNEL=oc_xxx
Безопасность
Белый список пользователей
Для производственного использования установите белый список Open ID Feishu:
FEISHU_ALLOWED_USERS=ou_xxx,ou_yyy
Если оставить белый список пустым, любой, кто может связаться с ботом, сможет его использовать. В групповых чатах белый список проверяется по open_id отправителя перед обработкой сообщения.
Ключ шифрования вебхука
При работе в режиме webhook установите ключ шифрования для проверки подписи входящих полезных нагрузок вебхука:
FEISHU_ENCRYPT_KEY=your-encrypt-key
Этот ключ находится в разделе Event Subscriptions конфигурации вашего приложения Feishu. Если он установлен, адаптер проверяет каждый запрос вебхука, используя алгоритм подписи:
SHA256(timestamp + nonce + encrypt_key + body)
Вычисленный хеш сравнивается с заголовком x-lark-signature с использованием сравнения, устойчивого к временным атакам. Запросы с недействительными или отсутствующими подписями отклоняются с HTTP 401.
В режиме WebSocket проверка подписи выполняется самим SDK, поэтому FEISHU_ENCRYPT_KEY необязателен. В режиме webhook он настоятельно рекомендуется для производства.
Токен проверки
Дополнительный уровень аутентификации, который проверяет поле token внутри полезных нагрузок вебхука:
FEISHU_VERIFICATION_TOKEN=your-verification-token
Этот токен также находится в разделе Event Subscriptions вашего приложения Feishu. Если он установлен, каждая входящая полезная нагрузка вебхука должна содержать соответствующий token в своём объекте header. Несовпадающие токены отклоняются с HTTP 401.
Оба параметра, FEISHU_ENCRYPT_KEY и FEISHU_VERIFICATION_TOKEN, могут использоваться вместе для обеспечения многоуровневой защиты.
Политика групповых сообщений
Переменная окружения FEISHU_GROUP_POLICY управляет тем, отвечает ли VibeOS в групповых чатах и как:
FEISHU_GROUP_POLICY=allowlist # по умолчанию
| Значение | Поведение |
|---|---|
open | VibeOS отвечает на @упоминания от любого пользователя в любой группе. |
allowlist | VibeOS отвечает только на @упоминания от пользователей, перечисленных в FEISHU_ALLOWED_USERS. |
disabled | VibeOS полностью игнорирует все групповые сообщения. |
Во всех режимах бот должен быть явно упомянут (через @ или @all) в группе, прежде чем сообщение будет обработано. Личные сообщения всегда обходят это ограничение.
Установите FEISHU_REQUIRE_MENTION=false, чтобы VibeOS читал весь групповой трафик без необходимости @упоминания:
FEISHU_REQUIRE_MENTION=false
Для початового управления установите require_mention в записи group_rules — см. раздел Початовое управление доступом ниже.
Идентификация бота
VibeOS автоматически определяет open_id и отображаемое имя бота при запуске. Вам нужно устанавливать их вручную только в том случае, если автоматическое определение не может связаться с API Feishu или если ваше приложение использует ID пользователей с областью действия арендатора:
FEISHU_BOT_OPEN_ID=ou_xxx # только если автоматическое определение не удалось
FEISHU_BOT_USER_ID=xxx # обязательно, если ваше приложение использует sender_id_type=user_id
FEISHU_BOT_NAME=MyBot # только если автоматическое определение не удалось
Обмен сообщениями между ботами
По умолчанию VibeOS игнорирует сообщения, отправленные другими ботами. Включите обмен сообщениями между ботами, если хотите, чтобы VibeOS участвовал в A2A-оркестрации или получал уведомления от других ботов в той же группе.
FEISHU_ALLOW_BOTS=mentions # по умолчанию: none
| Значение | Поведение |
|---|---|
none | Игнорировать все сообщения от других ботов (по умолчанию). |
mentions | Принимать только при @упоминании VibeOS ботом-пиром. |
all | Принимать все сообщения от ботов-пиров. |
Также настраивается как feishu.allow_bots в config.yaml (переменная окружения имеет приоритет, если установлены оба).
Ботов-пиров не нужно добавлять в FEISHU_ALLOWED_USERS — этот белый список применяется только к отправителям-людям.
Предоставьте область application:bot.basic_info:read, чтобы отображать имена ботов-пиров; без неё боты-пиры всё равно будут маршрутизироваться корректно, но будут отображаться как их open_id.
Интерактивные действия с карточками
Когда пользователи нажимают кнопки или взаимодействуют с интерактивными карточками, отправленными ботом, адаптер направляет их как синтетические события команды /card:
- Нажатия кнопок становятся:
/card button {"key": "value", ...} - Полезная нагрузка
valueиз определения карточки включается в формате JSON. - Действия с карточками дедуплицируются с окном в 15 минут для предотвращения двойной обработки.
Подсказки обновления, управляемые шлюзом, используют нативную карточку Feishu Yes / No вместо возврата к обычным текстовым ответам. Когда vibeos update --gateway требует подтверждения, адаптер записывает выбранный ответ в файл .update_response VibeOS и заменяет карточку встроенным разрешённым состоянием.
События действий с карточками отправляются с MessageType.COMMAND, поэтому они проходят через обычный конвейер обработки команд.
Это также работает для одобрения команд — когда агенту нужно выполнить опасную команду, он отправляет интерактивную карточку с кнопками Allow Once / Session / Always / Deny. Пользователь нажимает кнопку, и обратный вызов действия карточки доставляет решение об одобрении обратно агенту.
Требуемая конфигурация приложения Feishu
Интерактивные карточки требуют трёх шагов настройки в консоли разработчика Feishu. Отсутствие любого из них приводит к ошибке 200340 при нажатии пользователями кнопок на карточках.
-
Подпишитесь на событие действия с карточкой: В разделе Event Subscriptions добавьте
card.action.triggerв подписанные события. -
Включите возможность интерактивных карточек: В разделе App Features > Bot убедитесь, что переключатель Interactive Card включён. Это сообщает Feishu, что ваше приложение может получать обратные вызовы действий с карточками.
-
Настройте URL запроса карточки (только для режима webhook): В разделе App Features > Bot > Message Card Request URL установите URL на тот же эндпоинт, что и ваш вебхук событий (например,
https://your-server:8765/feishu/webhook). В режиме WebSocket это обрабатывается автоматически SDK.
Без всех трёх шагов Feishu будет успешно отправлять интерактивные карточки (для отправки требуется только разрешение im:message:send), но нажатие любой кнопки вернёт ошибку 200340. Карточка кажется работающей — ошибка проявляется только при взаимодействии пользователя с ней.
Интеллектуальные ответы на комментарии в документах
Помимо чата, адаптер также может отвечать на @-упоминания, оставленные в документах Feishu/Lark. Когда пользователь комментирует документ (локальное выделение текста или комментарий ко всему документу) и @упоминает бота, VibeOS читает документ вместе с окружающей веткой комментариев и публикует ответ LLM непосредственно в ветке.
Работает на основе события drive.notice.comment_add_v1. Обработчик:
- Получает содержимое документа и временную шкалу комментариев параллельно (20 сообщений для веток ко всему документу, 12 для веток локального выделения).
- Запускает агента с наборами инструментов
feishu_doc+feishu_drive, ограниченными этой единственной сессией комментария. - Разбивает ответы на части по 4000 символов и публикует их как ответы в ветке.
- Кэширует сессии для каждого документа на 1 час с лимитом в 50 сообщений, чтобы последующие комментарии к тому же документу сохраняли контекст.
Трёхуровневый контроль доступа
Ответы на комментарии в документах работают только по явному разрешению — неявного режима «разрешить всем» нет. Разрешения разрешаются в следующем порядке (первое совпадение выигрывает, для каждого поля):
- Точный документ — правило, ограниченное конкретным токеном документа.
- Wildcard — правило, соответствующее шаблону документов.
- Верхний уровень — правило по умолчанию для рабочего пространства.
Доступны две политики для каждого правила:
allowlist— статический список пользователей / арендаторов.pairing— статический список ∪ хранилище, одобренное во время выполнения. Полезно для поэтапных развёртываний, где модераторы могут предоставлять доступ в реальном времени.
Правила хранятся в ~/.vibeos/feishu_comment_rules.json (разрешения pairing в ~/.vibeos/feishu_comment_pairing.json) с горячей перезагрузкой по mtime — изменения вступают в силу при следующем событии комментария без перезапуска шлюза.
CLI:
# Просмотр текущих правил и состояния pairing
python -m gateway.platforms.feishu_comment_rules status
# Симуляция проверки доступа для конкретного документа + пользователя
python -m gateway.platforms.feishu_comment_rules check <fileType:fileToken> <user_open_id>
# Управление разрешениями pairing во время выполнения
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>
Требуемая конфигурация приложения Feishu
В дополнение к уже предоставленным разрешениям чата/карточек добавьте событие комментария к диску:
- Подпишитесь на
drive.notice.comment_add_v1в разделе Event Subscriptions. - Предоставьте области
docs:doc:readonlyиdrive:drive:readonly, чтобы обработчик мог читать содержимое документа.
События приглашения на собрание
Вы можете пригласить бота VibeOS Feishu/Lark в видеосовещание так же, как приглашаете участника-человека. Когда бот получает событие приглашения на собрание, VibeOS может автоматически запустить шаг агента, который попытается присоединиться к собранию.
Работает на основе события vc.bot.meeting_invited_v1. Поток:
- Пользователь приглашает бота в видеосовещание Feishu/Lark.
- Feishu/Lark отправляет VibeOS событие приглашения на собрание.
- VibeOS извлекает приглашающего, тему собрания и номер собрания.
- Если приглашающий авторизован стандартным белым списком шлюза или политикой pairing, агент получает номер собрания и пытается присоединиться автоматически.
- Если приглашение некорректно или агент не может присоединиться, VibeOS отбрасывает событие или отвечает приглашающему кратким объяснением.
Некорректные приглашения, которые не содержат как приглашающего, так и meeting_no, игнорируются.
Требуемая конфигурация приложения Feishu
В дополнение к уже предоставленным разрешениям чата/карточек добавьте событие приглашения на видеосовещание:
- Подпишитесь на
vc.bot.meeting_invited_v1в разделе Event Subscriptions. - Включите область разрешений Video Conferencing, запрашиваемую консолью разработчика Feishu/Lark для этого события.
- Оставьте
im:messageиim:message:send_as_botвключёнными, чтобы VibeOS мог ответить приглашающему. - Убедитесь, что белый список пользователей шлюза или политика pairing авторизуют приглашающего. Приглашения на собрания не обходят обычные проверки доступа шлюза.
Поддержка медиа
Входящие (получение)
Адаптер получает и кэширует следующие типы медиа от пользователей:
| Тип | Расширения | Как обрабатывается |
|---|---|---|
| Изображения | .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)→ загружаются с типом документа- Всё остальное → загружается как файл общего потока
Рендеринг Markdown и запасной вариант Post
Когда исходящий текст содержит форматирование markdown (заголовки, жирный текст, списки, блоки кода, ссылки и т.д.), адаптер автоматически отправляет его как сообщение Feishu post со встроенным тегом md, а не как обычный текст. Это обеспечивает расширенный рендеринг в клиенте Feishu.
Если API Feishu отклоняет полезную нагрузку post (например, из-за неподдерживаемых конструкций markdown), адаптер автоматически переключается на отправку в виде обычного текста с удалённым markdown. Этот двухэтапный запасной вариант гарантирует, что сообщения всегда доставляются.
Сообщения с обычным текстом (без обнаруженного markdown) отправляются как простой тип сообщения text.
Реакции статуса обработки
Пока агент работает, бот показывает реакцию Typing на ваше сообщение. Она очищается, когда приходит ответ, или заменяется на CrossMark, если обработка не удалась.
Установите FEISHU_REACTIONS=false, чтобы отключить это.
Защита от всплесков и пакетная обработка
Адаптер включает подавление дребезга для быстрых всплесков сообщений, чтобы не перегружать агента:
Пакетная обработка текста
Когда пользователь отправляет несколько текстовых сообщений подряд, они объединяются в одно событие перед отправкой:
| Настройка | Переменная окружения | По умолчанию |
|---|---|---|
| Период тишины | VIBEOS_FEISHU_TEXT_BATCH_DELAY_SECONDS | 0,6 с |
| Макс. сообщений в пакете | VIBEOS_FEISHU_TEXT_BATCH_MAX_MESSAGES | 8 |
| Макс. символов в пакете | VIBEOS_FEISHU_TEXT_BATCH_MAX_CHARS | 4000 |
Пакетная обработка медиа
Несколько вложений медиа, отправленных подряд (например, перетаскивание нескольких изображений), объединяются в одно событие:
| Настройка | Переменная окружения | По умолчанию |
|---|---|---|
| Период тишины | VIBEOS_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 вы можете настроить поведение переподключения и пинга:
platforms:
feishu:
extra:
ws_reconnect_interval: 120 # Секунды между попытками переподключения (по умолчанию: 120)
ws_ping_interval: 30 # Секунды между WebSocket-пингами (опционально; по умолчанию SDK, если не задано)
| Настройка | Ключ конфигурации | По умолчанию | Описание |
|---|---|---|---|
| Интервал переподключения | ws_reconnect_interval | 120 с | Как долго ждать между попытками переподключения |
| Интервал пинга | ws_ping_interval | (по умолчанию SDK) | Частота поддерживающих пингов WebSocket |
Початовое управление доступом
Помимо глобальной FEISHU_GROUP_POLICY, вы можете установить детальные правила для каждого группового чата, используя group_rules в config.yaml:
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 для этого чата
| Политика | Описание |
|---|---|
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).
Дедупликация
Входящие сообщения дедуплицируются с использованием ID сообщений и TTL в 24 часа. Состояние дедупликации сохраняется между перезапусками в ~/.vibeos/feishu_seen_message_ids.json.
| Настройка | Переменная окружения | По умолчанию |
|---|---|---|
| Размер кэша | VIBEOS_FEISHU_DEDUP_CACHE_SIZE | 2048 записей |
Все переменные окружения
| Переменная | Обязательная | По умолчанию | Описание |
|---|---|---|---|
FEISHU_APP_ID | ✅ | — | Feishu/Lark App ID |
FEISHU_APP_SECRET | ✅ | — | Feishu/Lark App Secret |
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 | — | _(пу |