Azure Logic Apps および Power Automate でトリガーとして webhook を使用する

Webhooks は、イベント通知を提供する単純な HTTP コールバックです。 Azure Logic Apps と Power Automate の両方で、webhook を トリガー として使用できます。 ロジック アプリまたはフローは、このトリガーをリッスンし、トリガーが起動するたびにアクションを実行します。 このチュートリアルでは、Webhook をトリガーとして使用する方法を示します。

注意

webhook を通じて通知を送信できるサービスの例として GitHub を使用しますが、ここで紹介する手法は webhook を使用するあらゆるサービスに応用できます。

前提条件

OpenAPI 定義

Webhook はカスタム コネクタ の一部として Logic Apps および Power Automate に実装されているため、webhook のシェイプを定義する OpenAPI 定義を指定する必要があります。 トリガーを作成したいが OpenAPI 定義 を持っていない場合、カスタム コネクタ ウィザーの UI をトリガーする を使用し Webhook トリガーを定義できます。

OpenAPI 定義には、webhook ワークの作成に不可欠な 3 つの部分が含まれています。

  • webhook を作成する
  • API (ここでは、GitHub) から入ってくるフック要求を定義する
  • webhook を削除する

webhook を作成する

webhook は GitHub 側で /repos/{owner}/{repo}/hooks に対する HTTP POST により作成されます。 新しいロジック アプリまたはフローが作成されると、OpenAPI 定義で定義されたトリガーを使用してこの URL に投稿します。 また、トリガーが変更された場合は、この URL に投稿します。 以下では、GitHub に投稿される要求のスキーマが post プロパティに含まれています。

"/repos/{owner}/{repo}/hooks": {
    "x-ms-notification-content": {
    "description": "Details for Webhook",
    "schema": {
        "$ref": "#/definitions/WebhookPushResponse"
    }
    },
    "post": {
    "description": "Creates a Github webhook",
    "summary": "Triggers when a PUSH event occurs",
    "operationId": "webhook-trigger",
    "x-ms-trigger": "single",
    "parameters": [
        {
        "name": "owner",
        "in": "path",
        "description": "Name of the owner of targeted repository",
        "required": true,
        "type": "string"
        },
        {
        "name": "repo",
        "in": "path",
        "description": "Name of the repository",
        "required": true,
        "type": "string"
        },
        {
        "name": "Request body of webhook",
        "in": "body",
        "description": "This is the request body of the Webhook",
        "schema": {
            "$ref": "#/definitions/WebhookRequestBody"
        }
        }
    ],
    "responses": {
        "201": {
        "description": "Created",
        "schema": {
            "$ref": "#/definitions/WebhookCreationResponse"
        }
        }
    }
    }
},

重要

"x-ms-trigger": "single" プロパティはスキーマ拡張機能で、Logic Apps と Power Automate に対して、デザイナーで使用できるトリガーの一覧にこの webhook を表示するよう指示するため、必ず含めるようにしてください。

API から入ってくるフック要求を定義する

前のサンプルに示すように、受信フック要求のシェイプ (GitHub から Logic Apps または Power Automate への通知) は、カスタム x-ms-notification-content プロパティで定義されています。 要求のコンテンツ全体を含める必要はなく、ロジック アプリやフローで使用する部分だけで十分です。

Webhook を削除する

OpenAPI 定義では、Webhook を削除する方法の定義を含める必要があります。 トリガーを更新する場合、およびロジック アプリまたはフローを削除する場合は、Logic Apps および Power Automate が Webhook を削除しようと試みます。

"/repos/{owner}/{repo}/hooks/{hook_Id}": {
    "delete": {
    "description": "Deletes a Github webhook",
    "operationId": "DeleteTrigger",
    "parameters": [
        {
        "name": "owner",
        "in": "path",
        "description": "Name of the owner of targeted repository",
        "required": true,
        "type": "string"
        },
        {
        "name": "repo",
        "in": "path",
        "description": "Name of the repository",
        "required": true,
        "type": "string"
        },
        {
        "name": "hook_Id",
        "in": "path",
        "description": "ID of the Hook being deleted",
        "required": true,
        "type": "string"
        }
    ]
    }
},

Webhook の削除呼び出しに tuitional ヘッダーは含まれていません。 コネクタで使用されているのと同じ接続が、Webhook の削除呼び出しにも使用されます。

重要

Logic Apps または Power Automate で webhook を削除するには、webhook が作成された時点で、API の 201 応答に Location HTTP ヘッダーが含まれていなければ なりませんLocation ヘッダーには、HTTP DELETE と共に使用する webhook へのパスを含める必要があります。 たとえば、GitHub の応答に付属する Location の形式は https://api.github.com/repos/<user name>/<repo name>/hooks/<hook ID> です。

