OpenClaw Feishu message types
What the bot receives and sends, sticker keys preserved without a download, voice notes transcribed or placeholdered, native audio bubbles that need Ogg Opus with ffmpeg transcoding on demand, sticker replies limited to received stickers, keyword search over curated sticker sets with its limits, and thread-aware replies
Feishu is one of the richer channels for message types, and the docs are explicit about the edges: stickers can be received and resent but never downloaded, audio arrives as a transcript when a provider is configured, and native voice bubbles need one specific codec. Here is what comes in, what goes out, the sticker rules with their search feature, and threads.
Receiving and sending
- The bot receives text, rich text posts, images, files, audio, video and stickers; a received sticker exposes its reusable file key to the agent as a sticker tag because Feishu and Lark do not support downloading sticker resources, so the key is preserved without fetching an attachment.
- Inbound audio messages are normalised as media placeholders rather than raw file-key JSON: with an audio provider configured, OpenClaw downloads the voice note and runs the shared transcription before the turn so the agent receives the transcript, a transcript Feishu includes in the payload is used without another recognition call, and without a provider the agent still gets an audio placeholder plus the saved attachment.
- The bot sends text, images, files, audio, video, interactive cards including streaming updates, stickers previously received by the same bot when the sticker action is on, and rich text in post-style formatting without the full Feishu authoring capabilities.
- Native audio bubbles use the Feishu audio message type and require Ogg Opus upload media: existing Opus and Ogg files are sent directly, MP3, WAV, M4A and other likely audio formats are transcoded to 48 kHz Ogg Opus with ffmpeg only when the reply requests voice delivery, through the audio-as-voice setting or the message tool's voice flag including text-to-speech voice notes, ordinary MP3 attachments stay regular files, and a missing ffmpeg or a failed conversion falls back to a file attachment with the reason logged.
Only stickers previously received by that bot can be sent.
Sticker replies and search
The sticker action lets the agent resend stickers, enabled under the channel actions or for one account under that account's actions, remembering that an account-level actions object replaces rather than merges with the channel-level one, so any gate you want to keep, such as reactions disabled, must be repeated. You send a sticker to the bot first, then ask it to resend: the message tool uses the sticker action with the received file key, and in multi-account setups the same account ID that received it. Only stickers previously received by that bot can be sent; uploading new stickers, downloading sticker resources and searching the sticker store are not supported. Keyword search adds a curated set: send each sticker to the bot, ask it for the received key, then add keys and your own labels under sticker sets keyed by the bot's app ID directly under the channel block, not inside an account; the selected account can search only the set matching its app ID, changing an account to another bot does not reuse the previous set, and accounts on the same bot share it. Asking for a thumbs-up sticker makes the agent call the sticker-search action with the query and the account, then send a returned file ID with the sticker action on that account, and search is available only when stickers are enabled and the bot has a non-empty set.
Search rules and threads
- Search matches a case-insensitive substring of an explicit keyword, including Chinese labels and emoji, in sticker-key order; it does not infer a sticker's meaning, search Feishu's store or collect received stickers automatically, results include the matching keyword and the reusable file ID, no match gives an empty list, and a truncated flag means entries were omitted by the result limit or the output budget, so you narrow the query.
- The limits are 32 bot sets, 256 stickers per set and one to eight keywords per sticker, keywords trimmed, non-empty and at most 64 Unicode characters, file keys canonical received keys of at most 512 characters and unique within a bot's map, queries non-empty and at most 128 characters, a limit that defaults to five and accepts one to ten, results capped at three kibibytes of JSON, and a removed set simply leaves the search with no separate database or cache created.
- Inline replies and thread replies are supported, and media replies stay thread-aware when replying to a thread message; topic-group session routing lives in the advanced configuration page.
OpenClaw on Feishu is the channel post these types belong to, and OpenClaw Feishu setup how the bot that receives them is connected.
Stickers without a store
Because Feishu never hands over a sticker file, the only stickers a bot can use are the ones people have sent it, which turns the curated set into a small vocabulary you build by hand and label yourself. OpenClaw Telegram media and attachments shows the Telegram sticker path that does download and describe them, and OpenClaw Slack media and attachments the file rules on Slack.
On Diali
Feishu and Lark are not among the channels Diali connects today: WhatsApp, Telegram, Discord, Slack, Mattermost, Matrix, SMS and voice. Hosted OpenClaw on Diali is the assistant and Diali security describes the boundary that applies to each connected channel.
- Sticker keys are kept; sticker files are never fetched.
- Voice bubbles need Ogg Opus; ffmpeg transcodes only for voice delivery.
- Search is a substring over your own labels, not the store.
Stop reading about it, build one
Set up an agent, pick a channel, and have it working inside the app you already keep open.
