演習 - GitHub イベントを使用して Azure 関数をトリガーする

完了

この演習では、GitHub Webhook ペイロードからの情報を解析して結果を表示するように関数を更新します。

Webhook ペイロードを解析するように関数を更新する

  1. Azure portal で、先ほど作成した関数アプリに移動します。

  2. [関数アプリ] ペインの左側にあるメニュー ペインで、[関数] の下の [関数] を選択します。 "関数アプリ" の [関数] ペインが表示されます。

  3. 作成した HttpTrigger1 を選択します。 "関数" の [HtttpTrigger1] ペインが表示されます。

  4. 左側のメニュー ウィンドウの [開発者] で、[コードとテスト] を選択します。 "関数" の [コード + テスト] ペインが表示されます。

  5. コードの上のパスで、ドロップダウン リストから index.js を選択します。 トリガーの JavaScript が表示されます。

  6. 関数本体の最後の 3 行のコードを次のコードに置き換えて、コードを更新します。

    if (req.body.pages[0].title){
        context.res = {
            body: "Page is " + req.body.pages[0].title + ", Action is " + req.body.pages[0].action + ", Event Type is " + req.headers['x-github-event']
        };
    }
    else {
        context.res = {
            status: 400,
            body: ("Invalid payload for Wiki event")
        };
    }
    

    このコードでは、要求ヘッダーからイベントの種類を取得し、メッセージ本文から title フィールドと action フィールドを取得します。 この情報は、ページが変更されたことと、編集されたか新規作成されたかを示します。 このコードは、それからアクションをまとめた応答を構成します。 JavaScript の作成例は次のとおりです。

    module.exports = async function (context, req) {
        context.log('JavaScript HTTP trigger function processed a request.');
    
        const name = (req.query.name || (req.body && req.body.name));
        const responseMessage = name
            ? "Hello, " + name + ". This HTTP triggered function executed successfully."
            : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
    
        if (req.body.pages[0].title){
            context.res = {
                body: "Page is " + req.body.pages[0].title + ", Action is " + req.body.pages[0].action + ", Event Type is " + req.headers['x-github-event']
            };
         }
         else {
            context.res = {
                status: 400,
                body: ("Invalid payload for Wiki event")
            };
        }
    }
    
  7. 上部のメニュー バーで、[保存] を選択します。

Gollum イベントを使用して Azure 関数をトリガーする

  1. GitHub アカウントに戻ります。

  2. このモジュールで使用しているリポジトリを選択します。

  3. 上部のメニュー バーで、[Settings](設定) を選択します。 [設定] ペインが表示されます。

  4. サイドバーで、[Webhooks] を選択します。 [Webhook] ペインが表示されます。

  5. Webhook で [編集] を選択します。 [Webhooks/Manage webhook](Webhook/Webhook の管理) ペインが表示されます。

  6. [Recent Deliveries](最近のデリバリ) タブを選択します。

  7. 省略記号ボタン ([...]) を選択して最新の (一番上の) 配信エントリを選択します。

  8. [Redeliver](再配信) を選択します。

  9. [Redeliver payload?](ペイロードを再配信しますか?) ボックスで [Yes, redeliver this payload](はい、このペイロードを再配信します) を選択します。 この操作で、Wiki ページの変更がもう一度シミュレートされます。

  10. 省略記号ボタン ([...]) を選択して最新の (一番上の) 配信エントリ ("再配信") を選択します。

  11. [応答] タブを選択します。Webhook によってどのように関数がトリガーされ、その関数で情報が解析されて、次のテキストのような応答が送信されたかがわかります。

    Page is Home, Action is edited, Event Type is gollum