



hook的英文本意是“挂钩”,Webhook的作用简而言之就是让你的项目与其他Web服务建立关联。
本节将为luckyNum Intent启用Webhook,并为luckyNum Intent的逻辑准备Webhook代码。请按照以下步骤操作。
(1)打开luckyNum Intent的Intent编辑页面并向下滚动到Fulfillment(执行)部分。在这里,打开Enable webhook call for this intent(为此Intent启用Webhook调用)选项。
现在,此Intent将查找从Webhook生成的响应。
(2)打开你选择的文本编辑器,为Webhook创建代码,使其使用JavaScript并在Firebase提供的Node.js平台上运行。
'use strict';
上述代码确保我们使用ECMAScript 5中定义的一组编码标准,这些标准为JavaScript语言提供了一些有用的修改,从而使其更安全,更少混淆。
(3)使用require函数将JavaScript中的模块导入项目。包括actions-on-google模块以及firebase-functions模块,因为该脚本将部署到Firebase。
// 从Actions on Google客户端库导入Dialogflow模块
const {dialogflow} = require('actions-on-google');
// 导入firebase-functions软件包
const functions = require('firebase-functions');
(4)为已经构建的Dialogflow代理实例化一个新的客户端对象。
// 实例化Dialogflow客户端
const app = dialogflow({debug: true});
请注意,这里的Dialogflow变量是actions-on-google的对象的模块。
(5)将该Webhook响应的Intent设置为luckyNum并将其传递给conv变量。
app.intent('luckyNum', (conv, {userName}) => {
let name = userName.name;
conv.close('Your lucky number is: ' + name.length );
});
可以看到,app变量保存了正在处理的对话的状态信息和我们从luckyNum Intent中提取的userName参数。然后,我们声明变量名称并将其设置为userName变量的name键。这样做是因为userName变量是一个JavaScript对象。你可以在右侧部分的测试控制台中通过为luckyNum Intent输入匹配的调用(如My name is Max)来查看它。
(6)设置Webhook,使其响应所有HTTPS POST请求,并通过Firebase将其导出为Dialogflow Fulfillment。
// 设置DialogflowApp对象以处理HTTPS POST请求 exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
本节开发的脚本需要部署到服务器以使其响应。因此,接下来我们将使用Cloud Functions部署此脚本,并将其用作聊天机器人的Webhook端点。