Bot Feishu¶
Feishu (Lark) est une plateforme de discussion dâĂ©quipe utilisĂ©e par les entreprises pour la messagerie et la collaboration. Ce plugin connecte OpenClaw Ă un bot Feishu/Lark en utilisant lâabonnement aux Ă©vĂ©nements WebSocket de la plateforme, ce qui permet de recevoir des messages sans exposer dâURL de webhook publique.
Plugin requis¶
Installez le plugin Feishu :
openclaw plugins install @openclaw/feishu
Clonage local (lors dâune exĂ©cution depuis un dĂ©pĂŽt git) :
openclaw plugins install ./extensions/feishu
Démarrage rapide¶
Il existe deux façons dâajouter le canal Feishu :
Méthode 1 : assistant de prise en main (recommandé)¶
Si vous venez dâinstaller OpenClaw, lancez lâassistant :
openclaw onboard
Lâassistant vous guide pour :
- Créer une application Feishu et collecter les identifiants
- Configurer les identifiants de lâapplication dans OpenClaw
- Démarrer la passerelle
â AprĂšs la configuration, vĂ©rifiez lâĂ©tat de la passerelle :
openclaw gateway statusopenclaw logs --follow
Méthode 2 : configuration via la CLI¶
Si vous avez dĂ©jĂ terminĂ© lâinstallation initiale, ajoutez le canal via la CLI :
openclaw channels add
Choisissez Feishu, puis saisissez lâApp ID et lâApp Secret.
â AprĂšs la configuration, gĂ©rez la passerelle :
openclaw gateway statusopenclaw gateway restartopenclaw logs --follow
Ătape 1 : CrĂ©er une application Feishu¶
1. Ouvrir la plateforme Feishu Open Platform¶
Visitez Feishu Open Platform et connectez-vous.
Les tenants Lark (globaux) doivent utiliser https://open.larksuite.com/app et définir domain: "lark" dans la configuration Feishu.
2. Créer une application¶
- Cliquez sur Create enterprise app
- Renseignez le nom et la description de lâapplication
- Choisissez une icĂŽne dâapplication

3. Copier les identifiants¶
Depuis Credentials & Basic Info, copiez :
- App ID (format :
cli_xxx) - App Secret
â Important : conservez lâApp Secret de maniĂšre confidentielle.

4. Configurer les permissions¶
Dans Permissions, cliquez sur Batch import et collez :
{
"scopes": {
"tenant": [
"aily:file:read",
"aily:file:write",
"application:application.app_message_stats.overview:readonly",
"application:application:self_manage",
"application:bot.menu:write",
"contact:user.employee_id:readonly",
"corehr:file:download",
"event:ip_list",
"im:chat.access_event.bot_p2p_chat:read",
"im:chat.members:bot_access",
"im:message",
"im:message.group_at_msg:readonly",
"im:message.p2p_msg:readonly",
"im:message:readonly",
"im:message:send_as_bot",
"im:resource"
],
"user": ["aily:file:read", "aily:file:write", "im:chat.access_event.bot_p2p_chat:read"]
}
}

5. Activer la capacité bot¶
Dans App Capability > Bot :
- Activez la capacité bot
- Définissez le nom du bot

6. Configurer lâabonnement aux Ă©vĂ©nements¶
â ïž Important : avant de configurer lâabonnement aux Ă©vĂ©nements, assurez-vous que :
- Vous avez déjà exécuté
openclaw channels addpour Feishu - La passerelle est en cours dâexĂ©cution (
openclaw gateway status)
Dans Event Subscription :
- Choisissez Use long connection to receive events (WebSocket)
- Ajoutez lâĂ©vĂ©nement :
im.message.receive_v1
â ïž Si la passerelle nâest pas en cours dâexĂ©cution, la configuration de la connexion longue peut Ă©chouer Ă lâenregistrement.

