Regional platforms

Feishu

OpenClaw подключается к Feishu/Lark (универсальной платформе для совместной работы) через официальный плагин @openclaw/feishu: личные сообщения боту, групповые чаты, потоковые ответы в карточках и инструменты для документов, вики, диска и Bitable в Feishu.

Статус: готово к промышленной эксплуатации для личных сообщений боту и групповых чатов. WebSocket — транспорт событий по умолчанию (публичный URL не требуется); режим webhook доступен по желанию.

Быстрый старт

  • Запустите мастер настройки канала

    bash
    openclaw channels login --channel feishu

    Эта команда устанавливает плагин @openclaw/feishu, если он отсутствует, а затем проводит вас через настройку:

    • Ручная настройка: вставьте App ID и App Secret из Feishu Open Platform (https://open.feishu.cn) или Lark Developer (https://open.larksuite.com).
    • Настройка по QR-коду: отсканируйте QR-код в приложении Feishu, чтобы автоматически создать бота. В этом режиме личные сообщения ограничиваются вашей собственной учётной записью (dmPolicy: "allowlist" с вашим open_id).

    Мастер также запрашивает домен API (Feishu или Lark) и политику групп. Если мобильное приложение Feishu для внутреннего рынка не реагирует на QR-код, повторно запустите настройку и выберите ручной вариант.

  • После завершения настройки перезапустите Gateway, чтобы применить изменения

    bash
    openclaw gateway restart
  • Управление доступом

    Личные сообщения

    Настройте channels.feishu.dmPolicy (по умолчанию: pairing), чтобы определить, кто может отправлять боту личные сообщения:

    Значение Поведение
    "pairing" Неизвестные пользователи получают код сопряжения; подтвердите его через CLI
    "allowlist" Общаться могут только пользователи, перечисленные в allowFrom
    "open" Открытые личные сообщения; для проверки конфигурации allowFrom должен содержать "*". Записи без подстановочного знака по-прежнему ограничивают доступ

    Подтвердить запрос на сопряжение:

    bash
    openclaw pairing list feishuopenclaw pairing approve feishu <CODE>

    Групповые чаты

    Политика групп (channels.feishu.groupPolicy, по умолчанию: allowlist):

    Значение Поведение
    "open" Отвечать на все сообщения в группах
    "allowlist" Отвечать только в группах из groupAllowFrom или явно настроенных в groups.<chat_id>
    "disabled" Отключить все групповые сообщения; явные записи groups.<chat_id> не переопределяют это

    Требование упоминания (channels.feishu.requireMention):

    • По умолчанию требуется @упоминание, кроме случаев, когда действующая политика групп — "open"; при ней значение по умолчанию — false, чтобы сообщения, в которых нельзя использовать упоминания (например, изображения), всё равно доходили до агента.
    • Чтобы переопределить это поведение, явно задайте true или false; переопределение для отдельной группы: channels.feishu.groups.<chat_id>.requireMention.
    • Широковещательные упоминания @all и @_all не считаются упоминаниями бота. Сообщение, в котором одновременно упомянуты @all и непосредственно бот, всё равно считается упоминанием бота.

    Примеры настройки групп

    Разрешить все группы без обязательного @упоминания

    json5
    {  channels: {    feishu: {      groupPolicy: "open", // при "open" requireMention по умолчанию равно false    },  },}

    Разрешить все группы, но по-прежнему требовать @упоминание

    json5
    {  channels: {    feishu: {      groupPolicy: "open",      requireMention: true,    },  },}

    Разрешить только определённые группы

    json5
    {  channels: {    feishu: {      groupPolicy: "allowlist",      // Идентификаторы групп выглядят так: oc_xxx      groupAllowFrom: ["oc_xxx", "oc_yyy"],    },  },}

    В режиме allowlist группу также можно разрешить, добавив явную запись groups.<chat_id>. Явные записи не переопределяют groupPolicy: "disabled". Настройки с подстановочным знаком в groups.* применяются к соответствующим группам, но сами по себе не разрешают эти группы.

    json5
    {  channels: {    feishu: {      groupPolicy: "allowlist",      groups: {        oc_xxx: {          requireMention: false,        },      },    },  },}

    Ограничить отправителей внутри группы

    json5
    {  channels: {    feishu: {      groupPolicy: "allowlist",      groupAllowFrom: ["oc_xxx"],      groups: {        oc_xxx: {          // Значения open_id пользователей выглядят так: ou_xxx          allowFrom: ["ou_user1", "ou_user2"],        },      },    },  },}

    channels.feishu.groupSenderAllowFrom задаёт единый список разрешённых отправителей для всех групп; значение allowFrom для отдельной группы имеет приоритет.

    Получение идентификаторов групп и пользователей

    Идентификаторы групп (chat_id, формат: oc_xxx)

    Откройте группу в Feishu/Lark, нажмите значок меню в правом верхнем углу и перейдите в Settings. Идентификатор группы (chat_id) указан на странице настроек.

    Получение идентификатора группы

    Идентификаторы пользователей (open_id, формат: ou_xxx)

    Запустите Gateway, отправьте боту личное сообщение, затем проверьте журналы:

    bash
    openclaw logs --follow

    Найдите open_id в выводе журнала. Также можно проверить ожидающие запросы на сопряжение:

    bash
    openclaw pairing list feishu

    Распространённые команды

    Команда Описание
    /status Показать состояние бота
    /reset Сбросить текущий сеанс
    /model Показать или сменить модель ИИ

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

    Бот не отвечает в групповых чатах

    1. Убедитесь, что бот добавлен в группу
    2. Убедитесь, что вы @упомянули бота (по умолчанию это обязательно)
    3. Убедитесь, что groupPolicy не равно "disabled"
    4. Проверьте журналы: openclaw logs --follow

    Бот не получает сообщения

    1. Убедитесь, что бот опубликован и одобрен в Feishu Open Platform / Lark Developer
    2. Убедитесь, что подписка на события включает im.message.receive_v1
    3. Убедитесь, что выбрано постоянное подключение (WebSocket)
    4. Убедитесь, что предоставлены все необходимые разрешения
    5. Убедитесь, что Gateway запущен: openclaw gateway status
    6. Проверьте журналы: openclaw logs --follow

    Настройка по QR-коду не работает в мобильном приложении Feishu

    1. Повторно запустите настройку: openclaw channels login --channel feishu
    2. Выберите ручную настройку
    3. В Feishu Open Platform создайте собственное приложение и скопируйте его App ID и App Secret
    4. Вставьте эти учётные данные в мастер настройки

    Утечка App Secret

    1. Сбросьте App Secret в Feishu Open Platform / Lark Developer
    2. Обновите значение в конфигурации
    3. Перезапустите Gateway: openclaw gateway restart

    Расширенная настройка

    Несколько учётных записей

    json5
    {  channels: {    feishu: {      defaultAccount: "main",      accounts: {        main: {          appId: "cli_xxx",          appSecret: "xxx",          name: "Primary bot",          tts: {            providers: {              openai: { voice: "shimmer" },            },          },        },        backup: {          appId: "cli_yyy",          appSecret: "yyy",          name: "Backup bot",          enabled: false,        },      },    },  },}

    defaultAccount определяет, какая учётная запись используется, если исходящие API не указывают accountId. Записи учётных записей наследуют настройки верхнего уровня; большинство ключей верхнего уровня можно переопределить для отдельной учётной записи. accounts.<id>.tts имеет ту же структуру, что и messages.tts, и глубоко объединяется с глобальной конфигурацией TTS, поэтому в конфигурациях Feishu с несколькими ботами можно хранить общие учётные данные провайдера глобально, переопределяя для каждой учётной записи только голос, модель, персону или автоматический режим.

    Ограничения сообщений

    • textChunkLimit — размер фрагмента исходящего текста (по умолчанию: 4000 символов)
    • streaming.chunkMode"length" (по умолчанию) разделяет текст по достижении ограничения; "newline" предпочитает границы строк
    • mediaMaxMb — ограничение на отправку и скачивание медиафайлов (по умолчанию: 30 МБ)

    Потоковая передача

    Feishu/Lark поддерживает потоковые ответы через интерактивные карточки (API потоковой передачи Card Kit). Когда эта функция включена, бот обновляет карточку в реальном времени по мере генерации текста.

    json5
    {  channels: {    feishu: {      streaming: {        mode: "partial", // потоковый вывод в карточке (по умолчанию: "partial")        block: { enabled: true }, // включить потоковую передачу завершённых блоков      },    },  },}

    Задайте streaming.mode: "off", чтобы отправлять полный ответ одним сообщением; renderMode: "raw" (обычный текст вместо карточек) также отключает потоковые карточки. streaming.block.enabled по умолчанию отключён; включайте его только тогда, когда завершённые блоки ассистента нужно отправлять до окончательного ответа. Устаревшее логическое значение streaming и плоские ключи blockStreaming / blockStreamingCoalesce / chunkMode преобразуются в эту вложенную структуру с помощью openclaw doctor --fix.

    Оптимизация квоты

    Сократите количество вызовов API Feishu/Lark с помощью двух необязательных параметров:

    • typingIndicator (по умолчанию true): задайте false, чтобы не отправлять реакции, обозначающие набор текста
    • resolveSenderNames (по умолчанию true): задайте false, чтобы не запрашивать профили отправителей
    json5
    {  channels: {    feishu: {      typingIndicator: false,      resolveSenderNames: false,    },  },}

    Область групповых сеансов и тематические ветки

    channels.feishu.groupSessionScope (на верхнем уровне, для отдельной учётной записи или группы) определяет, как групповые сообщения сопоставляются с сеансами агента:

    Значение Сеанс
    "group" (по умолчанию) Один сеанс на групповой чат
    "group_sender" Один сеанс на сочетание группы и отправителя
    "group_topic" Один сеанс на тематическую ветку; при невозможности используется сеанс группы
    "group_topic_sender" Один сеанс на сочетание темы и отправителя; при невозможности используется сочетание группы и отправителя

    Для тематических областей встроенные тематические группы Feishu/Lark используют событие thread_id (omt_*) как канонический ключ тематического сеанса. Если в исходном событии встроенной темы отсутствует thread_id, OpenClaw получает его из Feishu перед маршрутизацией запроса. Обычные ответы в группах, которые OpenClaw преобразует в ветки, продолжают использовать идентификатор корневого сообщения ответа (om_*), чтобы первый и последующие запросы оставались в одном сеансе.

    Задайте replyInThread: "enabled" (на верхнем уровне или для отдельной группы), чтобы ответы бота создавали или продолжали тематическую ветку Feishu вместо ответа в общей ленте. topicSessionMode — устаревший предшественник groupSessionScope; рекомендуется использовать groupSessionScope.

    Инструменты рабочего пространства Feishu

    Плагин включает инструменты агента для документов, чатов, базы знаний, облачного хранилища, разрешений и Bitable в Feishu, а также соответствующие Skills (feishu-doc, feishu-drive, feishu-perm, feishu-wiki). Семейства инструментов управляются параметром channels.feishu.tools:

    Ключ Инструменты По умолчанию
    tools.doc Операции с документами feishu_doc true
    tools.chat Сведения о чатах и запросы участников feishu_chat true
    tools.wiki База знаний feishu_wiki (требуется doc) true
    tools.drive Облачное хранилище feishu_drive true
    tools.perm Управление разрешениями feishu_perm false (конфиденциально)
    tools.scopes Диагностика областей доступа приложения feishu_app_scopes true
    tools.bitable Операции Bitable/Base feishu_bitable_* true

    tools.base — псевдоним для tools.bitable; если заданы оба значения, приоритет имеет явно указанное значение bitable. Ограничения для отдельных учётных записей находятся в accounts.<id>.tools.

    Предоставьте drive:drive.metadata:readonly для прямого поиска feishu_drive info за пределами корневого каталога, если у приложения ещё нет полной области доступа drive:drive. При отсутствии обеих областей доступа info сохраняет возможность прежнего поиска в корневом каталоге через drive:drive:readonly.

    Сеансы ACP

    Feishu/Lark поддерживает ACP для личных сообщений и сообщений в ветках групповых чатов. ACP в Feishu/Lark управляется текстовыми командами — встроенных меню команд с косой чертой нет, поэтому отправляйте сообщения /acp ... непосредственно в беседе.

    Постоянная привязка ACP

    json5
    {  agents: {    list: [      {        id: "codex",        runtime: {          type: "acp",          acp: {            agent: "codex",            backend: "acpx",            mode: "persistent",            cwd: "/workspace/openclaw",          },        },      },    ],  },  bindings: [    {      type: "acp",      agentId: "codex",      match: {        channel: "feishu",        accountId: "default",        peer: { kind: "direct", id: "ou_1234567890" },      },    },    {      type: "acp",      agentId: "codex",      match: {        channel: "feishu",        accountId: "default",        peer: { kind: "group", id: "oc_group_chat:topic:om_topic_root" },      },      acp: { label: "codex-feishu-topic" },    },  ],}

    Запуск ACP из чата

    В личном сообщении или ветке Feishu/Lark:

    text
    /acp spawn codex --thread here

    --thread here работает для личных сообщений и сообщений в ветках Feishu/Lark. Последующие сообщения в привязанной беседе направляются непосредственно в этот сеанс ACP.

    Маршрутизация между несколькими агентами

    Используйте bindings, чтобы направлять личные сообщения или группы Feishu/Lark разным агентам.

    json5
    {  agents: {    list: [      { id: "main" },      { id: "agent-a", workspace: "/home/user/agent-a" },      { id: "agent-b", workspace: "/home/user/agent-b" },    ],  },  bindings: [    {      agentId: "agent-a",      match: {        channel: "feishu",        peer: { kind: "direct", id: "ou_xxx" },      },    },    {      agentId: "agent-b",      match: {        channel: "feishu",        peer: { kind: "group", id: "oc_zzz" },      },    },  ],}

    Поля маршрутизации:

    • match.channel: "feishu"
    • match.peer.kind: "direct" (личное сообщение) или "group" (групповой чат)
    • match.peer.id: Open ID пользователя (ou_xxx) или идентификатор группы (oc_xxx)

    Советы по поиску см. в разделе Получение идентификаторов группы и пользователя.

    Изоляция агентов по пользователям (динамическое создание агентов)

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

    • Независимый каталог рабочего пространства
    • Отдельные USER.md / SOUL.md / MEMORY.md
    • Личную историю бесед
    • Изолированные навыки и состояние

    Это необходимо для общедоступных ботов, если каждому пользователю требуется собственный персональный ИИ-помощник.

    Быстрая настройка

    json5
    {  channels: {    feishu: {      dmPolicy: "open",      allowFrom: ["*"],      dynamicAgentCreation: {        enabled: true,        workspaceTemplate: "~/.openclaw/workspace-{agentId}",        agentDirTemplate: "~/.openclaw/agents/{agentId}/agent",      },    },  },  session: {    // Важно: делает личные сообщения каждого пользователя его «основным сеансом»    // Автоматически загружает USER.md / SOUL.md / MEMORY.md    // Для более строгой изоляции используйте вместо этого "per-channel-peer"    dmScope: "main",  },}

    Как это работает

    Когда новый пользователь отправляет первое личное сообщение:

    1. Канал создаёт уникальный agentId: feishu-{user_open_id} для учётной записи по умолчанию либо ограниченный дайджест идентификатора с префиксом учётной записи для именованной учётной записи
    2. Создаёт новое рабочее пространство по пути workspaceTemplate
    3. Регистрирует агента и создаёт привязку для этого пользователя
    4. При первом обращении вспомогательный компонент рабочего пространства обеспечивает наличие файлов начальной настройки (AGENTS.md, SOUL.md, USER.md и т. д.)
    5. Направляет все последующие сообщения этого пользователя его выделенному агенту

    Параметры конфигурации

    Настройка Описание По умолчанию
    channels.feishu.dynamicAgentCreation.enabled Включить автоматическое создание агентов для пользователей false
    channels.feishu.dynamicAgentCreation.workspaceTemplate Шаблон пути для рабочих пространств динамических агентов ~/.openclaw/workspace-{agentId}
    channels.feishu.dynamicAgentCreation.agentDirTemplate Шаблон имени каталога агента ~/.openclaw/agents/{agentId}/agent
    channels.feishu.dynamicAgentCreation.maxAgents Максимальное число создаваемых динамических агентов без ограничений

    Переменные шаблона:

    • {agentId} — созданный идентификатор агента (например, feishu-ou_xxxxxx или feishu-support-<identity_digest>)
    • {userId} — Feishu open_id отправителя (например, ou_xxxxxx)

    Область действия сеанса

    session.dmScope определяет, как личные сообщения сопоставляются с сеансами агентов. Это глобальная настройка, влияющая на все каналы.

    Значение Поведение Оптимально для
    "main" Личные сообщения каждого пользователя сопоставляются с основным сеансом его агента Однопользовательские боты, где требуется автоматическая загрузка USER.md / SOUL.md
    "per-peer" Каждый собеседник получает отдельный сеанс независимо от канала Изоляция только по идентификатору отправителя
    "per-channel-peer" Каждая комбинация (канал + пользователь) получает отдельный сеанс Общедоступные многопользовательские боты, которым нужна более строгая изоляция
    "per-account-channel-peer" Каждая комбинация (учётная запись + канал + пользователь) получает отдельный сеанс Боты с несколькими учётными записями, которым нужна изоляция сеансов на уровне учётных записей

    Компромисс: использование "main" включает автоматическую загрузку файлов начальной настройки (USER.md, SOUL.md, MEMORY.md), но при этом все личные сообщения во всех каналах используют один и тот же шаблон ключей сеанса. Для общедоступных многопользовательских ботов, где изоляция важнее автоматической загрузки файлов начальной настройки, рассмотрите "per-channel-peer" и управляйте файлами начальной настройки вручную.

    Типичное многопользовательское развёртывание

    json5
    {  channels: {    feishu: {      appId: "cli_xxx",      appSecret: "xxx",      dmPolicy: "open",      allowFrom: ["*"],      groupPolicy: "open",      requireMention: true,      dynamicAgentCreation: {        enabled: true,        workspaceTemplate: "~/.openclaw/workspace-{agentId}",        agentDirTemplate: "~/.openclaw/agents/{agentId}/agent",      },    },  },  session: {    // Выберите dmScope в соответствии с требованиями к изоляции:    // "main" для автоматической загрузки начальной настройки, "per-channel-peer" для более строгой изоляции    dmScope: "main",  },  bindings: [], // Пусто — динамические агенты привязываются автоматически}

    Проверка

    Проверьте журналы Gateway, чтобы убедиться, что динамическое создание работает:

    text
    feishu: создание динамического агента "feishu-ou_xxxxxx" для пользователя ou_xxxxxx  рабочее пространство: /home/user/.openclaw/workspace-feishu-ou_xxxxxx  каталог агента: /home/user/.openclaw/agents/feishu-ou_xxxxxx/agent

    Выведите список всех созданных рабочих пространств:

    bash
    ls -la ~/.openclaw/workspace-*

    Примечания

    • Изоляция рабочих пространств: каждый пользователь получает собственный каталог рабочего пространства и экземпляр агента. В рамках обычного обмена сообщениями пользователи не могут видеть историю бесед или файлы друг друга.
    • Граница безопасности: это механизм изоляции контекста сообщений, а не граница безопасности между недоверенными совладельцами среды. Процесс агента и среда хоста являются общими.
    • Запись конфигурации должна оставаться включённой: динамическое создание агентов записывает агентов и привязки в конфигурацию; оно пропускается, когда channels.feishu.configWrites имеет значение false (по умолчанию включено).
    • bindings должен быть пустым: динамические агенты автоматически регистрируют собственные привязки
    • Путь обновления: существующие ручные привязки продолжают работать вместе с динамическими агентами
    • session.dmScope является глобальным: это влияет на все каналы, а не только на Feishu

    Справочник по конфигурации

    Полная конфигурация: Конфигурация Gateway

    Настройка Описание По умолчанию
    channels.feishu.enabled Включить или отключить канал true
    channels.feishu.domain Домен API (feishu, lark или базовый URL https://) feishu
    channels.feishu.connectionMode Транспорт событий (websocket или webhook) websocket
    channels.feishu.defaultAccount Учётная запись по умолчанию для исходящей маршрутизации default
    channels.feishu.verificationToken Обязательно для режима Webhook -
    channels.feishu.encryptKey Обязательно для режима Webhook -
    channels.feishu.webhookPath Путь маршрута Webhook /feishu/events
    channels.feishu.webhookHost Хост привязки Webhook 127.0.0.1
    channels.feishu.webhookPort Порт привязки Webhook 3000
    channels.feishu.accounts.<id>.appId Идентификатор приложения -
    channels.feishu.accounts.<id>.appSecret Секрет приложения -
    channels.feishu.accounts.<id>.domain Переопределение домена для отдельной учётной записи feishu
    channels.feishu.accounts.<id>.tts Переопределение TTS для отдельной учётной записи messages.tts
    channels.feishu.dmPolicy Политика личных сообщений (pairing, allowlist, open) pairing
    channels.feishu.allowFrom Список разрешённых отправителей личных сообщений (список open_id) -
    channels.feishu.groupPolicy Политика групп (open, allowlist, disabled) allowlist
    channels.feishu.groupAllowFrom Список разрешённых групп -
    channels.feishu.groupSenderAllowFrom Список разрешённых отправителей, применяемый ко всем группам -
    channels.feishu.requireMention Требовать @упоминание в группах true (false при политике open)
    channels.feishu.groups.<chat_id>.requireMention Переопределение требования @упоминания для отдельной группы; явно указанные идентификаторы также разрешают группу в режиме списка разрешённых наследуется
    channels.feishu.groups.<chat_id>.enabled Включить или отключить определённую группу true
    channels.feishu.groups.<chat_id>.allowFrom Список разрешённых отправителей для отдельной группы (переопределяет groupSenderAllowFrom) -
    channels.feishu.groupSessionScope Сопоставление групповых сеансов (group, group_sender, group_topic, group_topic_sender) group
    channels.feishu.replyInThread Ответы бота создают или продолжают ветки тем (disabled, enabled) disabled
    channels.feishu.reactionNotifications События входящих реакций (off, own, all) own
    channels.feishu.dynamicAgentCreation.enabled Включить автоматическое создание агента для каждого пользователя false
    channels.feishu.dynamicAgentCreation.workspaceTemplate Шаблон пути для рабочих пространств динамических агентов ~/.openclaw/workspace-{agentId}
    channels.feishu.dynamicAgentCreation.agentDirTemplate Шаблон имени каталога агента ~/.openclaw/agents/{agentId}/agent
    channels.feishu.dynamicAgentCreation.maxAgents Максимальное количество создаваемых динамических агентов без ограничений
    channels.feishu.textChunkLimit Размер фрагмента сообщения 4000
    channels.feishu.streaming.chunkMode Разделение на фрагменты (length или newline) length
    channels.feishu.mediaMaxMb Ограничение размера медиафайлов 30
    channels.feishu.renderMode Отображение ответов (auto, raw, card) auto
    channels.feishu.streaming.mode Потоковый вывод карточек (partial или off) partial
    channels.feishu.streaming.block.enabled Потоковая передача ответов завершёнными блоками false
    channels.feishu.typingIndicator Отправлять реакции, указывающие на набор текста true
    channels.feishu.resolveSenderNames Разрешать отображаемые имена отправителей true
    channels.feishu.configWrites Разрешить каналу инициировать запись конфигурации (необходимо для динамических агентов) true
    channels.feishu.tools.doc Включить инструменты для работы с документами true
    channels.feishu.tools.chat Включить инструменты сведений о чатах true
    channels.feishu.tools.wiki Включить инструменты базы знаний (требуется doc) true
    channels.feishu.tools.drive Включить инструменты облачного хранилища true
    channels.feishu.tools.perm Включить инструменты управления разрешениями false
    channels.feishu.tools.scopes Включить инструмент диагностики областей доступа приложения true
    channels.feishu.tools.bitable Включить инструменты Bitable/Base true
    channels.feishu.tools.base Псевдоним для channels.feishu.tools.bitable; если заданы оба параметра, приоритет имеет явно заданный bitable true
    channels.feishu.accounts.<id>.tools.bitable Управление доступностью инструментов Bitable/Base для отдельной учётной записи наследуется
    channels.feishu.accounts.<id>.tools.base Псевдоним tools.bitable для отдельной учётной записи наследуется

    Поддерживаемые типы сообщений

    Получение

    • ✅ Текст
    • ✅ Форматированный текст (публикация)
    • ✅ Изображения
    • ✅ Файлы
    • ✅ Аудио
    • ✅ Видео и другие медиафайлы
    • ✅ Стикеры

    Входящие аудиосообщения Feishu/Lark нормализуются как заполнители медиафайлов, а не как необработанный JSON file_key. Если настроен tools.media.audio, OpenClaw загружает ресурс голосового сообщения и запускает общую транскрипцию аудио перед ходом агента, поэтому агент получает текстовую расшифровку речи. Если Feishu включает текст расшифровки непосредственно в полезную нагрузку аудио, он используется без дополнительного вызова ASR. Если поставщик транскрипции аудио отсутствует, агент всё равно получает заполнитель <media:audio> вместе с сохранённым вложением, а не необработанную полезную нагрузку ресурса Feishu.

    Отправка

    • ✅ Текст
    • ✅ Изображения
    • ✅ Файлы
    • ✅ Аудио
    • ✅ Видео и другие медиафайлы
    • ✅ Интерактивные карточки (включая потоковые обновления)
    • ⚠️ Форматированный текст (форматирование в стиле публикации; полные возможности создания контента Feishu/Lark не поддерживаются)

    Нативные аудиосообщения Feishu/Lark используют тип сообщений Feishu audio и требуют загрузки медиафайлов Ogg/Opus (file_type: "opus"). Существующие медиафайлы .opus и .ogg отправляются напрямую как нативное аудио. MP3/WAV/M4A и другие вероятные аудиоформаты перекодируются в Ogg/Opus с частотой 48 кГц с помощью ffmpeg только тогда, когда в ответе запрошена голосовая доставка (audioAsVoice / asVoice инструмента сообщений, включая ответы TTS в виде голосовых сообщений). Обычные вложения MP3 остаются обычными файлами. Если ffmpeg отсутствует или преобразование завершается с ошибкой, OpenClaw использует файловое вложение и записывает причину в журнал.

    Ветки и ответы

    • ✅ Встроенные ответы
    • ✅ Ответы в ветках
    • ✅ Ответы с медиафайлами сохраняют привязку к ветке при ответе на сообщение в ветке

    Маршрутизация сеансов групп по темам описана в разделе Область группового сеанса и ветки тем.

    Связанные материалы

    Was this useful?
    On this page

    On this page