Webhook

Repsona Webhook は、イベント通知を受信し、自動的にアクションを起動できるようにします。 タスクやノートの更新、コメントの追加、ステータスの変更などのイベントを、指定したURLに送信 (HTTPリクエスト)します。 他のサービスやシステムとの連携に利用することができます。

Webhook を受信するまでのステップ

次のようなステップで、Webhook を開始できます。

  • Webhook エンドポイントを作成する
  • Repsona からのリクエストを処理する(実装)
  • Webhook エンドポイントを Repsona に設定する
  • Webhook エンドポイントをテストする
  • Webhook の署名を確認する(推奨)

Webhook エンドポイントを作成する

POST メソッドを使用した未認証の Webhook リクエストを受け付けることができる HTTP エンドポイントを作成します。

Repsona からのリクエストを処理する(実装)

エンドポイントは、受信するイベント通知のタイプの Event (イベント) オブジェクトを読み取るように設定する必要があります。Repsona は JSON ペイロードを持つ POST リクエストの一部として、Webhook エンドポイントにイベントを送信します。イベントを解析し、2xx ステータスコードを返してください。 model, modelId, action を解析して、処理内容を決めることができます。

Example payload

{
  "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 エンドポイントを Repsona に設定する

プロジェクト設定 > Webhook のページから Webhook のエンドポイントURLと、通知するイベントタイプを設定します。Webhook のエンドポイントURLは、パブリックアクセス可能な HTTPS URL である必要があります。

Webhook エンドポイントをテストする

プロジェクト設定 > Webhook のページから、登録した URL にテストデータを送信できます。送信内容や結果は、送信履歴の一覧で確認できます。

Webhook の署名を確認する(推奨)

Repsona-Signature ヘッダに署名を含めてイベントを送信します。これにより、イベントが第三者ではなく Repsona によって送信されたことを検証できます。署名を検証するには、あらかじめ Webhook の設定から署名シークレットを取得しておく必要があります。

イベントに含まれる Repsona-Signature ヘッダには、タイムスタンプと署名が含まれます。タイムスタンプの前には t= が付けられ、署名の前には s= が付けられます。

Repsona-Signature: t=1674544389,s=768b05feb76b244902ab3a4eca119abb98e530ccbc3f2c48e18a7ed3a1cea0ab

ヘッダからタイムスタンプと署名を抽出する

要素のリストを取得するには、, 文字を区切り文字として使用してヘッダを分割します。次に、各要素を = 文字を区切り文字として使用して区切り、接頭語と値のペアを取得します。接頭語 t の値はタイムスタンプに対応し、s は署名に対応します。

signed_payload 文字列を準備する

signed_payload 文字列は以下を連結することで作成されます。

  • タイムスタンプ (文字列として)
  • 文字 .
  • 実際の JSON ペイロード (リクエスト本文)

想定される署名を決定する

SHA256 ハッシュ関数を使用して HMAC を計算します。エンドポイントの署名シークレットをキーとして使用し、signed_payload 文字列をメッセージとして使用します。

署名を比較する

ヘッダ内の署名を想定される署名と比較します。一致する場合、現在のタイムスタンプと受信したタイムスタンプの差を計算し、その差が許容範囲内かどうかを判断します。

人を中心に、もっといいチームに!

Repsonaはチームのための理想的な仕事管理ツールです
無料ではじめる