Repsona Webhook は、イベント通知を受信し、自動的にアクションを起動できるようにします。 タスクやノートの更新、コメントの追加、ステータスの変更などのイベントを、指定したURLに送信 (HTTPリクエスト)します。 他のサービスやシステムとの連携に利用することができます。
次のようなステップで、Webhook を開始できます。
POST メソッドを使用した未認証の Webhook リクエストを受け付けることができる HTTP エンドポイントを作成します。
エンドポイントは、受信するイベント通知のタイプの Event (イベント) オブジェクトを読み取るように設定する必要があります。Repsona は JSON ペイロードを持つ POST リクエストの一部として、Webhook エンドポイントにイベントを送信します。イベントを解析し、2xx ステータスコードを返してください。 model
, modelId
, action
を解析して、処理内容を決めることができます。
{
"type": "Task.update",
"event": {
"id": 20004,
"createdAt": 1673021684000,
"task": {
"id": 2,
"status": {
"id": 1,
"name": "Todo",
"isClosed": false,
"space": 1,
"project": 1
}
},
"user": {
"id": 1,
"name": "Reon",
"fullName": "Reon Walls",
"avatarUrl": "/dummy/avatar1.png"
},
"project": {
"id": 1,
"name": "elephant-website",
"fullName": "Elephant website development project"
}
}
}
プロジェクト設定 > Webhook
のページから Webhook のエンドポイントURLと、通知するイベントタイプを設定します。Webhook のエンドポイントURLは、パブリックアクセス可能な HTTPS URL である必要があります。
プロジェクト設定 > Webhook
のページから、登録した URL にテストデータを送信できます。送信内容や結果は、送信履歴の一覧で確認できます。
Repsona-Signature ヘッダに署名を含めてイベントを送信します。これにより、イベントが第三者ではなく Repsona によって送信されたことを検証できます。署名を検証するには、あらかじめ Webhook の設定から署名シークレットを取得しておく必要があります。
イベントに含まれる Repsona-Signature ヘッダには、タイムスタンプと署名が含まれます。タイムスタンプの前には t=
が付けられ、署名の前には s=
が付けられます。
Repsona-Signature: t=1674544389,s=768b05feb76b244902ab3a4eca119abb98e530ccbc3f2c48e18a7ed3a1cea0ab
要素のリストを取得するには、,
文字を区切り文字として使用してヘッダを分割します。次に、各要素を =
文字を区切り文字として使用して区切り、接頭語と値のペアを取得します。接頭語 t
の値はタイムスタンプに対応し、s
は署名に対応します。
signed_payload
文字列を準備するsigned_payload
文字列は以下を連結することで作成されます。
.
SHA256 ハッシュ関数を使用して HMAC を計算します。エンドポイントの署名シークレットをキーとして使用し、signed_payload
文字列をメッセージとして使用します。
ヘッダ内の署名を想定される署名と比較します。一致する場合、現在のタイムスタンプと受信したタイムスタンプの差を計算し、その差が許容範囲内かどうかを判断します。