Bot Feishu
Feishu (Lark) e una piattaforma di team chat usata dalle aziende per messaggistica e collaborazione. Questo plugin connette OpenClaw a un bot Feishu/Lark usando la sottoscrizione eventi WebSocket della piattaforma, cosi i messaggi possono essere ricevuti senza esporre un URL webhook pubblico.
Plugin incluso
Feishu e incluso nelle release attuali di OpenClaw, quindi non e necessaria unāinstallazione separata del plugin.
Se stai usando una build precedente o unāinstallazione personalizzata che non include Feishu, installalo manualmente:
openclaw plugins install @openclaw/feishu
Avvio rapido
Ci sono due modi per aggiungere il canale Feishu:
Metodo 1: procedura guidata di onboarding (consigliato)
Se hai appena installato OpenClaw, avvia la procedura guidata:
openclaw onboard
La procedura ti guida attraverso:
- Creazione di unāapp Feishu e raccolta delle credenziali
- Configurazione delle credenziali dellāapp in OpenClaw
- Avvio del gateway
Nota: Dopo la configurazione, controlla lo stato del gateway:
openclaw gateway statusopenclaw logs --follow
Metodo 2: setup via CLI
Se hai gia completato lāinstallazione iniziale, aggiungi il canale via CLI:
openclaw channels add
Scegli Feishu, poi inserisci App ID e App Secret.
Nota: Dopo la configurazione, gestisci il gateway:
openclaw gateway statusopenclaw gateway restartopenclaw logs --follow
Step 1: Crea unāapp Feishu
1. Apri la Feishu Open Platform
Visita Feishu Open Platform e accedi.
I tenant Lark (globali) dovrebbero usare https://open.larksuite.com/app e impostare domain: "lark" nella configurazione Feishu.
2. Crea unāapp
- Clicca Create enterprise app
- Compila nome + descrizione dellāapp
- Scegli unāicona per lāapp

3. Copia le credenziali
Da Credentials & Basic Info, copia:
- App ID (formato:
cli_xxx) - App Secret
Attenzione: mantieni lāApp Secret privato.

