Box Platformのさらなる利用方法
Webhookを使用すると、Boxコンテンツでイベントを監視し、アプリケーションに情報を返すことができます。これにより、多くのユースケースが新たに利用できるようになり、Box Platformで何が行われているかをアプリで認識する必要がある場合の十分な補完機能になります。
Box Platformの使用のサンプルアプリを補完します。以下のデモアプリは、こちらのGitHubリポジトリにあります。
最初のデモでは、ダイブマスターがダイビング証明書、保険証、同意書への署名を確認するためのタスクを作成しました。これはBoxウェブアプリ内で行われますが、ダイブマスターがこれらのドキュメントを承認または拒否したときにアプリで反応を得たいと考えています。
Webhookを使用してみましょう。
Box PlatformのWebhook
オブジェクト (通常はファイルまたはフォルダ) にWebhookを作成し、特定のトリガー (FILE.UPLOADやCOMMENT.CREATEなど) をリッスンできます。一覧については、こちらを確認してください。
イベントがトリガーされると、Box Platformは、指定されたURLにイベントペイロードを送信します
Webhookの作成
別の便利なツールの動作を紹介するために、ここでは、Box CLIを使用してWebhookを作成します。これまでにCLIを使用したことがない場合は、Box CLIの使い方のクイックスタートを確認するようにしてください。
すべてのコンテンツは、bookingsフォルダに保存され、ダイブサイト、日付、ダイバー別に分類されます。
ここでは、タスク割り当ての更新を監視したいと考えています。つまり、ダイブマスターがドキュメントを承認または拒否するたびにその変更がアプリに通知されるようにします。
また、署名リクエストの変更 (例: 完了、拒否済みなど) も追跡します。
これを実現するには、bookingsフォルダにWebhookを作成します。これにより、このフォルダの下のすべてのコンテンツが追跡され、以下のトリガーがリッスンされます。
リクエストの信頼性の検証
Webhookのリクエストを受け取る際にアプリで最初に行う必要があるのは、リクエストの信頼性の検証です。
リクエストを処理する新しいエントリポイントをアプリに作成します。
リクエスト本文、ヘッダー、webhook_idを作成したら、組み込まれているメソッドを使用して署名を確認することができます。
validate_messageメソッドは、2つのキーを使用して署名を確認し、いずれかのキーが有効な場合にtrueを返します。これにより、必要なときに1つのキーをローテーションできるようになります。
これらのキーの設定は、Box開発者コンソールの当該アプリケーションの [Webhook] ページで行われます。
リクエストの処理
有効なリクエストを取得したら、それを処理できます。次に、routes.pyの2つ目の部分を示します。
各トリガーのペイロードは若干異なります。この例では、イベントのステータスを取得し、特定のドキュメントについてデータベースを更新するだけです。
アプリの更新
アプリで各ドキュメントの更新されたステータスを取得したら、ユーザーに対する視覚的なキューを実装できます。最終的な結果は以下のとおりです。