コンテンツにスキップ

複数チャネルでの Reaction 操作を共通化する方法

チャットボットを開発していると、プラットフォームごとに Reaction の仕様が異なり、コードが複雑になりがちです。ある API では Reaction の追加と削除でエンドポイントが分かれていたり、別の API では特殊な値を送る必要があったりと、共通のロジックを維持するのは簡単ではありません。

複数のチャネルをまたいで Reaction を制御する場合、共通のセマンティクスを理解しておくことが効率的な開発の近道です。

  • サポートされているチャネル(Discord, Slack, Google Chat, Telegram, WhatsApp, Signal)の利用環境
  • 各チャネルでの Reaction 操作権限

共通のセマンティクスを使用して、5 分で Reaction 操作を整理しましょう。以下の 4 つのルールに従うのがベストです。

  1. Reaction を追加する emoji パラメータが必須です。追加したい絵文字を指定してください。
  2. すべての Reaction を削除する emoji=""(空文字列)を指定すると、サポートされているチャネルで Bot の Reaction を削除できます。
  3. 特定の Reaction のみを削除する remove: true を指定します。この際、削除対象となる emoji も併せて指定する必要があります。
  4. バリデーションを維持する Telegram や WhatsApp のように、削除操作であっても空ではない emoji パラメータを必要とするチャネルがある点に注意してください。

チャネルごとに挙動が少しずつ異なるため、実装時に問題が発生した場合は以下を確認してください。

  • Discord / Slack / Google Chat emoji="" を送ると、そのメッセージ上の Bot の Reaction がすべて削除されます。特定の絵文字だけを消したい場合は、必ず remove: true を使用してください。
  • Telegram emoji="" で Bot の Reaction を削除可能です。ただし、remove: true を使用して削除する場合でも、ツール側のバリデーションを通すために空ではない emoji を指定する必要があります。
  • WhatsApp remove: true は内部的に空の emoji としてマッピングされます。このチャネルでも emoji の指定は必須です。
  • Signal Reaction の通知を受け取りたい場合は、channels.signal.reactionNotifications を有効にしてください。これにより、インバウンドの Reaction 通知がシステムイベントとして発行されます。

設定や実装で困ったときは、AI Setup Assistant で質問してみてください。

  • Channel Configuration Guide
  • API Reference Guide
OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。