Webhook を設定する
Webhook は、エントリーやメディアが変わったときに、指定した URL へ通知を送る仕組みです。記事を公開したら静的サイトを作り直す、Slack に知らせる、といったことに使います。このページでは、管理画面で Webhook を設定し、届いたかどうかを確かめるまでを説明します。
- スペースで[Webhook の管理]の権限が要ります。初めからあるロールでは、[オーナー]と[管理者]です
- 通知を受け取る URL を用意しておきます。Vercel の Deploy Hook、Netlify の Build Hook、Slack の Incoming Webhook なら、それぞれのサービスで URL を発行しておきます
Webhook を作る
Section titled “Webhook を作る”Webhook を作るには、次のようにします。
- 管理画面の左のメニューで、[Webhook]を押します。
- [Webhook を作成]を押します。
- [名前]に、見分けるための名前を入れます(例:「本番サイトの再ビルド」)。
- [種類]で、送り先に合うものを選びます(下の「種類」の表)。
- [送信先の URL]に、通知を送る URL を入れます。
- [対象のコンテンツタイプ]で、通知するコンテンツタイプを選びます。すべてのコンテンツタイプとメディアの変化を通知するときは、[すべてのコンテンツタイプとメディア]のままにします。
- [通知するイベント]で、通知したいイベントにチェックを入れます。初めは[エントリーの公開・公開中の更新]と[エントリーの削除]にチェックが入っています。
- (省略可)[署名のシークレット]に、8〜256 文字の文字列を入れます。受け手で、通知が Hako CMS から来たことを確かめるときに使います。
- (省略可)送り先が認証のヘッダーを求めるときは、[カスタムヘッダー]の[ヘッダーを追加]を押して、[ヘッダー名]と[値]を入れます。
- [有効にする]にチェックが入っていることを確かめて、[作成]を押します。
作った Webhook の画面が開きます。続けて、下の「テストを送る」で、届くことを確かめます。
| 種類 | 送るもの | 使うとき |
|---|---|---|
| カスタム | 何が起きたかを表す JSON | 自分で作った受け手に送る |
| Vercel(Deploy Hook) | 空の JSON | Vercel のサイトを作り直す |
| Netlify(Build Hook) | 空の JSON | Netlify のサイトを作り直す |
| Slack(Incoming Webhook) | 「記事「…」を公開しました」のような文 | Slack のチャンネルに知らせる |
[Vercel(Deploy Hook)]と[Netlify(Build Hook)]では、まだ送っていない通知がたまっていれば、1 回にまとめて送ります。続けて何件も公開しても、ビルドが何度も走りません。
[カスタム]で送る JSON の形と、署名の確かめ方は、Webhook を受け取るにあります。
| 画面の名前 | イベント名 | いつ送るか |
|---|---|---|
| エントリーの公開・公開中の更新 | entry.published |
公開した。公開中のエントリーを直して公開した |
| 下書きの保存 | entry.draft_saved |
下書きを保存した(新しく作ったときを含む) |
| 公開終了 | entry.unpublished |
公開をやめた |
| エントリーの削除 | entry.deleted |
エントリーを削除した |
| 予約公開の失敗 | entry.schedule_failed |
予約公開が、公開の決まりに合わずに実行できなかった |
| メディアの追加 | media.uploaded |
メディアをアップロードした |
| メディアの削除 | media.deleted |
メディアを削除した |
- 管理画面での操作のほか、API キーでの書き込みでも送ります
- 予約公開と予約公開終了が実行されたときも、[エントリーの公開・公開中の更新]と[公開終了]を送ります
- 下書きを捨てたときは送りません
- メディアのイベントは、[対象のコンテンツタイプ]を[すべてのコンテンツタイプとメディア]にしたときだけ選べます
テストを送る
Section titled “テストを送る”Webhook の画面で、[テストの送信]を押します。
テストの通知がすぐに送られ、ボタンの横に結果([成功]か[失敗]と、送り先が返した状態コード)が表示されます。テストの通知のイベントは[テスト](ping)です。失敗しても、再送はしません。
[Vercel(Deploy Hook)]と[Netlify(Build Hook)]では、テストでも実際にビルドが始まります。
届いたかを確かめる(送信履歴)
Section titled “届いたかを確かめる(送信履歴)”Webhook の画面の下の[送信履歴]に、送った通知が新しい順に並びます。
| 列 | 中身 |
|---|---|
| 日時 | 送った日時 |
| イベント | 送ったイベント |
| 結果 | [成功][失敗][送信待ち]と、送り先が返した状態コード |
| 送信回数 | 送った回数(再送を含む) |
[日時]を押すと、その通知の[送った本文]と、送り先の[応答]が開きます。再送を待っているときは、「次の再送:」のあとに日時が出ます。
送信履歴は 30 日で消えます。
失敗したとき
Section titled “失敗したとき”送り先が 2xx 以外を返した、つながらなかった、10 秒以内に応答がなかったときは、失敗です。リダイレクト(3xx)も失敗になります。
失敗した通知は、最大 5 回、30 秒、2 分、10 分、1 時間、6 時間の間を置いて、自動で送り直します。
送り先を直したあとで、すぐに送り直したいときは、[送信履歴]でその通知の[日時]を押して開き、[もう一度送る]を押します。「送信を予約しました」と表示され、同じ内容の通知を、もう一度最初から送ります。
Webhook を変える、止める、削除する
Section titled “Webhook を変える、止める、削除する”Webhook の画面のフォームで値を変えて、[保存]を押します。「保存しました」と表示されます。
- シークレット: [署名のシークレット]で、[変えない][新しくする][消す]から選びます。[消す]にすると、署名を付けなくなります
- 一時的に止める: [有効にする]のチェックを外して、[保存]を押します。一覧に[無効]と出て、通知を送らなくなります。止めている間も、[テストの送信]はできます
- 削除: 右上の[Webhook を削除]を押し、確かめの画面でもう一度[Webhook を削除]を押します。送信履歴も消えます
- 対象のコンテンツタイプのエントリーを 1 件公開します(エントリーを書く・公開する)。
- [Webhook]の画面で、作った Webhook の名前を押します。一覧の[最後の送信]の列でも、最後の結果が分かります。
- [送信履歴]の先頭に、[エントリーの公開・公開中の更新]が[成功]で出ていることを確かめます。
通知は、操作のあと、ふつうは 1〜2 秒で送られます。