> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-feat-cli-docs-generator.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook オートメーションを作成する

<Info>
  This feature requires a [Pro or Enterprise plan](https://wandb.ai/site/pricing/).
</Info>

このページでは、webhook のオートメーションを作成する方法を示します。Slack オートメーションを作成するには、代わりに [Slack オートメーションの作成](/ja/models/core/automations/create-automations/slack)を参照してください。

webhook オートメーションを作成するための大まかな手順は以下の通りです。

1. 必要に応じて、オートメーションに必要なアクストークン、パスワード、またはSSHキーなどを含む機密文字列ごとに[W\&B シークレットを作成](/ja/platform/secrets/)します。シークレットはチーム設定で定義されます。
2. [webhook を作成](#create-a-webhook)し、エンドポイントと承認の詳細を定義し、必要なシークレットにアクセスするためのインテグレーションのアクセス権を付与します。
3. [オートメーションを作成](#create-an-automation)し、監視する[event](/ja/models/core/automations/automation-events)と W\&B が送信するペイロードを定義します。ペイロードのために必要なシークレットに対して、オートメーションにアクセスを許可します。

## webhook の作成

チーム管理者は、チームに webhook を追加できます。

<Note>
  webhook が Bearer トークンを必要とする場合、またはペイロードが機密文字列を必要とする場合は、webhook を作成する前にそれを含む[シークレットを作成](/ja/platform/secrets/#add-a-secret)してください。webhook には最大で1つのアクストークンと1つの他のシークレットを設定することができます。webhook の認証と承認の要件は、webhook のサービスによって決まります。
</Note>

1. W\&B にログインし、チーム設定ページに移動します。
2. **Webhooks** セクションで、**New webhook** をクリックします。
3. webhook に名前を提供します。
4. webhook のエンドポイント URL を提供します。
5. webhook が Bearer トークンを必要とする場合、**Access token** をそれを含む [secret](/ja/platform/secrets/)に設定します。webhook オートメーションを使用する際、W\&B は `Authorization: Bearer` HTTP ヘッダーをアクストークンに設定し、`${ACCESS_TOKEN}` [payload variable](#payload-variables) でトークンにアクセスできます。
6. webhook のペイロードにパスワードまたは他の機密文字列が必要な場合、**Secret** をその文字列を含むシークレットに設定します。webhook を使用するオートメーションを設定するとき、シークレットの名前に `$` を付けて [payload variable](#payload-variables) としてシークレットにアクセスできます。

   webhook のアクセストークンがシークレットに保存されている場合は、アクセストークンとしてシークレットを指定するために次のステップを *必ず* 完了してください。
7. W\&B がエンドポイントに接続し、認証できることを確認するには：

   1. オプションで、テスト用のペイロードを提供します。ペイロード内で webhook がアクセス可能なシークレットを参照するには、その名前に `$` を付けます。このペイロードはテスト用であり保存されません。オートメーションのペイロードは [create the automation](#create-a-webhook-automation) で設定します。シークレットとアクセストークンが `POST` リクエストで指定されている場所を表示するには、[Troubleshoot your webhook](#troubleshoot-your-webhook) を参照してください。
   2. **Test** をクリックします。W\&B は、設定された認証情報を使用して webhook のエンドポイントに接続しようとします。ペイロードを提供した場合は、W\&B がそれを送信します。

   テストが成功しない場合は、webhook の設定を確認して再試行してください。必要に応じて、[Troubleshoot your webhook](#troubleshoot-your-webhook) を参照してください。

これで webhook を使用する [オートメーションを作成する](#create-a-webhook-automation)ことができます。

## オートメーションの作成

[webhook を設定](#reate-a-webhook)した後、**Registry** または **Project** を選択し、webhook をトリガーするオートメーションを作成するための手順に従います。

<Tabs>
  <Tab title="Registry">
    レジストリ管理者は、そのレジストリ内でオートメーションを作成できます。レジストリのオートメーションは、将来追加されるものを含めて、そのレジストリ内のすべてのコレクションに適用されます。

    1. W\&B にログインします。
    2. 詳細を確認するためにレジストリの名前をクリックします。
    3. レジストリにスコープされているオートメーションを作成するには、**Automations** タブをクリックし、**Create automation** をクリックします。レジストリにスコープされているオートメーションは、そのすべてのコレクション（将来作成されるものを含む）に自動的に適用されます。

       レジストリ内の特定のコレクションのみにスコープされたオートメーションを作成するには、コレクションのアクション `...` メニューをクリックし、**Create automation** をクリックします。または、コレクションを表示しながら、コレクションの詳細ページの **Automations** セクションにある **Create automation** ボタンを使用してそれに対するオートメーションを作成します。
    4. 監視する [**Event**](/ja/models/core/automations/automation-events) を選択します。イベントによっては表示される追加フィールドを入力します。例えば、**An artifact alias is added** を選択した場合、**Alias regex** を指定する必要があります。**Next step** をクリックします。
    5. [webhook](#create-a-webhook)を所有するチームを選択します。
    6. **Action type** を **Webhooks** に設定し、使用する [webhook](#create-a-webhook) を選択します。
    7. webhook にアクセストークンを設定している場合、`${ACCESS_TOKEN}` [payload variable](#payload-variables) でトークンにアクセスできます。webhook にシークレットを設定している場合、シークレットの名前に `$` を付けてペイロード内でアクセスできます。webhook の要件は webhook のサービスによって決まります。
    8. **Next step** をクリックします。
    9. オートメーションに名前を付けます。オプションで説明を入力します。**Create automation** をクリックします。
  </Tab>

  <Tab title="Project">
    W\&B 管理者はプロジェクト内でオートメーションを作成できます。

    1. W\&B にログインし、プロジェクトページに移動します。
    2. サイドバーの **Automations** をクリックします。
    3. **Create automation** をクリックします。
    4. 監視する [**Event**](/ja/models/core/automations/automation-events) を選択します。

       1. 表示される、追加フィールドを入力します。例えば、**An artifact alias is added** を選択した場合、**Alias regex** を指定する必要があります。

       2. オプションでコレクションフィルタを指定します。それ以外の場合、オートメーションはプロジェクト内のすべてのコレクションに適用され、将来追加されるものも含まれます。

       **Next step** をクリックします。
    5. [webhook](#create-a-webhook)を所有するチームを選択します。
    6. **Action type** を **Webhooks** に設定し、使用する [webhook](#create-a-webhook) を選択します。
    7. webhook がペイロードを必要とする場合、それを構築し、**Payload** フィールドに貼り付けます。webhook にアクセストークンを設定している場合、`${ACCESS_TOKEN}` [payload variable](#payload-variables) でトークンにアクセスできます。webhook にシークレットを設定している場合、シークレットの名前に `$` を付けてペイロード内でアクセスできます。webhook の要件は webhook のサービスによって決まります。
    8. **Next step** をクリックします。
    9. オートメーションに名前を付けます。オプションで説明を入力します。**Create automation** をクリックします。
  </Tab>
</Tabs>

## オートメーションの表示と管理

<Tabs>
  <Tab title="Registry">
    * レジストリのオートメーションは、レジストリの **Automations** タブから管理します。
    * コレクションのオートメーションは、コレクションの詳細ページの **Automations** セクションから管理します。

    これらのページのいずれかから、レジストリ管理者は既存のオートメーションを管理できます。

    * オートメーションの詳細を表示するには、その名前をクリックします。
    * オートメーションを編集するには、そのアクションの `...` メニューをクリックし、**Edit automation** をクリックします。
    * オートメーションを削除するには、そのアクションの `...` メニューをクリックし、**Delete automation** をクリックします。確認が必要です。
  </Tab>

  <Tab title="Project">
    W\&B 管理者はプロジェクトの **Automations** タブからプロジェクトのオートメーションを表示および管理できます。

    * オートメーションの詳細を表示するには、その名前をクリックします。
    * オートメーションを編集するには、そのアクションの `...` メニューをクリックし、**Edit automation** をクリックします。
    * オートメーションを削除するには、そのアクションの `...` メニューをクリックし、**Delete automation** をクリックします。確認が必要です。
  </Tab>
</Tabs>

## ペイロードのリファレンス

以下のセクションを使用して、webhook のペイロードを構築します。webhook とそのペイロードのテストについての詳細は、[Troubleshoot your webhook](#troubleshoot-your-webhook) を参照してください。

### ペイロード変数

このセクションでは、webhook のペイロードを構築するために使用できる変数について説明します。

| Variable                      | Details                                                                                                                  |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `${project_name}`             | アクションをトリガーした変更を所有するプロジェクトの名前。                                                                                            |
| `${entity_name}`              | アクションをトリガーした変更を所有する entity またはチームの名前。                                                                                    |
| `${event_type}`               | アクションをトリガーしたイベントのタイプ。                                                                                                    |
| `${event_author}`             | アクションをトリガーしたユーザー。                                                                                                        |
| `${artifact_collection_name}` | アーティファクトバージョンがリンクされているアーティファクトコレクションの名前。                                                                                 |
| `${artifact_metadata.<KEY>}`  | アクションをトリガーしたアーティファクトバージョンのトップレベルのメタデータキーの任意の値。`<KEY>` をトップレベルのメタデータキーの名前に置き換えます。webhook のペイロードにはトップレベルのメタデータキーのみが利用可能です。 |
| `${artifact_version}`         | アクションをトリガーしたアーティファクトバージョンの [`Wandb.Artifact`](/ja/models/ref/python/artifact/) 表現。                                       |
| `${artifact_version_string}`  | アクションをトリガーしたアーティファクトバージョンの`string` 表現。                                                                                   |
| `${ACCESS_TOKEN}`             | アクストークンが設定されている場合、[webhook](#create-a-webhook)で設定されたアクセストークンの値。アクセストークンは自動的に `Authorization: Bearer` HTTP ヘッダーに渡されます。    |
| `${SECRET_NAME}`              | 設定されている場合、[webhook](#create-a-webhook)に設定されたシークレットの値。`SECRET_NAME` をシークレットの名前に置き換えます。                                    |

### ペイロードの例

このセクションでは、一般的なユースケースのための webhook ペイロードの例を示します。例は [payload variables](#payload-variables) をどのように使用するかを示します。

<Tabs>
  <Tab title="GitHub repository dispatch">
    <Note>
      GHA ワークフローをトリガーするために必要なセットのアクセス許可を持っていることを確認してください。詳細については、[これらの GitHub Docs を参照してください](https://docs.github.com/en/rest/repos/repos?#create-a-repository-dispatch-event)。
    </Note>

    W\&B からリポジトリディスパッチを送信して GitHub アクションをトリガーします。例えば、リポジトリディスパッチを `on` キーのトリガーとして受け入れる GitHub ワークフローファイルを持っているとしましょう。

    ```yaml theme={null}
    on:
    repository_dispatch:
      types: BUILD_AND_DEPLOY
    ```

    リポジトリ用のペイロードは次のようなものになるかもしれません。

    ```json theme={null}
    {
      "event_type": "BUILD_AND_DEPLOY",
      "client_payload": 
      {
        "event_author": "${event_author}",
        "artifact_version": "${artifact_version}",
        "artifact_version_string": "${artifact_version_string}",
        "artifact_collection_name": "${artifact_collection_name}",
        "project_name": "${project_name}",
        "entity_name": "${entity_name}"
        }
    }
    ```

    <Note>
      webhook ペイロードの `event_type` キーは GitHub ワークフローファイルの `types` フィールドと一致しなければなりません。
    </Note>

    レンダリングされたテンプレート文字列の内容と位置は、オートメーションが設定されているイベントまたはモデルバージョンによって異なります。`${event_type}` は `LINK_ARTIFACT` または `ADD_ARTIFACT_ALIAS` としてレンダリングされます。以下に例のマッピングを示します。

    ```text theme={null}
    ${event_type} --> "LINK_ARTIFACT" または "ADD_ARTIFACT_ALIAS"
    ${event_author} --> "<wandb-user>"
    ${artifact_version} --> "wandb-artifact://_id/QXJ0aWZhY3Q6NTE3ODg5ODg3""
    ${artifact_version_string} --> "<entity>/model-registry/<registered_model_name>:<alias>"
    ${artifact_collection_name} --> "<registered_model_name>"
    ${project_name} --> "model-registry"
    ${entity_name} --> "<entity>"
    ```

    テンプレート文字列を使用して W\&B から GitHub Actions や他のツールにコンテキストを動的に渡します。これらのツールが Python スクリプトを呼び出すことができる場合、それらは [W\&B API](/ja/models/artifacts/download-and-use-an-artifact/)を通じて登録されたモデルアーティファクトを使用することができます。

    * リポジトリディスパッチの詳細については、[GitHub Marketplace の公式ドキュメント](https://github.com/marketplace/actions/repository-dispatch)を参照してください。

    * [Webhook Automations for Model Evaluation](https://www.youtube.com/watch?v=7j-Mtbo-E74\&ab_channel=Weights%26Biases) と [Webhook Automations for Model Deployment](https://www.youtube.com/watch?v=g5UiAFjM2nA\&ab_channel=Weights%26Biases) のビデオを視聴し、モデルの評価とデプロイメントのためのオートメーションを作成する方法を学びましょう。

    * W\&B の [レポート](https://wandb.ai/wandb/wandb-model-cicd/reports/Model-CI-CD-with-W-B--Vmlldzo0OTcwNDQw) をレビューし、GitHub Actions webhook オートメーションを使用した Model CI の作成方法を説明しています。この [GitHub リポジトリ](https://github.com/hamelsmu/wandb-modal-webhook) をチェックして、Modal Labs webhook を使用した model CI の作成方法を学びましょう。
  </Tab>

  <Tab title="Microsoft Teams notification">
    この例のペイロードは、webhook を使用して Teams チャンネルに通知する方法を示しています。

    ```json theme={null}
    {
    "@type": "MessageCard",
    "@context": "http://schema.org/extensions",
    "summary": "New Notification",
    "sections": [
      {
        "activityTitle": "Notification from WANDB",
        "text": "This is an example message sent via Teams webhook.",
        "facts": [
          {
            "name": "Author",
            "value": "${event_author}"
          },
          {
            "name": "Event Type",
            "value": "${event_type}"
          }
        ],
        "markdown": true
      }
    ]
    }
    ```

    実行時に W\&B データをペイロードに挿入するためにテンプレート文字列を使用できます（上記の Teams の例に示したように）。
  </Tab>

  <Tab title="Slack notifications">
    <Note>
      このセクションは歴史的な目的で提供されます。現在、webhook を使用して Slack と統合している場合は、[新しい Slack インテグレーション](#create-a-slack-automation) を使用するように設定を更新することをお勧めします。
    </Note>

    Slack アプリをセットアップし、[Slack API ドキュメント](https://api.slack.com/messaging/webhooks)で強調されている指示に従って、着信 webhook インテグレーションを追加します。`Bot User OAuth Token` の下で指定されているシークレットが W\&B webhook のアクストークンであることを確認してください。

    以下はペイロードの例です。

    ```json theme={null}
    {
        "text": "New alert from WANDB!",
    "blocks": [
        {
                "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "Registry event: ${event_type}"
            }
        },
            {
                "type":"section",
                "text": {
                "type": "mrkdwn",
                "text": "New version: ${artifact_version_string}"
            }
            },
            {
            "type": "divider"
        },
            {
                "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "Author: ${event_author}"
            }
            }
        ]
    }
    ```
  </Tab>
</Tabs>

## webhook のトラブルシューティング

W\&B アプリ UI または Bash スクリプトを使用して、インタラクティブに webhook のトラブルシューティングを行います。新しい webhook を作成する際や既存の webhook を編集する際に webhook をトラブルシューティングできます。

<Tabs>
  <Tab title="W&B App UI">
    チーム管理者は W\&B アプリ UI を使用して webhook をインタラクティブにテストできます。

    1. W\&B チーム設定ページに移動します。
    2. **Webhooks** セクションまでスクロールします。
    3. webhook の名前の横にある三点リーダー（ミートボールアイコン）をクリックします。
    4. **Test** を選択します。
    5. 現れた UI パネルから、表示されるフィールドに POST リクエストを貼り付けます。
           <Frame>
             <img src="https://mintcdn.com/wb-21fd5541-feat-cli-docs-generator/odvsXuVtRq39LmE_/images/models/webhook_ui.png?fit=max&auto=format&n=odvsXuVtRq39LmE_&q=85&s=debd4779ebaebcfad6cb919e895ca2b0" alt="webhook ペイロードのテストデモ" width="2610" height="1764" data-path="images/models/webhook_ui.png" />
           </Frame>
    6. **Test webhook** をクリックします。W\&B アプリ UI 内で、W\&B はエンドポイントからの応答を投稿します。
           <Frame>
             <img src="https://mintcdn.com/wb-21fd5541-feat-cli-docs-generator/odvsXuVtRq39LmE_/images/models/webhook_ui_testing.gif?s=bed9370c95290530f8f559f91f1280bc" alt="webhook のテストデモ" width="2396" height="2304" data-path="images/models/webhook_ui_testing.gif" />
           </Frame>

    [Testing Webhooks in Weights & Biases](https://www.youtube.com/watch?v=bl44fDpMGJw\&ab_channel=Weights%26Biases) のビデオを見て、デモをご覧ください。
  </Tab>

  <Tab title="Bash script">
    このシェルスクリプトは、W\&B が webhook オートメーションに送信する `POST` リクエストを生成する1つの方法を示しています。

    以下のコードをシェルスクリプトにコピーし、webhook のトラブルシューティングを行います。以下の値を指定してください。

    * `ACCESS_TOKEN`
    * `SECRET`
    * `PAYLOAD`
    * `API_ENDPOINT`

    ```bash webhook_test.sh theme={null}
    #!/bin/bash

    # Your access token and secret
    ACCESS_TOKEN="your_api_key"
    SECRET="your_api_secret"

    # The data you want to send (for example, in JSON 
    format)
    PAYLOAD='{"key1": "value1", "key2": "value2"}'

    # Generate the HMAC signature
    # For security, Wandb includes the 
    X-Wandb-Signature in the header computed
    # from the payload and the shared secret key 
    associated with the webhook
    # using the HMAC with SHA-256 algorithm.
    SIGNATURE=$(echo -n "$PAYLOAD" | openssl dgst 
    -sha256 -hmac "$SECRET" -binary | base64)

    # Make the cURL request
    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $ACCESS_TOKEN" \
      -H "X-Wandb-Signature: $SIGNATURE" \
      -d "$PAYLOAD" API_ENDPOINT
    ```
  </Tab>
</Tabs>
