Webhookとは
Webhookを使用すると、Rheel Chat APIで発生したイベント(メッセージ投稿、チャンネル作成など)を、あなたのサーバーにリアルタイムで通知できます。主な用途
通知連携
メッセージ投稿時にメール通知やプッシュ通知を送信
外部システム連携
CRMやタスク管理ツールとの連携
ログ記録
チャットログを外部データベースに保存
自動応答
特定のキーワードに反応するBot機能の実装
Webhookの設定
1. エンドポイントURLの準備
Webhookを受け取るHTTPSエンドポイントを用意します。WebhookエンドポイントはHTTPSである必要があります。HTTPは使用できません。
2. Webhook URLの登録
管理画面からWebhook URLを登録します。
- Dashboardにログイン
- アプリケーション設定を開く
- Webhook URLを入力して保存
3. イベントの選択
受け取りたいイベントを選択します: メッセージ系channel:message_send- メッセージが投稿されたchannel:message_update- メッセージが編集されたchannel:messages_delete- メッセージが削除されたchannel:mark_message_as_read- メッセージが既読になった
channel:create- チャンネルが作成されたchannel:update- チャンネルが更新されたchannel:delete- チャンネルが削除されたchannel:archive- チャンネルがアーカイブされたchannel:unarchive- チャンネルがアーカイブ解除された
user:create- ユーザーが作成されたuser:update- ユーザーが更新されたuser:delete- ユーザーが削除された
channel:users_join- ユーザーがチャンネルに参加したchannel:users_leave- ユーザーがチャンネルから退出した
channel:message_reaction_add- リアクションが追加されたchannel:message_reaction_remove- リアクションが削除された
channel:message_attachment_delete- 添付ファイルが削除された
Webhookペイロード
リクエストヘッダー
ペイロード例(channel:message_send)
ペイロード例(channel:message_update - 更新系)
更新系イベントにはchangesフィールドが追加されます:
署名検証
セキュリティのため、Webhookリクエストの署名を検証することを推奨します。 署名の検証にはアプリケーションのAPI Keyを使用します。署名検証には、管理画面で発行したアプリケーションのAPI Keyを使用してください。
レスポンス要件
Webhookエンドポイントは以下の要件を満たす必要があります:- HTTPステータスコード:
200-299の成功ステータスコードを返す(例:200 OK,204 No Content) - タイムアウト: 5秒以内にレスポンスを返す
- 冪等性: 同じイベントが複数回送信される可能性があるため、冪等な処理を実装する
ネットワークエラーなどで配信に失敗した場合、最大3回まで自動的に再送されます。
リトライポリシー
Webhookの配信に失敗した場合、以下のスケジュールで再送されます:| 試行回数 | 待機時間 |
|---|---|
| 1回目 | すぐ |
| 2回目 | 1分後 |
| 3回目 | 5分後 |
ベストプラクティス
非同期処理を使用する
非同期処理を使用する
Webhookハンドラー内で重い処理を行うと、タイムアウトが発生する可能性があります。イベントをキューに入れて非同期で処理することを推奨します。
冪等性を保証する
冪等性を保証する
同じイベントが複数回送信される可能性があるため、
event_idなどを使用して重複処理を防ぎます。エラーログを記録する
エラーログを記録する
処理に失敗した場合のデバッグのため、エラーログを記録してください。
署名を必ず検証する
署名を必ず検証する
悪意のあるリクエストを防ぐため、署名検証を必ず実装してください。
トラブルシューティング
Webhookが届かない
- エンドポイントURLが正しいか確認
- HTTPSを使用しているか確認
- ファイアウォール設定を確認
- サーバーログでエラーを確認
署名検証が失敗する
- Webhook Secretが正しいか確認
- ペイロードの文字列化が正しいか確認(改行、スペースなど)
- 署名アルゴリズムが
sha256であることを確認