GitHub で認証を有効にする

Webhook 要求を Logic Apps または Power Automate に送信する API は、通常、何らかの認証形式を使用し、GitHub も例外ではありません。 GitHub はいくつかのタイプの認証をサポートしており、このチュートリアルでは、GitHub の個人用アクセス トークンを使用します。

  1. GitHub に移動し、サインインしていない場合はサインインします。

  2. 右上にある自分の プロフィール写真 をクリックして、メニューの 設定 を選択します。

    設定

  3. 左のメニューの 開発者向け設定 で、個人用アクセス トークン を選択します。

  4. 新しいトークンを生成 ボタンを選択して、要求された場合はパスワードを確認します。

    新しいトークンを生成する

  5. トークンの説明 ボックスに説明を入力します。

  6. admin:repo_hook チェックボックスをオンにします。

    admin:repo_hook

  7. トークンの生成 ボタンを選択します。

  8. 新しいトークンをメモします。

    新しいトークン

    重要

    このトークンに再びアクセスすることはできません。 チュートリアルの後半で使えるように、コピーしてメモ帳などに貼り付けておいてください。

OpenAPI 定義をインポートする

OpenAPI 定義を、Logic Apps または Power Automate 用にインポートすることから始めます。

Logic Apps 用に OpenAPI 定義をインポートする

  1. Azure ポータル に移動し、以前に Azure Logic Apps カスタム コネクタの作成 で作成した Logic Apps コネクタを開きます。

  2. コネクタのメニューで、Logic Apps コネクタを選択し、次に編集を選択します。

    Logic Apps コネクタの編集

  3. 全般で、OpenAPI ファイルをアップロードを選び、ダウンロードしたい OpenAPI ファイルにナビゲートします。

    アップロードに OpenAPI ファイル オプションを表示するスクリーンショット。

Power Automate 用 OpenAPI 定義をインポートする

  1. flow.microsoft.com に移動します。

  2. 右上隅にある歯車アイコンを選択し、カスタム コネクタを選択します。

    カスタム コネクタ

  3. カスタム コネクタの作成 を選択した後、Postman コレクションをインポート を選択します。

    カスタム コネクタを作成する

  4. カスタム コネクタの名前を入力し、ダウンロードした OpenAPI ファイルをナビゲートして選択を選びます。

    名前を入力するフィールドを示すスクリーンショット。

    パラメーター
    カスタム コネクタ タイトル "GitHubDemo"

カスタム コネクタの作成を終了する

  1. 一般 ページで、続行する を選択します。

  2. セキュリティ ページで、認証タイプから、基本認証 を選択します。

  3. 基本認証セクションで、ラベル フィールド用にテキストでユーザー名パスワードを入力します。 ロジック アプリまたはフローでトリガーが使用されるときに表示されるラベルです。

    基本認証

  4. ウィザードの上部で、名前が "GitHubDemo" に設定されていることを確認し、コネクタの作成 を選択します。

これで、ロジック アプリまたはフローでトリガーを使用する 準備が整いました、または、UI からトリガーを作成する方法について読むことができます。

UI からの webhook トリガーの作成

このセクションでは、OpenAPI 定義のトリガー定義を使用せずに UI でトリガーを作成する方法について説明します。 ベースラインの OpenAPI 定義から、またはカスタム コネクタ ウィザードで最初から開始します。

  1. 全般 ページで、説明と URL を指定します。

    パラメーター
    説明 "GitHub はソーシャル ソース コード リポジトリです。"
    URL "api.github.com"
  2. 安全保障 ページで、前のセクションで行ったように基本認証を構成します。

  3. 定義 ページで、+ 新規トリガー を選択して、トリガーの説明を入力します。 この例では、リポジトリに対してプル要求が行われたときに起動されるトリガーを作成します。

    トリガー-1 の作成

    パラメーター
    概要 "選択したリポジトリに対してプル リクエストが行われるとトリガーされます"
    説明 "選択したリポジトリに対してプル リクエストが行われるとトリガーされます"
    操作 ID "webhook-PR-trigger"
    表示/非表示 "なし" (詳細については以下を参照してください)
    トリガーの種類 "Webhook"

    ロジック アプリまたはフローでの操作やパラメータの 可視性 プロパティには、次のオプションがあります。

    • なし: 通常、ロジック アプリまたはフローで表示
    • 詳細: 追加メニューでは非表示
    • 内部: ユーザーには非表示
    • 重要: 必ずユーザーに最初に表示
  4. リクエスト エリアには、アクションの HTTP リクエストに基づく情報が表示されます。 サンプルからインポート を選択します。

    定義ページ - サンプルからインポート

  5. webhook トリガーの要求を定義し、インポート を選択します。 インポートするサンプルを提供します (画像の下)。 詳細については、GitHub API の参照 を参照してください。 Logic Apps と Power Automate によって標準の content-type とセキュリティ ヘッダーが自動的に追加されるため、サンプルからインポートするとき、これらを定義する必要はありません。

    トリガー-2 の作成

    パラメーター
    動詞 "POST"
    URL "https://api.github.com/repos/{owner}/{repo}/hooks"
    本文 以下を参照してください
    {
      "name": "web",
      "active": true,
      "events": [
        "pull_request"
      ],
      "config": {
        "url": "http://example.com/webhook"
      }
    }
    
  6. 応答 エリアには、アクションの HTTP 応答に基づく情報が表示されます。 既定の応答を追加 を選択します。

    定義ページ - 応答

  7. webhook トリガーの要求を定義し、インポート を選択します。 再度、インポートするサンプルを提供します。 詳細については、GitHub API の参照 を参照してください。

    トリガー -3 の作成

    {
      "action": "opened",
      "number": 1,
      "pull_request": {
        "html_url": "https://github.com/baxterthehacker/public-repo/pull/1",
        "state": "open",
        "locked": false,
        "title": "Update the README with new information",
        "user": {
          "login": "baxterthehacker",
          "type": "User"
        }
      }
    }
    
  8. トリガー構成エリアで、GitHub からコールバック URL 値を受信するパラメーターを選択します。 これは config オブジェクトの url プロパティです。

    トリガー-4 の作成

  9. ウィザードの上部で名前を入力し、次に コネクタを作成 を選択します。

