ドキュメント / Webhook
Webhook
設定 → Webhookでエンドポイントを設定すると、購読しているイベントごとにMeshwireが署名付きJSONペイロードをPOSTします。
イベントカタログ
| イベント | 説明 |
|---|---|
| bot.published | 新しいフローのバージョンが公開されました |
| subscriber.created | 新しい購読者がボットに参加しました |
| subscriber.blocked | 購読者がボットをブロックしました |
| broadcast.completed | 配信の送信が完了しました |
| broadcast.failed | 配信の送信に失敗しました |
| message.inbound | 受信メッセージがありました |
署名を検証する
すべてのリクエストには X-Meshwire-Signature ヘッダーが含まれます。これは、リクエストボディの生データをエンドポイントのシークレットで署名したHMAC-SHA256の16進ダイジェストです。
const expected = crypto
.createHmac("sha256", endpointSecret)
.update(rawBody)
.digest("hex");
if (expected !== req.headers["x-botforge-signature"]) {
return res.status(401).end();
}再試行とバックオフ
5秒以内に2xxを受信しなかった配信は、指数バックオフで再試行されます:1分、5分、30分、2時間、その後12時間、最大24時間まで。最後の試行が失敗すると、そのエンドポイントにフラグが立てられ、メールで通知されます。1時間の失敗率が50%を超えるエンドポイントは一時的に無効化されます。
ペイロードの例
{
"id": "evt_3n7f",
"type": "broadcast.completed",
"createdAt": "2024-05-02T14:03:11Z",
"data": {
"broadcastId": "bcast_7f1",
"botId": "bot_9k2",
"stats": { "total": 4210, "delivered": 4180, "blocked": 19, "failed": 11 }
}
}