Feishu/Lark est une plateforme de collaboration tout-en-un où les équipes discutent, partagent des documents, gèrent des calendriers et travaillent ensemble.
Statut : prêt pour la production pour les DMs de bot + discussions de groupe. WebSocket est le mode par défaut ; le mode webhook est facultatif.
bash openclaw channels login --channel feishu Choisissez la configuration manuelle pour coller un App ID et un App Secret depuis la plateforme ouverte Feishu, ou choisissez la configuration QR pour créer un bot automatiquement. Si l’application mobile Feishu domestique ne réagit pas au code QR, relancez la configuration et choisissez la configuration manuelle.
Une fois la configuration terminée, redémarrez la passerelle pour appliquer les modifications
Configurez dmPolicy pour contrôler qui peut envoyer un DM au bot :
"pairing" - les utilisateurs inconnus reçoivent un code d’appariement ; approuvez via le CLI
"allowlist" - seuls les utilisateurs listés dans allowFrom peuvent chatter (par défaut : seul le propriétaire du bot)
"open" - autoriser les DMs publics uniquement lorsque allowFrom inclut "*" ; avec des entrées restrictives, seuls les utilisateurs correspondants peuvent chatter
"disabled" - désactiver tous les DMs
Approuver une demande d’appariement :
Fenêtre de terminal
openclawpairinglistfeishu
openclawpairingapprovefeishu
### Discussions de groupe
**Stratégie de groupe** (`channels.feishu.groupPolicy`) :
| `"open"` | Répondre à tous les messages dans les groupes |
| `"allowlist"` | Répondre uniquement aux groupes dans `groupAllowFrom` ou explicitement configurés sous `groups.
| |”disabled” | Désactiver tous les messages de groupe ; les entrées explicitesgroups.
` ne remplacent pas cela |
Par défaut : allowlist
Exigence de mention (channels.feishu.requireMention) :
true - exiger une @mention (par défaut)
false - répondre sans @mention
Remplacement par groupe : `channels.feishu.groups.
.requireMention`
Les @all et @_all de diffusion uniquement ne sont pas traités comme des mentions de bot. Un message qui mentionne à la fois @all et le bot directement compte toujours comme une mention de bot.
En mode allowlist, vous pouvez également admettre un groupe en ajoutant une entrée `groups.
explicite. Les entrées explicites ne remplacent pasgroupPolicy: “disabled”. Les valeurs par défaut avec caractères génériques sous groups.*` configurent les groupes correspondants, mais ils n’admettent pas les groupes par eux-mêmes.
Ouvrez le groupe dans Feishu/Lark, cliquez sur l’icône de menu dans le coin supérieur droit et allez dans Paramètres. L’ID de groupe (chat_id) est répertorié sur la page des paramètres.
defaultAccount contrôle quel compte est utilisé lorsque les API sortantes ne spécifient pas accountId.
`accounts.
.ttsutilise la même structure quemessages.tts` et fusionne en profondeur avec
la configuration TTS globale, ce qui permet aux configurations Feishu multi-bots de conserver des identifiants de fournisseur partagés
globalement tout en remplaçant uniquement la voix, le model, la persona ou le mode automatique
par compte.
Feishu/Lark prend en charge les réponses en streaming via des cartes interactives. Lorsqu’il est activé, le bot met à jour la carte en temps réel pendant qu’il génère le texte.
blockStreaming: true, // opt into completed-block streaming
},
},
}
Définissez streaming: false pour envoyer la réponse complète en un seul message. blockStreaming est désactivé par défaut ; activez-le uniquement lorsque vous souhaitez que les blocs d’assistant terminés soient envoyés avant la réponse finale.
Feishu/Lark prend en charge l’ACP pour les DMs et les messages de fil de groupe. L’ACP Feishu/Lark est basée sur des commandes textuelles — il n’y a pas de menus de commandes slash natifs, utilisez donc les messages /acp ... directement dans la conversation.
--thread here fonctionne pour les DMs et les messages de fil Feishu/Lark. Les messages de suivi dans la conversation liée sont acheminés directement vers cette session ACP.
Les messages audio entrants Feishu/Lark sont normalisés sous forme de substituants média au lieu de JSON brut file_key. Lorsque tools.media.audio est configuré, OpenClaw télécharge la ressource de note vocale et exécute la transcription audio partagée avant le tour de l’agent, afin que l’agent reçoive la transcription parlée. Si Feishu inclut directement le texte de la transcription dans la charge utile audio, ce texte est utilisé sans nouvel appel ASR. Sans fournisseur de transcription audio, l’agent reçoit toujours un substituant `
` ainsi que la pièce jointe sauvegardée, et non la charge utile de ressource brute Feishu.
✅ Cartes interactives (y compris les mises à jour en streaming)
⚠️ Texte enrichi (formatage de style publication ; ne prend pas en charge toutes les capacités d’édition Feishu/Lark)
Les bulles audio natives Feishu/Lark utilisent le type de message Feishu audio et nécessitent un média de téléchargement Ogg/Opus (file_type: "opus"). Les médias .opus et .ogg existants sont envoyés directement sous forme d’audio natif. Les MP3/WAV/M4A et autres formats audio probables sont transcodés en Ogg/Opus 48kHz avec ffmpeg uniquement lorsque la réponse demande une livraison vocale (audioAsVoice / outil de message asVoice, y compris les réponses de notes vocales TTS). Les pièces jointes MP3 ordinaires restent des fichiers normaux. Si ffmpeg est manquant ou si la conversion échoue, OpenClaw revient à une pièce jointe de fichier et consigne la raison.
✅ Les réponses média restent conscientes du fil lors d’une réponse à un message de fil
Pour groupSessionScope: "group_topic" et "group_topic_sender", les groupes de sujets natifs Feishu/Lark utilisent l’événement thread_id (omt_*) comme clé de session de sujet canonique. Si un événement de démarrage de sujet natif omet thread_id, OpenClaw le complète à partir de Feishu avant d’acheminer le tour. Les réponses de groupe normales que OpenClaw transforme en fils de discussion continuent d’utiliser l’ID du message racine de réponse (om_*) afin que le premier tour et les tours suivants restent dans la même session.