Webhook で Drime Sign のイベントを受け取る
Drime Sign でドキュメントが送信、閲覧、署名、辞退、完了されたときにサーバーで HTTP 通知を受け取り、各リクエストが Drime から届いたものか確認します。
Webhook を使うと、署名リクエストで何かが起こるたびに、Drime からサーバーにリクエストが送られます。各リクエストは JSON の POST で、シークレットで署名されているため、Drime から届いたものかどうかをサーバーで確認できます。
#Webhook を追加する
設定 > 開発者 > Webhook を開きます。
Sign から開く場合は、環境設定をクリックして Webhook タブを開き、開発者設定を開くをクリックします。
Webhook を追加をクリックします。
エンドポイント URL に、リクエストを受け取るサーバーのアドレスを入力します。
イベントで、受け取りたいイベントをそれぞれオンにして、Webhook を作成をクリックします。
Webhook を作成しましたと表示されれば完了です。
この時点でシークレットをコピーしてから、完了をクリックします。
Webhook のシークレット:今すぐコピーしてくださいとあるとおり、シークレットは一度しか表示されません。安全な場所に保管してください。

#イベント
イベント | 送信されるタイミング |
|---|---|
| ドキュメントが署名に回されたとき |
| すべての署名者が署名したとき |
| 署名者が辞退し、ドキュメントが辞退扱いになったとき |
| 署名者がドキュメントを開いたとき |
| 署名者が署名したとき |
| 署名者が辞退したとき |
| テンプレートが作成されたとき |
#Drime から送られる内容
各リクエストには、次のヘッダーが含まれます。
X-Drime-Event:イベント(例:envelope.completed)X-Drime-Delivery:配信の番号X-Drime-Signature:sha256=に続けて、シークレットで計算した生のボディの HMAC SHA-256
JSON のボディには、event_type、event_uuid、timestamp、data(対象のドキュメントとその署名者)が含まれます。Webhook セクションのリクエストの例と署名の検証に、完全な例が表示されます。
同じ配信が複数回届くことがあります。event_uuid を使って、各イベントを1回だけ処理してください。
#署名を検証する
シークレットを使ってリクエストの生のボディの HMAC SHA-256 を計算し、X-Drime-Signature ヘッダーと比較します。Node.js の場合の例は次のとおりです。
import crypto from 'node:crypto';
function isFromDrime(rawBody, header, secret) {
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
return header.length === expected.length && crypto.timingSafeEqual(Buffer.from(header), Buffer.from(expected));
}JSON として解析する前の、受け取ったままのボディを使ってください。
#配信をテスト・確認する
テスト送信でテストイベントを送信できます。テストイベントをキューに追加しました。配信ログをご確認くださいと表示されます。
配信履歴には、各リクエストがステータス(成功、保留中、失敗)とともに一覧表示されます。再送信で配信をもう一度送信できます。
サーバーが応答しない場合やエラーを返した場合、Drime は約34時間にわたって最大10回まで再試行します。
オン/オフのスイッチで、Webhook を削除せずに一時停止できます。一時停止すると Webhook を一時停止しました、再び有効にすると Webhook を有効にしましたと表示されます。
#シークレットの変更と Webhook の削除
鍵を再生成で新しいシークレットを作成します。アプリにシークレットを再生成しますか?現在のシークレットは直ちに使用できなくなります。 と警告が表示されます。すぐにサーバーの設定を更新してください。
削除で Webhook を削除します。この Webhook とその配信履歴を削除しますか? と確認が表示されます。
#うまくいかない場合
表示される内容 | 対処方法 |
|---|---|
エンドポイント URL を入力してください | Webhook を作成する前に、サーバーのアドレスを入力してください。 |
イベントを少なくとも1つ有効にしてください | イベントでイベントを1つ以上選んでください。 |
配信が失敗のままになる | サーバーにインターネットからアクセスでき、成功を示すコードを返すことを確認してください。そのあと、再送信をクリックします。 |
サーバーで署名の検証に失敗する | 解析した JSON ではなく生のボディで HMAC を計算し、現在のシークレットを使ってください。鍵を再生成のあとは、古いシークレットは使えません。 |
#次のステップ
この記事は役に立ちましたか?