概要
OpenClaw の7段階ツールパイプラインにおいて、第4段階の「チャンネル専用ツール」は特徴的な設計です。異なる通信プラットフォームは大きく異なるインタラクション機能を提供します。Discord にはリッチな埋め込みメッセージとリアクションシステムがあり、Telegram にはインラインキーボードと Bot API があり、Slack には Block Kit とワークフローがあり、WhatsApp にはテンプレートメッセージとインタラクティブリストがあります。チャンネル専用ツールにより、AI エージェントは各プラットフォームのネイティブ機能を最大限に活用できます。
チャンネルツールアーキテクチャ
チャンネル専用ツールはツールパイプラインの第4段階で注入されます。現在のセッションの channelType プロパティに基づいて、システムは登録済みのチャンネルツールセットからマッチするツールを選択し、ツールリストに追加します。
channelTools:
discord:
- discord_embed
- discord_reaction
- discord_thread
- discord_voice
telegram:
- telegram_keyboard
- telegram_sticker
- telegram_poll
slack:
- slack_blocks
- slack_workflow
- slack_modal
whatsapp:
- whatsapp_template
- whatsapp_list
- whatsapp_location
Discord 専用ツール
discord_embed — 埋め込みメッセージツール
Discord の埋め込みメッセージは、タイトル、説明、フィールド、画像、サムネイル、フッターを含むリッチなフォーマットコンテンツをサポートしています。このツールにより AI エージェントは視覚的に魅力的な構造化メッセージを作成できます。
ツールパラメータには、title、description、color、fields(配列)、thumbnail、image、footer、timestamp があります。AI エージェントはコンテンツの種類に応じて適切なレイアウトを自動的に選択します。
discord_reaction — リアクション管理ツール
メッセージ上の絵文字リアクションを管理します。AI エージェントはインタラクティブボタンの代替としてリアクションを追加したり、ユーザーのリアクションを読み取ってフィードバックを収集したりできます。Unicode 絵文字とサーバーカスタム絵文字の両方をサポートしています。
discord_thread — スレッドツール
Discord チャンネル内でスレッドを作成・管理します。会話が特定のトピックに関わる場合、AI エージェントは自動的にスレッドを作成し、メインチャンネルを整理された状態に保ちます。スレッドツールはアーカイブやロック操作もサポートしています。
discord_voice — ボイスチャンネルツール
ボイスチャンネルとの基本的なインタラクション機能を提供します。ボイスチャンネルへの参加、オーディオの再生、ボイスチャンネルメンバーリストの取得などが可能です。
Telegram 専用ツール
telegram_keyboard — インラインキーボードツール
Telegram の最も特徴的なインタラクション方法はインラインキーボードです。このツールにより AI エージェントはメッセージの下にボタングリッドを添付でき、ボタンクリックが対応するアクションをトリガーします。
2種類のキーボードがサポートされています:
- インラインキーボード:メッセージの下に添付され、ボタンクリックでコールバックをトリガー
- リプライキーボード:ユーザーのソフトキーボードを置き換え、クイックリプライオプションを提供
telegram_sticker — ステッカーツール
ステッカーの送信と管理を行います。AI エージェントは会話の雰囲気に応じて適切なステッカーで応答でき、インタラクションに楽しい要素を加えます。
telegram_poll — 投票ツール
投票メッセージを作成し、単一選択と複数選択の両方に対応します。チームの意見収集、意思決定の投票などのシナリオに最適です。
Slack 専用ツール
slack_blocks — Block Kit ツール
Slack の Block Kit は強力なメッセージ構築フレームワークです。このツールにより AI エージェントは、テキスト、画像、ボタン、セレクター、日付ピッカーなどのコンポーネントを含む複雑なインタラクティブメッセージを作成できます。
Block Kit ツールはメッセージ構造を自動的に検証し、生成されたブロックが Slack API の仕様に準拠していることを保証します。
slack_workflow — ワークフローツール
Slack Workflow Builder と統合し、AI エージェントが事前定義されたワークフローをトリガーしたり、シンプルな自動化プロセスを作成したりできます。
slack_modal — モーダルツール
Slack でモーダルダイアログを開き、構造化されたユーザー入力を収集します。モーダルは複数の入力フィールド、バリデーションルール、複数ステップのフォームをサポートしています。
WhatsApp 専用ツール
whatsapp_template — テンプレートメッセージツール
WhatsApp Business API では、プロアクティブメッセージに事前承認されたテンプレートの使用が必要です。このツールはテンプレートの選択とパラメータの埋め込みを管理し、メッセージが WhatsApp のポリシー要件に準拠することを保証します。
whatsapp_list — リストメッセージツール
選択可能なリストアイテム付きのインタラクティブメッセージを送信します。メニュー表示やオプション選択などのシナリオに適しています。リストは最大10セクション、各セクション最大10アイテムをサポートしています。
whatsapp_location — 位置情報ツール
地理的位置情報の送受信を行います。AI エージェントは地図上に位置をマークしたり、ユーザーが送信した位置情報データを解析したりできます。
カスタムチャンネルツールの開発
ツール登録
カスタムチャンネルツールは OpenClaw システムにプログラム的に登録します:
openclaw.registerChannelTool({
channel: 'discord',
name: 'discord_custom_tool',
description: 'Description of the custom Discord tool',
parameters: {
type: 'object',
properties: {
param1: { type: 'string', description: 'Parameter description' }
},
required: ['param1']
},
execute: async (params, context) => {
// Tool execution logic
return { result: 'Operation complete' };
}
});
Context オブジェクト
チャンネルツールの実行関数は以下を含む context オブジェクトを受け取ります:
- channel:チャンネルインスタンス、プラットフォームのネイティブ API へのアクセスを提供
- session:現在のセッション情報
- user:現在のユーザー情報
- abortSignal:パイプライン第7段階からの中断シグナル
システムプロンプトの適応
チャンネルツールを登録した後、buildAgentSystemPrompt() 拡張プロンプトメカニズムを使用して、新しいツールの使用方法を AI エージェントにガイダンスとして提供することを忘れないでください。そうしないと、エージェントはいつ、どのようにツールを呼び出すべきかわからない可能性があります。
チャンネルツールのテスト
OpenClaw は開発中に実際のプラットフォームに接続せずにチャンネルツールをテストできるチャンネルシミュレーターを提供しています。シミュレーターは各プラットフォームの API レスポンスとインタラクション動作を模倣します。
ベストプラクティス
- プラットフォーム規約の尊重:各プラットフォームには独自の設計ガイドラインと制限事項があり、ツールはこれに従うべき
- グレースフルデグラデーション:チャンネル機能が利用不可の場合、クラッシュするのではなく、意味のあるエラーメッセージを返すべき
- 非同期安全性:チャンネル API 呼び出しは非同期であり、並行処理とタイムアウトの適切な処理を確保する
- ユーザープライバシー:チャンネルツールはユーザーのプラットフォームデータにアクセスする可能性があるため、常に最小権限の原則に従う
まとめ
チャンネル専用ツールは OpenClaw のマルチプラットフォームアーキテクチャの重要なコンポーネントです。各通信プラットフォームにカスタマイズされたツールを提供することで、AI エージェントは異なる環境でネイティブレベルのインタラクション体験を提供できます。