トリガーとして webhook を使用する

すべての構成が完了したので、ロジック アプリまたはフローで webhook を使用できます。 次に、GitHub リポジトリが git プッシュを受信するたびに Power Automate モバイル アプリにプッシュ通知を送信するフローを作成します。

  1. flow.microsoft.com で、ページの上部にある 自分のフロー をクリックします。

  2. 空白から作成 を選択して、次のページで、何百ものコネクタとトリガーを検索 を選択します。

    コネクタの検索

  3. Power Automate のデザイナーで、以前に登録したカスタム コネクタを検索します。

    新しいトリガー

    一覧で、トリガーとして使用する項目を選択します。

  4. このカスタム コネクタを使用するのはこれが初めてであるため、コネクタに接続する必要があります。 接続情報を入力してから、作成 を選択します。

    新しい接続

    パラメーター
    つながり名 わかりやすい名前
    ユーザー名 自分の GitHub ユーザー名
    パスワード 先に作成した個人用アクセス トークン
  5. 監視するリポジトリの詳細を入力します。 OpenAPI ファイルの WebhookRequestBody オブジェクトのフィールドを認識できます。

    リポジトリ情報

    パラメーター
    所有者 監視するリポジトリの所有者
    リポジトリ 監視するリポジトリ

    重要

    アカウントが権限を与えられているリポジトリを使用する必要があります。 自分のリポジトリを作成すると簡単です。

  6. + 新規ステップ を選択し、アクションの追加 を選択します。

  7. プッシュ通知 アクションを検索して選択します。

    プッシュ通知

  8. テキスト フィールドとその他のフィールドに、動的コンテンツダイアログボックスの値を使用してテキストを入力します。 これらの値は、OpenAPI ファイルの WebhookPushResponse オブジェクトからです。

    プッシュ通知の詳細

    パラメーター
    接続名 わかりやすい名前
    ユーザー名 自分の GitHub ユーザー名
    パスワード 先に作成した個人用アクセス トークン
  9. ページ上部でフローに名前を付け、フローの作成 を選択します。

    フロー名

検証とトラブルシューティング

すべてが正しく設定されていることを確認するには、自分のフロー をクリックし、新しいフローの隣にある 情報アイコン をクリックし、実行履歴を表示します。

  • webhook 作成で "成功した" 実行が 1 つ以上表示されているはずです。 これは、GitHub 側で webhook が正常に作成されたことを示します。

  • 実行が失敗した場合、実行の詳細を掘り下げて、失敗した理由を確認できます。 失敗の原因が "404 Not Found" 応答の場合、使用したリポジトリで webhook を作成するための適切な権限が GitHub アカウントに与えられていない可能性があります。

概要

すべてが正しく構成されると、選択した GitHub リポジトリで git プッシュが発生するたびに、Power Automate モバイル アプリにプッシュ通知が送信されます。 上記のプロセスを利用すれば、あらゆる webhook 対応サービスをフローのトリガーとして使用できます。

次の手順

フィードバックを提供する

コネクタ プラットフォームの問題点や新機能のアイデアなどのフィードバックをお待ちしています。 フィードバックを提供するには、「問題を送信するか、コネクタに関するヘルプを入手する」にアクセスし、フィードバックの種類を選択します。