Zum Hauptinhalt springen

Feishu-Bot

Feishu (Lark) ist eine Team-Chat-Plattform, die von Unternehmen für Messaging und Zusammenarbeit genutzt wird. Dieses Plugin verbindet OpenClaw mit einem Feishu-/Lark-Bot über das WebSocket-Ereignisabonnement der Plattform, sodass Nachrichten empfangen werden können, ohne eine öffentliche Webhook-URL bereitzustellen.

Erforderliches Plugin

Installieren Sie das Feishu-Plugin:
openclaw plugins install @openclaw/feishu
Lokaler Checkout (bei Ausführung aus einem Git-Repository):
openclaw plugins install ./extensions/feishu

Schnellstart

Es gibt zwei Möglichkeiten, den Feishu-Kanal hinzuzufügen:

Methode 1: Onboarding-Assistent (empfohlen)

Wenn Sie OpenClaw gerade installiert haben, starten Sie den Assistenten:
openclaw onboard
Der Assistent führt Sie durch:
  1. Erstellen einer Feishu-App und Sammeln der Zugangsdaten
  2. Konfigurieren der App-Zugangsdaten in OpenClaw
  3. Starten des Gateways
Nach der Konfiguration überprüfen Sie den Gateway-Status:
  • openclaw gateway status
  • openclaw logs --follow

Methode 2: CLI-Einrichtung

Wenn Sie die Erstinstallation bereits abgeschlossen haben, fügen Sie den Kanal über die CLI hinzu:
openclaw channels add
Wählen Sie Feishu und geben Sie anschließend App ID und App Secret ein. Nach der Konfiguration verwalten Sie das Gateway:
  • openclaw gateway status
  • openclaw gateway restart
  • openclaw logs --follow

Schritt 1: Feishu-App erstellen

1. Feishu Open Platform öffnen

Besuchen Sie die Feishu Open Platform und melden Sie sich an. Lark-(global)-Tenants sollten https://open.larksuite.com/app verwenden und domain: "lark" in der Feishu-Konfiguration setzen.

2. App erstellen

  1. Klicken Sie auf Create enterprise app
  2. Geben Sie App-Namen und Beschreibung ein
  3. Wählen Sie ein App-Symbol
Create enterprise app

3. Zugangsdaten kopieren

Kopieren Sie unter Credentials & Basic Info:
  • App ID (Format: cli_xxx)
  • App-Geheimnis
Wichtig: Bewahren Sie das App Secret vertraulich auf. Get credentials

4. Berechtigungen konfigurieren

Klicken Sie unter Permissions auf Batch import und fügen Sie Folgendes ein:
{
  "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"]
  }
}
Configure permissions

5. Bot-Funktion aktivieren

Unter App Capability > Bot:
  1. Aktivieren Sie die Bot-Funktion
  2. Legen Sie den Bot-Namen fest
Enable bot capability

6. Ereignisabonnement konfigurieren

⚠️ Wichtig: Bevor Sie das Ereignisabonnement konfigurieren, stellen Sie sicher:
  1. Sie haben openclaw channels add für Feishu bereits ausgeführt
  2. Das Gateway läuft (openclaw gateway status)
Unter Event Subscription:
  1. Wählen Sie Use long connection to receive events (WebSocket)
  2. Fügen Sie das Ereignis hinzu: im.message.receive_v1
⚠️ Wenn das Gateway nicht läuft, kann das Speichern der Long-Connection-Einstellung fehlschlagen. Configure event subscription

7. App veröffentlichen

  1. Erstellen Sie eine Version unter Version Management & Release
  2. Zur Prüfung absenden und veröffentlichen
  3. Warten Sie auf die Admin-Genehmigung (Enterprise-Apps werden meist automatisch genehmigt)

Schritt 2: OpenClaw konfigurieren

Konfiguration mit dem Assistenten (empfohlen)

openclaw channels add
Wählen Sie Feishu und fügen Sie Ihre App ID und Ihr App Secret ein.

Konfiguration über Konfigurationsdatei

Bearbeiten Sie ~/.openclaw/openclaw.json:
{
  channels: {
    feishu: {
      enabled: true,
      dmPolicy: "pairing",
      accounts: {
        main: {
          appId: "cli_xxx",
          appSecret: "xxx",
          botName: "My AI assistant",
        },
      },
    },
  },
}

Konfiguration über Umgebungsvariablen

export FEISHU_APP_ID="cli_xxx"
export FEISHU_APP_SECRET="xxx"

Lark-(global)-Domain

