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 通知されるオブジェクト内にある secretHash で SecretKey の正当性を評価し、不正な場合は認証エラーを返すようにします。
実装例
// 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();
}