feishu_gate hook)。
本指南介绍了端到端的设置过程。它假设 FIM One 可以在稳定的 HTTPS 源上访问——称之为 API_BASE_URL(例如 https://one.yourdomain.com)。
1. Feishuアプリを作成する
- Feishu Open Platformにアクセスして、Create custom app for enterpriseをクリックします。
- 名前、アイコン、簡単な説明を入力します。組織のエンドユーザーはカード上でこれらを表示します。
- Credentials & Basic Infoページで、App IDとApp Secretをコピーします。これらはステップ4でFIM Oneに貼り付けます。
2. パーミッションを付与する
Permissions & Scopes で、以下のスコープを有効にしてパーミッションバージョンを送信します:3. イベントサブスクリプションを有効にする(Request URLは今のところ空白のままにしておく)
Event Subscriptionsを開きますが、Request URLはまだ入力しないでください — ステップ5でFIM Oneから取得します。 以下のイベントをサブスクライブします:im.message.receive_v1— ユーザーからのインバウンドメッセージcard.action.trigger— 承認/却下ボタンのクリック
4. FIM One でチャネルを追加する
- 組織オーナーまたは管理者としてサインインします。
- Organization Settings → Channels → New Channel に移動します。
-
タイプとして Feishu を選択し、以下を入力します:
- Browse chats をクリックします — FIM One はあなたの認証情報を使用して Feishu を呼び出し、ボットが現在メンバーであるすべてのグループをリストアップします。
- ルーティング先のグループチャットを選択し、Save をクリックします。
5. Feishuでコールバック URLを登録する
保存後、FIM One はチャネル詳細パネルにコールバック URLを表示します。形式は以下の通りです:url_verification チャレンジを POST します。FIM One が自動的に応答します。
6. テストメッセージを送信
FIM One チャネル詳細パネルに戻り、Send test message をクリックします。短いプレーンテキストメッセージ(FIM One test message from <your email>)が1秒以内にターゲットグループに表示されるはずです。
表示されない場合:
- 401 / 403 — App Secret を再確認し、ステップ2のスコープを再度有効にして、権限バージョンを再公開します。
- Silent failure — ボットが実際にグループに参加していることを確認し(ステップ4のピッカー)、チャネル行の
is_activeが true であることを確認します。 - Verification fails on step 5 —
API_BASE_URLが HTTPS であり、公開でアクセス可能であることを確認します。Feishu は非 HTTPS リクエスト URL を拒否します。
7. 智能体の配線(オプション — 承認)
ツール呼び出しをグループ承認の背後に置くには:- ツール / コネクタアクション上で、Requires confirmation をオンにします。
- 智能体上で、Hooks → Class hooks の下に
feishu_gateを追加します。 - 智能体の組織が正確に1つのアクティブな Feishuチャネルを持つことを確認します — フックは自動的にそこにルーティングされます。
トラブルシューティング
chat_id をピッカーなしで見つける
チャットを閲覧 UI が推奨されるフローです。生の ID が必要な場合(例えば、スクリプティングから POST /api/channels を呼び出す場合)、3 つのフォールバックがあります:
a. Feishu に対して curl を実行する
items[].chat_id(oc_ というプレフィックスが付いている)は候補です。
b. Feishu API Explorer
Feishu Open Platform コンソールで、Dev Tools → API Explorer を開き、/open-apis/im/v1/chats を見つけ、tenant_access_token 認証を選択して、Invoke をクリックします。Feishu がトークンを生成します — シェルは不要です。
c. Feishu クライアントからコピーする
Feishu デスクトップまたはモバイル クライアントで、グループを開き、グループ設定 → グループ情報 に移動します。一部のバージョンでは グループ ID をコピー オプションが表示されます。可用性はクライアント バージョンと管理者が設定した権限によって異なるため、これは最も信頼性の低いフォールバックです。
カードクリックがFIM Oneに到達しない(エラー200340)
Feishuクライアントで承認または却下をクリックすると出错了,请稍后重试 code: 200340が表示される場合は、以下のリストを順に確認してください:
card.action.triggerがサブスクライブされている必要があります(ステップ3)。サブスクライブする前に承認ゲートを有効にした場合は、Feishuコンソールで再度サブスクライブをクリックしてください。- コールバックURLを再度保存します。 Feishuは再起動後も残る古いサブスクリプション状態をキャッシュすることがあります。URL検証ハンドシェイクがまだ成功していても、イベントルーティングが静かに停止することがあります。Feishu開放プラットフォームのイベントサブスクリプションページを開き、同じコールバックURLを再度入力して、保存/検証をもう一度クリックしてください。URLは1回のラウンドトリップで再検証され、次のボタン押下でライブボタンクリックが流れ始めます。これは昨日は機能していたチャネルが、コード変更なしで今日停止した場合の最も一般的な修正方法です。
- Feishu開放プラットフォームのイベントデバッガーを確認します(
事件与回调 → 事件调试)。各ボタン押下は配信ステータス(2xx/4xx/未投递)とともにそこに表示されるはずです。未投递が表示される場合、Feishu自体が送信前にイベントを拒否しています。通常、スコープが不足しているか、サブスクリプションが無効になっています。 - スコープチェック。
权限管理で、アプリがim:messageおよびテナントが必要とするcard関連のスコープを持っていることを確認してください。スコープが不足していると、サブスクリプションがUIで緑色で表示されていても、配信時にイベントが静かにドロップされます。
承認/却下ボタンは何度もクリックできます
webhookは最初の決定時に置き換えカードを返すようになりました — ボタンが削除され、カードヘッダーが緑色(承認)または赤色(却下)に切り替わります。最初のクリック後もクリック可能なボタンが表示される場合は、Feishuクライアントがキャッシュされたコピーを表示している可能性があります。チャットを再度開くと、決定されたカードが正しくレンダリングされます。1つの組織、2つのFeishuチャネル
feishu_gate は最初に見つかったアクティブなチャネルを選択します。同じ組織内に複数のFeishuエンドポイントが必要な場合(例:ステージング対本番グループ)、1つを除くすべてを無効にするか、エージェントタグで選択するカスタムフックを作成してください。