练习 - 使用 GitHub 事件触发 Azure 函数
在本练习中,你将更新函数以分析来自 GitHub Webhook 有效负载的信息,并显示结果。
更新函数以分析 Webhook 有效负载
在该 Azure 门户中,转到之前创建的函数应用。
在“函数应用”窗格的左侧菜单窗格中,在“函数”下,选择“函数”。 此时将显示函数应用的“函数”窗格。
选择创建的 HttpTrigger1。 此时将显示函数的“HttpTrigger1”窗格。
在左侧菜单窗格的“开发人员”下,选择“代码 + 测试”。 此时将显示函数的“代码 + 测试”窗格。
在代码上方的路径中,从下拉列表中选择“index.j”。 此时将显示触发器的 JavaScript。
通过将函数体中的最后三行代码替换为以下代码来更新代码。
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") }; }
此代码从请求标头中检索事件类型,并从消息正文中检索标题和操作字段。 此信息指示页面已更改,并指示页面是编辑的页面还是新创建的页面。 该代码随后构造一个汇总该操作的响应。 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 帐户。
选择用于此模块的存储库。
在顶部菜单栏中,选择“设置”。 随即将显示“设置”窗格。
在边栏中,选择“Webhooks”。 此时将显示“Webhook”页。
为 Webhook 选择“编辑”。 此时将显示“Webhooks/管理 Webhook”窗格。
选择“最近提交”选项卡。
通过选择省略号按钮 (...),选择最新的(顶部)提交条目。
选择“Redeliver”。
在出现的“重新提交有效负载?”对话框中,选择“是的,请重新提交此有效负载”。 此操作模拟你再次更改 Wiki 页面。
通过选择省略号按钮 (...),选择最新的(顶部)提交条目(重新提交)。
选择“响应”选项卡。随即会看到 Webhook 如何触发函数,然后分析信息并发回类似于以下文本的响应:
Page is Home, Action is edited, Event Type is gollum