Wenn Ihr Tenant Lark (international) verwendet, setzen Sie die Domain auf lark (oder eine vollständige Domain-Zeichenfolge). Sie können dies unter channels.feishu.domain oder pro Konto (channels.feishu.accounts.<id>.domain) festlegen.
{
  channels: {
    feishu: {
      domain: "lark",
      accounts: {
        main: {
          appId: "cli_xxx",
          appSecret: "xxx",
        },
      },
    },
  },
}

Schritt 3: Starten + testen

1. Gateway starten

openclaw gateway

2. Testnachricht senden

Suchen Sie in Feishu Ihren Bot und senden Sie eine Nachricht.

3. Kopplung genehmigen

Standardmäßig antwortet der Bot mit einem Kopplungscode. Genehmigen Sie ihn:
openclaw pairing approve feishu <CODE>
Nach der Genehmigung können Sie normal chatten.

Überblick

  • Feishu-Bot-Kanal: Vom Gateway verwalteter Feishu-Bot
  • Deterministisches Routing: Antworten kehren immer zu Feishu zurück
  • Sitzungsisolation: Direktnachrichten teilen sich eine Hauptsitzung; Gruppen sind isoliert
  • WebSocket-Verbindung: Long-Connection über das Feishu-SDK, keine öffentliche URL erforderlich

Zugriffskontrolle

Direktnachrichten

  • Standard: dmPolicy: "pairing" (unbekannte Benutzer erhalten einen Kopplungscode)
  • Kopplung genehmigen:
    openclaw pairing list feishu
    openclaw pairing approve feishu <CODE>
    
  • Allowlist-Modus: Setzen Sie channels.feishu.allowFrom mit erlaubten Open IDs

Gruppenchats

1. Gruppenrichtlinie (channels.feishu.groupPolicy):
  • "open" = alle in Gruppen zulassen (Standard)
  • "allowlist" = nur groupAllowFrom zulassen
  • "disabled" = Gruppennachrichten deaktivieren
2. Erwähnungspflicht (channels.feishu.groups.<chat_id>.requireMention):
  • true = @Erwähnung erforderlich (Standard)
  • false = ohne Erwähnungen antworten

Beispiele für Gruppenkonfiguration

Alle Gruppen zulassen, @Erwähnung erforderlich (Standard)

{
  channels: {
    feishu: {
      groupPolicy: "open",
      // Default requireMention: true
    },
  },
}

Alle Gruppen zulassen, keine @Erwähnung erforderlich

{
  channels: {
    feishu: {
      groups: {
        oc_xxx: { requireMention: false },
      },
    },
  },
}

Nur bestimmte Benutzer in Gruppen zulassen

{
  channels: {
    feishu: {
      groupPolicy: "allowlist",
      groupAllowFrom: ["ou_xxx", "ou_yyy"],
    },
  },
}

Gruppen-/Benutzer-IDs abrufen

Gruppen-IDs (chat_id)

Gruppen-IDs sehen aus wie oc_xxx. Methode 1 (empfohlen)
  1. Starten Sie das Gateway und @erwähnen Sie den Bot in der Gruppe
  2. Führen Sie openclaw logs --follow aus und suchen Sie nach chat_id
Methode 2 Verwenden Sie den Feishu-API-Debugger, um Gruppenchats aufzulisten.

Benutzer-IDs (open_id)

Benutzer-IDs sehen aus wie ou_xxx. Methode 1 (empfohlen)
  1. Starten Sie das Gateway und senden Sie dem Bot eine Direktnachricht
  2. Führen Sie openclaw logs --follow aus und suchen Sie nach open_id
Methode 2 Prüfen Sie Kopplungsanfragen auf Benutzer-Open-IDs:
openclaw pairing list feishu

Häufige Befehle

BefehlBeschreibung
/statusBot-Status anzeigen
/resetSitzung zurücksetzen
/modelModell anzeigen/wechseln
Hinweis: Feishu unterstützt derzeit keine nativen Befehlsmenüs, daher müssen Befehle als Text gesendet werden.

Gateway-Verwaltungsbefehle

BefehlBeschreibung
openclaw gateway statusGateway-Status anzeigen
openclaw gateway installGateway-Dienst installieren/starten
openclaw gateway stopGateway-Dienst stoppen
openclaw gateway restartGateway-Dienst neu starten
openclaw logs --followGateway-Logs verfolgen

Fehlerbehebung

Bot antwortet nicht in Gruppenchats

  1. Stellen Sie sicher, dass der Bot zur Gruppe hinzugefügt wurde
  2. Stellen Sie sicher, dass Sie den Bot @erwähnen (Standardverhalten)
  3. Prüfen Sie, dass groupPolicy nicht auf "disabled" gesetzt ist
  4. Prüfen Sie die Logs: openclaw logs --follow

