Webhook

2020-11-07
2023-01-19

1. Webhook-URLの準備

Webhookを受けるアプリケーションは、HTTPステータスコード「200」を返すようにしてください。Webhookとして有効なURLスキームはhttpsのみです。

2. Webhook-URLの登録

SPALOメーカーで行います。ワークスペースメニュー > 外部サービス連携 > Webhook を選択してください。登録時にWebhook-URLの有効性をチェックします。登録が完了するとWebhookCodeが発行されます。

3. ボットとの紐付け

データ参照

ボットのシナリオ作成時、回答タイプ「外部データ参照」を選択すると、WebhookCodeを選択するプルダウンが表示されます。一覧から使いたいWebhookCodeを選択してください。

データ設定

ボットのシナリオ作成時、回答タイプ「外部データ設定」を選択すると、WebhookCodeを選択するプルダウンが表示されます。一覧から使いたいWebhookCodeを選択してください。

データ送信

紐付けしたいボットを選択し、ボットのプロパティ画面に表示される「送信Webhook」のプルダウンより使いたいWebhookCodeを選択してください。

4. エンドポイント保護

webhookKeyを使った保護

WebhookKey を使い、不正なアクセスからエンドポイントを保護します。Webhook 通知されるオブジェクト内にある WebhookKey の正当性を評価し、不正な場合は認証エラーを返すようにします。

実装例

// check by webhookKey
if(req.body.webhookKey !== webhookKey){
  res.status(401).send("Unauthorized")
}

secretHashを使った保護

WebhookURL を登録すると、SecretKey が発行されます。この SecretKey を使い、不正なアクセスからエンドポイントを保護します。Webhook 通知されるオブジェクト内にある secretHashSecretKey の正当性を評価し、不正な場合は認証エラーを返すようにします。

実装例

// check by clientSecret's hash
  const auth = bcrypt.compareSync(
    process.env.SPALO_CLIENT_SECRET,
    req.body.secretHash
  );

  if (auth !== true) {
    console.log('Client Secret Error');
    return res.status(401).send('Unauthorized').end();
  }
PAGE TOP