Feishu Bot
Feishu(Lark)は、企業がメッセージングやコラボレーションに使用するチームチャットプラットフォームです。このプラグインはOpenClawをFeishu/Lark BotにWebSocketイベントサブスクリプション経由で接続するため、パブリックなWebhook URLを公開せずにメッセージを受信できます。
バンドルプラグイン
Feishuは現在のOpenClawリリースにバンドルされているため、個別のプラグインインストールは不要です。
古いビルドやバンドルされたFeishuを含まないカスタムインストールを使用している場合は、手動でインストールしてください:
openclaw plugins install @openclaw/feishu
クイックスタート
Feishuチャンネルを追加するには2つの方法があります:
方法1:オンボーディングウィザード(推奨)
OpenClawをインストールしたばかりの場合は、ウィザードを実行してください:
openclaw onboard
ウィザードの案内に従って:
- Feishuアプリの作成と認証情報の取得
- OpenClawでのアプリ認証情報の設定
- Gatewayの起動
設定後、Gatewayの状態を確認してください:
openclaw gateway statusopenclaw logs --follow
方法2:CLIセットアップ
初期インストールが完了している場合は、CLI経由でチャンネルを追加してください:
openclaw channels add
Feishuを選択し、App IDとApp Secretを入力します。
設定後のGateway管理:
openclaw gateway statusopenclaw gateway restartopenclaw logs --follow
ステップ1:Feishuアプリの作成
1. Feishu Open Platformを開く
Feishu Open Platformにアクセスしてサインインしてください。
Lark(グローバル)テナントの場合はhttps://open.larksuite.com/appを使用し、Feishu設定でdomain: "lark"を設定してください。
2. アプリの作成
- エンタープライズアプリを作成をクリック
- アプリ名と説明を入力
- アプリアイコンを選択

3. 認証情報のコピー
認証情報と基本情報から以下をコピーしてください:
- App ID(形式:
cli_xxx) - App Secret
警告: App Secretは秘密に保管してください。

4. 権限の設定
権限ページで一括インポートをクリックし、以下を貼り付けてください:
{
"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. Bot機能の有効化
アプリ機能 > Botで:
- Bot機能を有効化
- Bot名を設定

6. イベントサブスクリプションの設定
警告: イベントサブスクリプションを設定する前に、以下を確認してください:
- Feishu用に
openclaw channels addを実行済み - Gatewayが実行中(
openclaw gateway status)
イベントサブスクリプションで:
- 長時間接続でイベントを受信(WebSocket)を選択
- イベント
im.message.receive_v1を追加
警告: Gatewayが実行されていない場合、長時間接続のセットアップが保存できない場合があります。

7. アプリの公開
- バージョン管理とリリースでバージョンを作成
- レビューに提出して公開
- 管理者の承認を待つ(エンタープライズアプリは通常自動承認されます)
ステップ2:OpenClawの設定
ウィザードで設定(推奨)
openclaw channels add
Feishuを選択してApp ID + App Secretを貼り付けてください。
設定ファイルで設定
~/.openclaw/openclaw.jsonを編集してください:
{
channels: {
feishu: {
enabled: true,
dmPolicy: "pairing",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
botName: "My AI assistant",
},
},
},
},
}
connectionMode: "webhook"を使用する場合は、verificationTokenとencryptKeyの両方を設定してください。FeishuのWebhookサーバーはデフォルトで127.0.0.1にバインドします。意図的に異なるバインドアドレスが必要な場合のみwebhookHostを設定してください。
Verification TokenとEncrypt Key(Webhookモード)
Webhookモードを使用する場合は、設定にchannels.feishu.verificationTokenとchannels.feishu.encryptKeyの両方を設定してください。値の取得方法:
- Feishu Open Platformでアプリを開く
- 開発 → イベントとコールバックに移動
- 暗号化タブを開く
- Verification TokenとEncrypt Keyをコピー