Bot empfängt keine Nachrichten

  1. Stellen Sie sicher, dass die App veröffentlicht und genehmigt ist
  2. Stellen Sie sicher, dass das Ereignisabonnement im.message.receive_v1 enthält
  3. Stellen Sie sicher, dass long connection aktiviert ist
  4. Stellen Sie sicher, dass die App-Berechtigungen vollständig sind
  5. Stellen Sie sicher, dass das Gateway läuft: openclaw gateway status
  6. Prüfen Sie die Logs: openclaw logs --follow

App-Secret-Leak

  1. Setzen Sie das App Secret in der Feishu Open Platform zurück
  2. Aktualisieren Sie das App Secret in Ihrer Konfiguration
  3. Starten Sie das Gateway neu

Fehler beim Senden von Nachrichten

  1. Stellen Sie sicher, dass die App über die Berechtigung im:message:send_as_bot verfügt
  2. Stellen Sie sicher, dass die App veröffentlicht ist
  3. Prüfen Sie die Logs auf detaillierte Fehler

Erweiterte Konfiguration

Mehrere Konten

{
  channels: {
    feishu: {
      accounts: {
        main: {
          appId: "cli_xxx",
          appSecret: "xxx",
          botName: "Primary bot",
        },
        backup: {
          appId: "cli_yyy",
          appSecret: "yyy",
          botName: "Backup bot",
          enabled: false,
        },
      },
    },
  },
}

Nachrichtenlimits

  • textChunkLimit: Größe ausgehender Textsegmente (Standard: 2000 Zeichen)
  • mediaMaxMb: Limit für Medien-Upload/-Download (Standard: 30 MB)

Streaming

Feishu unterstützt Streaming-Antworten über interaktive Karten. Wenn aktiviert, aktualisiert der Bot eine Karte während der Texterzeugung.
{
  channels: {
    feishu: {
      streaming: true, // enable streaming card output (default true)
      blockStreaming: true, // enable block-level streaming (default true)
    },
  },
}
Setzen Sie streaming: false, um vor dem Senden auf die vollständige Antwort zu warten.

Multi-Agent-Routing

Verwenden Sie bindings, um Feishu-Direktnachrichten oder -Gruppen an unterschiedliche Agenten weiterzuleiten.
{
  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" },
      },
    },
  ],
}
Routing-Felder:
  • match.channel: "feishu"
  • match.peer.kind: "direct" or "group"
  • match.peer.id: Benutzer-Open-ID (ou_xxx) oder Gruppen-ID (oc_xxx)
Siehe Gruppen-/Benutzer-IDs abrufen für Hinweise zur Ermittlung.

Konfigurationsreferenz

Vollständige Konfiguration: Gateway-Konfiguration Schlüsseloptionen:
EinstellungBeschreibungStandard
channels.feishu.enabledKanal aktivieren/deaktivierentrue
channels.feishu.domainAPI-Domain (feishu oder lark)feishu
channels.feishu.accounts.&lt;id&gt;.appIdApp ID-
channels.feishu.accounts.&lt;id&gt;.appSecretApp Secret-
channels.feishu.accounts.&lt;id&gt;.domainAPI-Domain-Override pro Kontofeishu
channels.feishu.dmPolicyDM-Richtliniepairing
channels.feishu.allowFromDM-Allowlist (open_id-Liste)-
channels.feishu.groupPolicyGruppenrichtlinieopen
channels.feishu.groupAllowFromGruppen-Allowlist-
channels.feishu.groups.<chat_id>.requireMention@Erwähnung erforderlichtrue
channels.feishu.groups.<chat_id>.enabledGruppe aktivierentrue
channels.feishu.textChunkLimitNachrichtensegmentgröße2000
channels.feishu.mediaMaxMbMediengrößenlimit30
channels.feishu.streamingStreaming-Kartenausgabe aktivierentrue
channels.feishu.blockStreamingBlock-Streaming aktivierentrue

dmPolicy-Referenz

WertVerhalten
"pairing"Standard. Unbekannte Benutzer erhalten einen Kopplungscode und müssen genehmigt werden
"allowlist"Nur Benutzer in allowFrom können chatten
"open"Alle Benutzer zulassen (erfordert "*" in allowFrom)
"disabled"DMs deaktivieren

Unterstützte Nachrichtentypen

Empfangen

  • ✅ Text
  • ✅ Rich Text (Post)
  • ✅ Bilder
  • ✅ Dateien
  • ✅ Audio
  • ✅ Video
  • ✅ Sticker

Senden

  • ✅ Text
  • ✅ Bilder
  • ✅ Dateien
  • ✅ Audio
  • ⚠️ Rich Text (teilweise Unterstützung)