购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.8 实现Webhook

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端点。 Im5M3Or1DeMp+ES00Ubp07ahwdJ8t+Mf694XHB7k+xW9W449/x7ISpPPD7skcTp8

点击中间区域
呼出菜单
上一章
目录
下一章
×