BoxのWebhook v2ってどんな感じ？

# 概要

この投稿では、Boxで2022年10月に新しくリリースされたwebhook v2をwebhook siteを使って確認して行きたいと思います。

なお、webhook v1とv2の違いについては、下記のページを参考にしてください。
https://ja.developer.box.com/guides/webhooks/

# Webhookとは？
Webhookとは、ざっくり下記になります。
- あるイベントが発生した際に指定したURLにPOSTリクエストを行う仕組み

webhookを使うとどんなことができるかというと、Boxの特定フォルダにファイルがアップロードされたら、Microsoft Teamsにファイルがアップロードされたとこを通知するといった連携を行うことができたりします。

# Webhook v2を見てみよう
webhook v2については下記のDeveloperページに詳細が記載しているので、確認してみてください。
https://ja.developer.box.com/guides/webhooks/v2/create-v2/

Boxの開発者コンソールでアプリを作成する必要があるのですが、今回は対象アプリはある前提で話を進めて行きたいと思います。

開発者コンソールで対象アプリを選択し、Wehhook v2を作成していきます。
![スクリーンショット 2022-12-05 15.52.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2988179/8eb5ecdc-3c64-2535-5d1e-8ba4a697486a.png)


次にWebhookトリガーを受け取る「URLアドレス」を追記します。
今回はWehbook.siteのURLを使うので、「Your unique URL」という部分に記載されているURLをコピーして転記をします。

また、どのようなアクションが起きたらトリガーを発生させるのかについて、「Wehbookをトリガーする項目のタイプ」から選択をします。どのようなトリガーがあるかについては、[トリガーの種類](https://ja.developer.box.com/reference/resources/webhook-invocation/)を参考にしてください。
今回は、ファイルアップロードのトリガーを設定してみます。

![スクリーンショット 2022-12-08 14.33.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2988179/930cfb96-27e7-f2e6-c0cb-30fd28e7dbcb.png)

設定できたら実際に対象フォルダにファイルをアップロードして、webhook.siteのレスポンスを確認します。参考のレスポンスが下記になります。
ファイル名、ファイルID、誰がアップロードしたのかなどの情報が記載されていることがわかります。

```
{
  "type": "webhook_event",
  "id": "c4f8b689-ad4f-4755-95ce-d00850f2897a",
  "created_at": "2022-12-07T21:40:33-08:00",
  "trigger": "FILE.UPLOADED",
  "webhook": {
    "id": "1010093363",
    "type": "webhook"
  },
  "created_by": {
    "type": "user",
    "id": "11829592334",
    "name": "Box管理者",
    "login": "htsunoi+mydemo301@boxdemo.com"
  },
  "source": {
    "id": "1085409957889",
    "type": "file",
    "file_version": {
      "type": "file_version",
      "id": "1178858760289",
      "sha1": "実際には英数字の文字列が入ります"
    },
    "sequence_id": "0",
    "etag": "0",
    "sha1": "実際には英数字の文字列が入ります",
    "name": "履歴書.pdf",
    "description": "",
    "size": 76852,
    "path_collection": {
      "total_count": 2,
      "entries": [
        {
          "type": "folder",
          "id": "0",
          "sequence_id": null,
          "etag": null,
          "name": "すべてのファイル"
        },
        {
          "type": "folder",
          "id": "131310817698",
          "sequence_id": "0",
          "etag": "0",
          "name": "Test"
        }
      ]
    },
    "created_at": "2022-12-07T21:40:33-08:00",
    "modified_at": "2022-12-07T21:40:33-08:00",
    "trashed_at": null,
    "purged_at": null,
    "content_created_at": "2021-05-26T21:01:51-07:00",
    "content_modified_at": "2021-05-26T21:01:51-07:00",
    "created_by": {
      "type": "user",
      "id": "11829592334",
      "name": "Box管理者",
      "login": "htsunoi+mydemo301@boxdemo.com"
    },
    "modified_by": {
      "type": "user",
      "id": "11829592334",
      "name": "Box管理者",
      "login": "htsunoi+mydemo301@boxdemo.com"
    },
    "owned_by": {
      "type": "user",
      "id": "11829592334",
      "name": "Box管理者",
      "login": "htsunoi+mydemo301@boxdemo.com"
    },
    "shared_link": null,
    "parent": {
      "type": "folder",
      "id": "131310817698",
      "sequence_id": "0",
      "etag": "0",
      "name": "Test"
    },
    "item_status": "active"
  },
  "additional_info": []
}
```
# Webhookどんなユースケースに使える？

+ ファイルがアップロードされたら、共有リンクを発行して、ビジネスチャット（Microsoft Teams、Slack、LINE WORKSなど）に通知を発行する。

+ 共有リンクが発行されたら、オープンリンク（全てのユーザーが閲覧可能）かを確認して、オープンリンクの場合は共有リンクを削除する。

+ ファイルがアップロードされたら対象ファイルに記載されているメタデータを抜き出して、別のシステムに投入する。

# 最後に
webhookはあくまでもトリガーの通知なので、その通知を使ってどのようなアクションを実行するかはユーザー側が考えないといけません。
ユーザー部門ではコーディングが難しいため、今はノーコードツールがたくさん出ているのでそれらを活用するのが良いと思います。

例えば、下記のようなツールがあるので、これらとBoxを組み合わせてDXを推進してみてはいかがでしょうか？

+ Microsoft PowerAutomate
+ ASTERIA WARP