4. Configura i permessi
Su Permissions, clicca Batch import e incolla:
{
"scopes": {
"tenant": [
"aily:file:read",
"aily:file:write",
"application:application.app_message_stats.overview:readonly",
"application:application:self_manage",
"application:bot.menu:write",
"cardkit:card:read",
"cardkit:card: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. Abilita la funzionalita bot
In App Capability > Bot:
- Abilita la funzionalita bot
- Imposta il nome del bot

6. Configura la sottoscrizione eventi
Attenzione: prima di impostare la sottoscrizione eventi, assicurati che:
- Tu abbia gia eseguito
openclaw channels addper Feishu - Il gateway sia in esecuzione (
openclaw gateway status)
In Event Subscription:
- Scegli Use long connection to receive events (WebSocket)
- Aggiungi lāevento:
im.message.receive_v1
Attenzione: Se il gateway non e in esecuzione, il setup della connessione persistente potrebbe non riuscire a salvare.

7. Pubblica lāapp
- Crea una versione in Version Management & Release
- Invia per la revisione e pubblica
- Attendi lāapprovazione dellāamministratore (le app aziendali di solito vengono approvate automaticamente)
Step 2: Configura OpenClaw
Configura con la procedura guidata (consigliato)
openclaw channels add
Scegli Feishu e incolla App ID + App Secret.
Configura tramite file di configurazione
Modifica ~/.openclaw/openclaw.json:
{
channels: {
feishu: {
enabled: true,
dmPolicy: "pairing",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
botName: "My AI assistant",
},
},
},
},
}
Se usi connectionMode: "webhook", imposta sia verificationToken che encryptKey. Il server webhook Feishu si associa a 127.0.0.1 per impostazione predefinita; imposta webhookHost solo se hai intenzionalmente bisogno di un indirizzo di bind diverso.
Verification Token e Encrypt Key (modalita webhook)
Quando usi la modalita webhook, imposta sia channels.feishu.verificationToken che channels.feishu.encryptKey nella tua configurazione. Per ottenere i valori:
- Nella Feishu Open Platform, apri la tua app
- Vai in Development ā Events & Callbacks (å¼åé ē½® ā äŗä»¶äøåč°)
- Apri la scheda Encryption (å åÆēē„)
- Copia Verification Token e Encrypt Key
Lo screenshot qui sotto mostra dove trovare il Verification Token. LāEncrypt Key e nella stessa sezione Encryption.

Configura tramite variabili dāambiente
export FEISHU_APP_ID="cli_xxx"
export FEISHU_APP_SECRET="xxx"
Dominio Lark (globale)
Se il tuo tenant e su Lark (internazionale), imposta il dominio a lark (o una stringa di dominio completa). Puoi impostarlo in channels.feishu.domain o per account (channels.feishu.accounts.<id>.domain).
{
channels: {
feishu: {
domain: "lark",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
},
},
},
},
}
Flag di ottimizzazione quota
Puoi ridurre lāutilizzo delle API Feishu con due flag opzionali:
typingIndicator(predefinitotrue): quandofalse, salta le chiamate di reazione typing.resolveSenderNames(predefinitotrue): quandofalse, salta le chiamate di lookup del profilo mittente.
Impostali a livello top-level o per account:
{
channels: {
feishu: {
typingIndicator: false,
resolveSenderNames: false,
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
typingIndicator: true,
resolveSenderNames: false,
},
},
},
},
}
Step 3: Avvia e testa
1. Avvia il gateway
openclaw gateway
2. Invia un messaggio di test
In Feishu, trova il tuo bot e invia un messaggio.
3. Approva il pairing
Per impostazione predefinita, il bot risponde con un codice di pairing. Approvalo:
openclaw pairing approve feishu <CODE>
Dopo lāapprovazione, puoi chattare normalmente.
Panoramica
- Canale bot Feishu: bot Feishu gestito dal gateway
- Routing deterministico: le risposte tornano sempre a Feishu
- Isolamento sessione: i DM condividono una sessione principale; i gruppi sono isolati
- Connessione WebSocket: connessione persistente tramite Feishu SDK, nessun URL pubblico necessario
Controllo degli accessi
Messaggi diretti
-
Predefinito:
dmPolicy: "pairing"(gli utenti sconosciuti ricevono un codice di pairing) -
Approva il pairing:
openclaw pairing list feishu openclaw pairing approve feishu <CODE> -
Modalita allowlist: imposta
channels.feishu.allowFromcon gli Open ID consentiti
Chat di gruppo
1. Policy di gruppo (channels.feishu.groupPolicy):
"open"= consenti tutti nei gruppi (predefinito)"allowlist"= consenti sologroupAllowFrom"disabled"= disabilita i messaggi di gruppo
2. Requisito menzione (channels.feishu.groups.<chat_id>.requireMention):
true= richiedi @menzione (predefinito)false= rispondi senza menzioni
Esempi di configurazione gruppi
Consenti tutti i gruppi, richiedi @menzione (predefinito)
{
channels: {
feishu: {
groupPolicy: "open",
// requireMention predefinito: true
},
},
}
Consenti tutti i gruppi, nessuna @menzione richiesta
{
channels: {
feishu: {
groups: {
oc_xxx: { requireMention: false },
},
},
},
}
Consenti solo gruppi specifici
{
channels: {
feishu: {
groupPolicy: "allowlist",
// Gli ID gruppo Feishu (chat_id) hanno questo aspetto: oc_xxx
groupAllowFrom: ["oc_xxx", "oc_yyy"],
},
},
}
Limita quali mittenti possono scrivere in un gruppo (allowlist mittenti)
Oltre a consentire il gruppo stesso, tutti i messaggi in quel gruppo sono filtrati dallāopen_id del mittente: solo gli utenti elencati in groups.<chat_id>.allowFrom vedranno i loro messaggi elaborati; i messaggi dagli altri membri vengono ignorati (questo e un filtraggio a livello mittente completo, non solo per i comandi di controllo come /reset o /new).
{
channels: {
feishu: {
groupPolicy: "allowlist",
groupAllowFrom: ["oc_xxx"],
groups: {
oc_xxx: {
// Gli ID utente Feishu (open_id) hanno questo aspetto: ou_xxx
allowFrom: ["ou_user1", "ou_user2"],
},
},
},
},
}
Ottenere gli ID gruppo/utente
ID gruppo (chat_id)
Gli ID gruppo hanno questo aspetto: oc_xxx.
Metodo 1 (consigliato)
- Avvia il gateway e @menziona il bot nel gruppo
- Esegui
openclaw logs --followe cercachat_id
Metodo 2
Usa il debugger API Feishu per elencare le chat di gruppo.
ID utente (open_id)
Gli ID utente hanno questo aspetto: ou_xxx.
Metodo 1 (consigliato)
- Avvia il gateway e scrivi un DM al bot
- Esegui
openclaw logs --followe cercaopen_id
Metodo 2
Controlla le richieste di pairing per gli Open ID degli utenti:
openclaw pairing list feishu
Comandi comuni
| Comando | Descrizione |
|---|---|
/status | Mostra stato del bot |
/reset | Reimposta la sessione |
/model | Mostra/cambia modello |
Nota: Feishu non supporta ancora i menu comandi nativi, quindi i comandi devono essere inviati come testo.
Comandi di gestione gateway
| Comando | Descrizione |
|---|---|
openclaw gateway status | Mostra stato del gateway |
openclaw gateway install | Installa/avvia servizio gateway |
openclaw gateway stop | Ferma servizio gateway |
openclaw gateway restart | Riavvia servizio gateway |
openclaw logs --follow | Segui i log del gateway |
Risoluzione problemi
Il bot non risponde nelle chat di gruppo
- Assicurati che il bot sia aggiunto al gruppo
- Assicurati di @menzionare il bot (comportamento predefinito)
- Controlla che
groupPolicynon sia impostato a"disabled" - Controlla i log:
openclaw logs --follow
Il bot non riceve messaggi
- Assicurati che lāapp sia pubblicata e approvata
- Assicurati che la sottoscrizione eventi includa
im.message.receive_v1 - Assicurati che la connessione persistente sia abilitata
- Assicurati che i permessi dellāapp siano completi
- Assicurati che il gateway sia in esecuzione:
openclaw gateway status - Controlla i log:
openclaw logs --follow
Fuga di App Secret
- Reimposta lāApp Secret nella Feishu Open Platform
- Aggiorna lāApp Secret nella tua configurazione
- Riavvia il gateway
Fallimenti nellāinvio messaggi
- Assicurati che lāapp abbia il permesso
im:message:send_as_bot - Assicurati che lāapp sia pubblicata
- Controlla i log per errori dettagliati
Configurazione avanzata
Account multipli
{
channels: {
feishu: {
defaultAccount: "main",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
botName: "Primary bot",
},
backup: {
appId: "cli_yyy",
appSecret: "yyy",
botName: "Backup bot",
enabled: false,
},
},
},
},
}
defaultAccount controlla quale account Feishu viene usato quando le API in uscita non specificano un accountId esplicitamente.
Limiti messaggi
textChunkLimit: dimensione segmento testo in uscita (predefinito: 2000 caratteri)mediaMaxMb: limite upload/download media (predefinito: 30MB)
Streaming
Feishu supporta risposte in streaming tramite card interattive. Quando abilitato, il bot aggiorna una card mentre genera il testo.
{
channels: {
feishu: {
streaming: true, // abilita output streaming via card (predefinito true)
blockStreaming: true, // abilita streaming a blocchi (predefinito true)
},
},
}
Imposta streaming: false per attendere la risposta completa prima dellāinvio.
Routing multi-agent
Usa bindings per instradare DM o gruppi Feishu verso agent diversi.
{
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" },
},
},
],
}
Campi di routing:
match.channel:"feishu"match.peer.kind:"direct"o"group"match.peer.id: Open ID utente (ou_xxx) o ID gruppo (oc_xxx)
Vedi Ottenere gli ID gruppo/utente per suggerimenti di lookup.
Riferimento configurazione
Configurazione completa: Configurazione gateway
Opzioni principali:
| Impostazione | Descrizione | Predefinito |
|---|---|---|
channels.feishu.enabled | Abilita/disabilita canale | true |
channels.feishu.domain | Dominio API (feishu o lark) | feishu |
channels.feishu.connectionMode | Modalita trasporto eventi | websocket |
channels.feishu.defaultAccount | ID account predefinito per routing in uscita | default |
channels.feishu.verificationToken | Necessario per modalita webhook | - |
channels.feishu.encryptKey | Necessario per modalita webhook | - |
channels.feishu.webhookPath | Percorso route webhook | /feishu/events |
channels.feishu.webhookHost | Host di bind webhook | 127.0.0.1 |
channels.feishu.webhookPort | Porta di bind webhook | 3000 |
channels.feishu.accounts.<id>.appId | App ID | - |
channels.feishu.accounts.<id>.appSecret | App Secret | - |
channels.feishu.accounts.<id>.domain | Override dominio API per account | feishu |
channels.feishu.dmPolicy | Policy DM | pairing |
channels.feishu.allowFrom | Allowlist DM (lista open_id) | - |
channels.feishu.groupPolicy | Policy gruppi | open |
channels.feishu.groupAllowFrom | Allowlist gruppi | - |
channels.feishu.groups.<chat_id>.requireMention | Richiedi @menzione | true |
channels.feishu.groups.<chat_id>.enabled | Abilita gruppo | true |
channels.feishu.textChunkLimit | Dimensione segmento messaggio | 2000 |
channels.feishu.mediaMaxMb | Limite dimensione media | 30 |
channels.feishu.streaming | Abilita output streaming via card | true |
channels.feishu.blockStreaming | Abilita streaming a blocchi | true |
Riferimento dmPolicy
| Valore | Comportamento |
|---|---|
"pairing" | Predefinito. Gli utenti sconosciuti ricevono un codice di pairing |
"allowlist" | Solo gli utenti in allowFrom possono chattare |
"open" | Consenti tutti gli utenti (richiede "*" in allowFrom) |
"disabled" | Disabilita i DM |
Tipi di messaggio supportati
Ricezione
- Testo
- Rich text (post)
- Immagini
- File
- Audio
- Video
- Sticker
Invio
- Testo
- Immagini
- File
- Audio
- Rich text (supporto parziale)