7. Publier lâapplication¶
- Créez une version dans Version Management & Release
- Soumettez-la pour revue et publiez
- Attendez lâapprobation de lâadministrateur (les applications dâentreprise sont gĂ©nĂ©ralement approuvĂ©es automatiquement)
Ătape 2 : Configurer OpenClaw¶
Configuration avec lâassistant (recommandĂ©)¶
openclaw channels add
Choisissez Feishu et collez votre App ID et votre App Secret.
Configuration via le fichier de configuration¶
Modifiez ~/.openclaw/openclaw.json :
{
channels: {
feishu: {
enabled: true,
dmPolicy: "pairing",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
botName: "My AI assistant",
},
},
},
},
}
Configuration via les variables dâenvironnement¶
export FEISHU_APP_ID="cli_xxx"
export FEISHU_APP_SECRET="xxx"
Domaine Lark (global)¶
Si votre tenant est sur Lark (international), définissez le domaine sur lark (ou une chaßne de domaine complÚte). Vous pouvez le définir dans channels.feishu.domain ou par compte (channels.feishu.accounts.<id>.domain).
{
channels: {
feishu: {
domain: "lark",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
},
},
},
},
}
Ătape 3 : DĂ©marrer et tester¶
1. Démarrer la passerelle¶
openclaw gateway
2. Envoyer un message de test¶
Dans Feishu, trouvez votre bot et envoyez un message.
3. Approuver lâappairage¶
Par dĂ©faut, le bot rĂ©pond avec un code dâappairage. Approuvez-le :
openclaw pairing approve feishu <CODE>
AprĂšs lâapprobation, vous pouvez discuter normalement.
Présentation¶
- Canal bot Feishu : bot Feishu géré par la passerelle
- Routage déterministe : les réponses retournent toujours vers Feishu
- Isolation des sessions : les Messages prives partagent une session principale ; les groupes sont isolés
- Connexion WebSocket : connexion longue via le SDK Feishu, aucune URL publique requise
ContrĂŽle dâaccĂšs¶
Messages directs¶
-
Par défaut :
dmPolicy: "pairing"(les utilisateurs inconnus reçoivent un code dâappairage) -
Approuver lâappairage :
bash
openclaw pairing list feishu
openclaw pairing approve feishu <CODE>
- Mode liste dâautorisation : dĂ©finissez
channels.feishu.allowFromavec les Open ID autorisés
Discussions de groupe¶
1. Politique de groupe (channels.feishu.groupPolicy) :
"open"= autoriser tout le monde dans les groupes (par défaut)"allowlist"= autoriser uniquementgroupAllowFrom"disabled"= désactiver les messages de groupe
2. Exigence de mention (channels.feishu.groups.<chat_id>.requireMention) :
true= exiger une mention @ (par défaut)false= répondre sans mention
Exemples de configuration des groupes¶
Autoriser tous les groupes, mention @ requise (par défaut)¶
{
channels: {
feishu: {
groupPolicy: "open",
// Default requireMention: true
},
},
}
Autoriser tous les groupes, sans mention @ requise¶
{
channels: {
feishu: {
groups: {
oc_xxx: { requireMention: false },
},
},
},
}
Autoriser uniquement des utilisateurs spécifiques dans les groupes¶
{
channels: {
feishu: {
groupPolicy: "allowlist",
groupAllowFrom: ["ou_xxx", "ou_yyy"],
},
},
}
Obtenir les identifiants de groupe/utilisateur¶
Identifiants de groupe (chat_id)¶
Les identifiants de groupe ressemblent Ă oc_xxx.
Méthode 1 (recommandée)
- Démarrez la passerelle et mentionnez le bot avec @ dans le groupe
- Exécutez
openclaw logs --followet recherchezchat_id
Méthode 2
Utilisez le dĂ©bogueur de lâAPI Feishu pour lister les discussions de groupe.
Identifiants utilisateur (open_id)¶
Les identifiants utilisateur ressemblent Ă ou_xxx.
Méthode 1 (recommandée)
- Démarrez la passerelle et envoyez un Message prive au bot
- Exécutez
openclaw logs --followet recherchezopen_id
Méthode 2
Consultez les demandes dâappairage pour les Open ID des utilisateurs :
openclaw pairing list feishu
Commandes courantes¶
| Commande | Description |
|---|---|
/status |
Afficher lâĂ©tat du bot |
/reset |
Réinitialiser la session |
/model |
Afficher/changer le modĂšle |
Remarque : Feishu ne prend pas encore en charge les menus de commandes natifs, les commandes doivent donc ĂȘtre envoyĂ©es sous forme de texte.
Commandes de gestion de la passerelle¶
| Commande | Description |
|---|---|
openclaw gateway status |
Afficher lâĂ©tat de la passerelle |
openclaw gateway install |
Installer/démarrer le service de passerelle |
openclaw gateway stop |
ArrĂȘter le service de passerelle |
openclaw gateway restart |
Redémarrer le service de passerelle |
openclaw logs --follow |
Journaux de la passerelle de la queue |
Problemes courants¶
Le bot ne répond pas dans les discussions de groupe¶
- Assurez-vous que le bot est ajouté au groupe
- Assurez-vous de mentionner le bot avec @ (comportement par défaut)
- Vérifiez que
groupPolicynâest pas dĂ©fini sur"disabled" - VĂ©rifiez les journaux :
openclaw logs --follow
Le bot ne reçoit pas de messages¶
- Assurez-vous que lâapplication est publiĂ©e et approuvĂ©e
- Assurez-vous que lâabonnement aux Ă©vĂ©nements inclut
im.message.receive_v1 - Assurez-vous que la connexion longue est activée
- Assurez-vous que les permissions de lâapplication sont complĂštes
- Assurez-vous que la passerelle est en cours dâexĂ©cution :
openclaw gateway status - Vérifiez les journaux :
openclaw logs --follow
Fuite de lâApp Secret¶
- RĂ©initialisez lâApp Secret dans Feishu Open Platform
- Mettez Ă jour lâApp Secret dans votre configuration
- Redémarrez la passerelle
Ăchecs dâenvoi de messages¶
- Assurez-vous que lâapplication dispose de la permission
im:message:send_as_bot - Assurez-vous que lâapplication est publiĂ©e
- Consultez les journaux pour des erreurs détaillées
Configuration avancée¶
Comptes multiples¶
{
channels: {
feishu: {
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
botName: "Primary bot",
},
backup: {
appId: "cli_yyy",
appSecret: "yyy",
botName: "Backup bot",
enabled: false,
},
},
},
},
}
Limites de messages¶
textChunkLimit: taille des segments de texte sortants (par défaut : 2000 caractÚres)mediaMaxMb: limite de téléversement/téléchargement des médias (par défaut : 30 Mo)
Streaming¶
Feishu prend en charge les rĂ©ponses en streaming via des cartes interactives. Lorsquâil est activĂ©, le bot met Ă jour une carte au fur et Ă mesure de la gĂ©nĂ©ration du texte.
{
channels: {
feishu: {
streaming: true, // enable streaming card output (default true)
blockStreaming: true, // enable block-level streaming (default true)
},
},
}
DĂ©finissez streaming: false pour attendre la rĂ©ponse complĂšte avant lâenvoi.
Routage multi-agents¶
Utilisez bindings pour router les Messages prives ou groupes Feishu vers différents agents.
{
agents: {
list: [
{ id: "main" },
{
id: "clawd-fan",
workspace: "/home/user/clawd-fan",
agentDir: "/home/user/.openclaw/agents/clawd-fan/agent",
},
{
id: "clawd-xi",
workspace: "/home/user/clawd-xi",
agentDir: "/home/user/.openclaw/agents/clawd-xi/agent",
},
],
},
bindings: [
{
agentId: "main",
match: {
channel: "feishu",
peer: { kind: "direct", id: "ou_xxx" },
},
},
{
agentId: "clawd-fan",
match: {
channel: "feishu",
peer: { kind: "direct", id: "ou_yyy" },
},
},
{
agentId: "clawd-xi",
match: {
channel: "feishu",
peer: { kind: "group", id: "oc_zzz" },
},
},
],
}
Champs de routage :
match.channel:"feishu"match.peer.kind:"direct"or"group"match.peer.id: Open ID utilisateur (ou_xxx) ou identifiant de groupe (oc_xxx)
Voir Obtenir les identifiants de groupe/utilisateur pour des conseils de recherche.
Référence de configuration¶
Configuration complĂšte : Configuration de la passerelle
Options clés :
| ParamÚtre | Description | Valeur par défaut |
|---|---|---|
channels.feishu.enabled |
Activer/désactiver le canal | true |
channels.feishu.domain |
Domaine API (feishu ou lark) |
feishu |
channels.feishu.accounts.<id>.appId |
App ID | - |
channels.feishu.accounts.<id>.appSecret |
App Secret | - |
channels.feishu.accounts.<id>.domain |
Remplacement du domaine API par compte | feishu |
channels.feishu.dmPolicy |
Politique de DM | pairing |
channels.feishu.allowFrom |
Liste dâautorisation DM (liste dâopen_id) | - |
channels.feishu.groupPolicy |
Politique de groupe | open |
channels.feishu.groupAllowFrom |
Liste dâautorisation de groupe | - |
channels.feishu.groups.<chat_id>.requireMention |
Exiger @mention | true |
channels.feishu.groups.<chat_id>.enabled |
Activer les groupes | true |
channels.feishu.textChunkLimit |
Taille des segments de message | 2000 |
channels.feishu.mediaMaxMb |
Limite de taille des médias | 30 |
channels.feishu.streaming |
Activer la sortie de cartes en streaming | true |
channels.feishu.blockStreaming |
Activer le streaming par blocs | true |
Référence dmPolicy¶
| Valeur | Comportement |
|---|---|
"pairing" |
Par dĂ©faut. Les utilisateurs inconnus reçoivent un code dâappairage ; approbation requise |
"allowlist" |
Seuls les utilisateurs dans allowFrom peuvent discuter |
"open" |
Autoriser tous les utilisateurs (nécessite "*" dans allowFrom) |
"disabled" |
Désactiver les DMs |
Types de messages pris en charge¶
Réception¶
- â Texte
- â Texte enrichi (post)
- â Images
- â Fichiers
- â Audio
- â VidĂ©o
- â Autocollants
Envoi¶
- â Texte
- â Images
- â Fichiers
- â Audio
- â ïž Texte enrichi (prise en charge partielle)