演習 - GitHub イベントを使用して Azure 関数をトリガーする
この演習では、GitHub Webhook ペイロードからの情報を解析して結果を表示するように関数を更新します。
Webhook ペイロードを解析するように関数を更新する
Azure portal で、先ほど作成した関数アプリに移動します。
[関数アプリ] ペインの左側にあるメニュー ペインで、[関数] の下の [関数] を選択します。 "関数アプリ" の [関数] ペインが表示されます。
作成した HttpTrigger1 を選択します。 "関数" の [HtttpTrigger1] ペインが表示されます。
左側のメニュー ウィンドウの [開発者] で、[コードとテスト] を選択します。 "関数" の [コード + テスト] ペインが表示されます。
コードの上のパスで、ドロップダウン リストから index.js を選択します。 トリガーの JavaScript が表示されます。
関数本体の最後の 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") }; } }
上部のメニュー バーで、[保存] を選択します。
Gollum イベントを使用して Azure 関数をトリガーする
GitHub アカウントに戻ります。
このモジュールで使用しているリポジトリを選択します。
上部のメニュー バーで、[Settings](設定) を選択します。 [設定] ペインが表示されます。
サイドバーで、[Webhooks] を選択します。 [Webhook] ペインが表示されます。
Webhook で [編集] を選択します。 [Webhooks/Manage webhook](Webhook/Webhook の管理) ペインが表示されます。
[Recent Deliveries](最近のデリバリ) タブを選択します。
省略記号ボタン ([...]) を選択して最新の (一番上の) 配信エントリを選択します。
[Redeliver](再配信) を選択します。
[Redeliver payload?](ペイロードを再配信しますか?) ボックスで [Yes, redeliver this payload](はい、このペイロードを再配信します) を選択します。 この操作で、Wiki ページの変更がもう一度シミュレートされます。
省略記号ボタン ([...]) を選択して最新の (一番上の) 配信エントリ ("再配信") を選択します。
[応答] タブを選択します。Webhook によってどのように関数がトリガーされ、その関数で情報が解析されて、次のテキストのような応答が送信されたかがわかります。
Page is Home, Action is edited, Event Type is gollum