環境変数で設定
export FEISHU_APP_ID="cli_xxx"
export FEISHU_APP_SECRET="xxx"
Lark(グローバル)ドメイン
テナントがLark(国際版)の場合、ドメインをlark(またはフルドメイン文字列)に設定してください。channels.feishu.domainまたはアカウントごと(channels.feishu.accounts.<id>.domain)に設定できます。
{
channels: {
feishu: {
domain: "lark",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
},
},
},
},
}
クォータ最適化フラグ
以下の2つのオプションフラグでFeishu APIの使用量を削減できます:
typingIndicator(デフォルトtrue):falseの場合、タイピングリアクション呼び出しをスキップ。resolveSenderNames(デフォルトtrue):falseの場合、送信者プロファイル照会呼び出しをスキップ。
トップレベルまたはアカウントごとに設定できます:
{
channels: {
feishu: {
typingIndicator: false,
resolveSenderNames: false,
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
typingIndicator: true,
resolveSenderNames: false,
},
},
},
},
}
ステップ3:起動 + テスト
1. Gatewayの起動
openclaw gateway
2. テストメッセージの送信
Feishuで自分のBotを見つけてメッセージを送信してください。
3. ペアリングの承認
デフォルトでは、Botはペアリングコードで応答します。承認してください:
openclaw pairing approve feishu <CODE>
承認後、通常どおりチャットできるようになります。
概要
- Feishu Botチャンネル:Gatewayが管理するFeishu Bot
- 決定的ルーティング:返信は常にFeishuに戻る
- セッション隔離:DMはメインセッションを共有、グループは隔離
- WebSocket接続:Feishu SDK経由の長時間接続、パブリックURL不要
アクセス制御
ダイレクトメッセージ
-
デフォルト:
dmPolicy: "pairing"(不明なユーザーにはペアリングコードが送信される) -
ペアリングの承認:
openclaw pairing list feishu openclaw pairing approve feishu <CODE> -
許可リストモード:
channels.feishu.allowFromに許可するOpen IDを設定
グループチャット
1. グループポリシー(channels.feishu.groupPolicy):
"open"= グループ内の全員を許可(デフォルト)"allowlist"=groupAllowFromのみ許可"disabled"= グループメッセージを無効化
2. メンション要件(channels.feishu.groups.<chat_id>.requireMention):
true= @メンションが必要(デフォルト)false= メンションなしでも応答
グループ設定例
全グループ許可、@メンション必要(デフォルト)
{
channels: {
feishu: {
groupPolicy: "open",
// デフォルト requireMention: true
},
},
}
全グループ許可、@メンション不要
{
channels: {
feishu: {
groups: {
oc_xxx: { requireMention: false },
},
},
},
}
特定のグループのみ許可
{
channels: {
feishu: {
groupPolicy: "allowlist",
// FeishuのグループID(chat_id)は oc_xxx のような形式
groupAllowFrom: ["oc_xxx", "oc_yyy"],
},
},
}
グループ内のメッセージ送信者を制限(送信者許可リスト)
グループ自体の許可に加え、そのグループ内のすべてのメッセージは送信者のopen_idでゲーティングされます:groups.<chat_id>.allowFromにリストされたユーザーのメッセージのみが処理され、他のメンバーからのメッセージは無視されます。
{
channels: {
feishu: {
groupPolicy: "allowlist",
groupAllowFrom: ["oc_xxx"],
groups: {
oc_xxx: {
// FeishuのユーザーID(open_id)は ou_xxx のような形式
allowFrom: ["ou_user1", "ou_user2"],
},
},
},
},
}
グループ/ユーザーIDの取得
グループID(chat_id)
グループIDはoc_xxxのような形式です。
方法1(推奨)
- Gatewayを起動してグループ内でBotを@メンション
openclaw logs --followを実行してchat_idを確認
方法2
Feishu APIデバッガーでグループチャットを一覧表示してください。
ユーザーID(open_id)
ユーザーIDはou_xxxのような形式です。
方法1(推奨)
- Gatewayを起動してBotにDMを送信
openclaw logs --followを実行してopen_idを確認
方法2
ペアリングリクエストでユーザーOpen IDを確認:
openclaw pairing list feishu
よく使うコマンド
| コマンド | 説明 |
|---|---|
/status | Botのステータス表示 |
/reset | セッションのリセット |
/model | モデルの表示/切替 |
注意:Feishuはネイティブコマンドメニューにまだ対応していないため、コマンドはテキストとして送信する必要があります。
Gateway管理コマンド
| コマンド | 説明 |
|---|---|
openclaw gateway status | Gatewayステータス表示 |
openclaw gateway install | Gatewayサービスのインストール/起動 |
openclaw gateway stop | Gatewayサービスの停止 |
openclaw gateway restart | Gatewayサービスの再起動 |
openclaw logs --follow | Gatewayログのテール |
トラブルシューティング
Botがグループチャットで応答しない
- Botがグループに追加されていることを確認
- Botを@メンションしていることを確認(デフォルト動作)
groupPolicyが"disabled"に設定されていないことを確認- ログを確認:
openclaw logs --follow
Botがメッセージを受信しない
- アプリが公開および承認されていることを確認
- イベントサブスクリプションに
im.message.receive_v1が含まれていることを確認 - 長時間接続が有効になっていることを確認
- アプリの権限が完全であることを確認
- Gatewayが実行中であることを確認:
openclaw gateway status - ログを確認:
openclaw logs --follow
App Secretの漏洩
- Feishu Open PlatformでApp Secretをリセット
- 設定のApp Secretを更新
- Gatewayを再起動
メッセージ送信の失敗
- アプリに
im:message:send_as_bot権限があることを確認 - アプリが公開されていることを確認
- ログで詳細なエラーを確認
高度な設定
マルチアカウント
{
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は、送信APIでaccountIdが明示的に指定されていない場合に使用されるFeishuアカウントを制御します。
メッセージ上限
textChunkLimit:送信テキストチャンクサイズ(デフォルト:2000文字)mediaMaxMb:メディアのアップロード/ダウンロード制限(デフォルト:30MB)
ストリーミング
Feishuはインタラクティブカードによるストリーミング返信をサポートしています。有効にすると、Botはテキスト生成中にカードを更新します。
{
channels: {
feishu: {
streaming: true, // ストリーミングカード出力を有効化(デフォルト true)
blockStreaming: true, // ブロックレベルストリーミングを有効化(デフォルト true)
},
},
}
完全な返信を待ってから送信するにはstreaming: falseを設定してください。
マルチAgentルーティング
bindingsを使用してFeishuのDMやグループを異なるAgentにルーティングできます。
{
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" },
},
},
],
}
ルーティングフィールド:
match.channel:"feishu"match.peer.kind:"direct"または"group"match.peer.id:ユーザーOpen ID(ou_xxx)またはグループID(oc_xxx)
IDの取得方法はグループ/ユーザーIDの取得を参照してください。
設定リファレンス
完全な設定:Gateway設定
主な設定項目:
| 設定 | 説明 | デフォルト |
|---|---|---|
channels.feishu.enabled | チャンネルの有効/無効 | true |
channels.feishu.domain | APIドメイン(feishuまたはlark) | feishu |
channels.feishu.connectionMode | イベントトランスポートモード | websocket |
channels.feishu.defaultAccount | 送信ルーティング用デフォルトアカウントID | default |
channels.feishu.verificationToken | Webhookモードで必須 | - |
channels.feishu.encryptKey | Webhookモードで必須 | - |
channels.feishu.webhookPath | Webhookルートパス | /feishu/events |
channels.feishu.webhookHost | Webhookバインドホスト | 127.0.0.1 |
channels.feishu.webhookPort | Webhookバインドポート | 3000 |
channels.feishu.accounts.<id>.appId | App ID | - |
channels.feishu.accounts.<id>.appSecret | App Secret | - |
channels.feishu.accounts.<id>.domain | アカウントごとのAPIドメインオーバーライド | feishu |
channels.feishu.dmPolicy | DMポリシー | pairing |
channels.feishu.allowFrom | DM許可リスト(open_idリスト) | - |
channels.feishu.groupPolicy | グループポリシー | open |
channels.feishu.groupAllowFrom | グループ許可リスト | - |
channels.feishu.groups.<chat_id>.requireMention | @メンション要求 | true |
channels.feishu.groups.<chat_id>.enabled | グループの有効化 | true |
channels.feishu.textChunkLimit | メッセージチャンクサイズ | 2000 |
channels.feishu.mediaMaxMb | メディアサイズ上限 | 30 |
channels.feishu.streaming | ストリーミングカード出力の有効化 | true |
channels.feishu.blockStreaming | ブロックストリーミングの有効化 | true |
dmPolicyリファレンス
| 値 | 動作 |
|---|---|
"pairing" | デフォルト。 不明なユーザーにペアリングコードが送られ、承認が必要 |
"allowlist" | allowFrom内のユーザーのみチャット可能 |
"open" | すべてのユーザーを許可(allowFromに"*"が必要) |
"disabled" | DMを無効化 |
対応メッセージタイプ
受信
- テキスト
- リッチテキスト(投稿)
- 画像
- ファイル
- 音声
- 動画
- スタンプ
送信
- テキスト
- 画像
- ファイル
- 音声
- リッチテキスト(部分的サポート)