自動化
Webhook
Sofia の投稿が公開された時や失敗した時に、別のシステムへ通知します。API で登録する署名つき Webhook で、再試行にも対応します。
Webhook は、投稿が公開された時や失敗した時に、Sofia が実行する HTTP 呼び出しです。スプレッドシートに内容を反映したり、メッセージツールに通知したり、Zapier や n8n のシナリオを起動したりできます。
追加する
- 1. アドレスを指定します。 Sofia がイベントを送る、公開の https アドレスです。
- 2. イベントを選びます。
post.publishedとpost.failedです。 - 3. 登録します。
POST /v1/webhooks:署名シークレット(whsec_…)は、このレスポンスでしか表示されません。 - 4. テストを送ります。
POST /v1/webhooks/{id}/testで、他と同じ署名つきのwebhook.testイベントが送られます。
リクエストの詳細は API タブにあります:Webhook の登録。通知されるのは、あなたのアプリが作成した投稿だけです。
受信側を作る
まずテストを送り、受け取ったボディを保管してください。これが契約内容であり、どんな説明よりも確かです。Sofia は各イベントを JSON 形式 { id, type, createdAt, data } で POST し、ヘッダー Sofia-Event-Id、Sofia-Event-Type、Sofia-Signature を付けます。
- 署名を検証します。
Sofia-Signatureはt=<unix time>,v1=<hex>の形式で、v1はシークレットを使った<t>.<raw body>の HMAC-SHA256 です。生のボディで計算し、古いタイムスタンプは拒否してください。 - `2xx` をすばやく返し、処理はそのあとで行います。遅いエンドポイントは、停止しているエンドポイントと区別がつきません。
- 冪等にします。 同じイベントが 2 回届くことがあります。
Sofia-Event-Idで重複を除いてください。
Webhook が発火しなくなった時
アドレスに到達できない
Sofia は自社のサーバーから呼び出すので、アドレスは公開の https でなければなりません。リダイレクトは追跡せず、10 秒間応答がなければ失敗として扱います。
アドレスがエラーを返す
2xx 以外の応答があると、1 分後、5 分後、30 分後、2 時間後に再試行し、最大 5 回まで試みます。まず自分のログを確認し、POST /v1/webhooks/{id}/test で再現してください。
投稿があなたのアプリで作成されていない
Webhook が通知するのは、あなたのアプリが作成した投稿だけです。画面から作成した投稿では発火しません。
あわせて読みたい
Webhook は、Sofia が動作した時に知らせます。Sofia を動かすには、Sofia API、sofia CLI、MCP サーバー(API タブと Agents タブ)、またはサードパーティ連携を使ってください。