如何解决如何使用带有Node.js的Webhook Tripadvisor API跟踪Dialogflow中的几个意图
我正在Dialogflow中创建一个代理商,用于使用Tripadvisor API预订酒店。
示例:
代理:您好,我可以帮助您预订酒店房间或查看您的预订
用户:预订酒店房间
代理商:在哪个城市?
用户:巴塞罗那
代理商:我们推荐酒店“ Barcelona Hoteles”。你要我预定吗?
用户:是
代理:告诉我您的全名
用户:Johnny Appleseed
代理:好的,Johnny Appleseed。 我在“巴塞罗那酒店”酒店预订。
为此,我创建了两个后续意图,具体取决于用户是否要在代理商推荐的酒店预订:
我正在使用ngrok将本地开发服务器公开到Internet。
我想要实现的是,通过询问用户的姓名,整个预订都存储在MYSQL数据库中(名称,预订所在的城市,人数,签到,签出...),以便,一旦用户通过与代理再次开始对话来结束与代理的交互,而不是想要进行保留,而是希望查看其保留,则代理会从数据库中读取其保留,只是询问他的名字。因此,要做到这一点,我需要创建另一个意图(跟随意图“是”,在上面的照片中它对应于“ reservaIntent-是”),以获得用户的全名,但是我该如何在我的Node.js项目中进行此开发?
这是我代码的最新开发。在这里,我向Dialogflow发送答案,说“ x”的推荐酒店是“ x”:
request(options,function (error,response,body) {
var json2 = JSON.parse(body);
respuestaWebhook.fulfillmentText = 'For the city ' + city+ ' we recommend the hotel ' + json2.data[0].name + '. Do you want me to book?';
res.json(respuestaWebhook);
// where "json2.data[0].name" is the name of the hotel received from de Tripadvisor API
现在,如果用户回答“是”,则当代理在“后续意图-是”中询问其姓名时,我如何在Node.js中收集该变量,以后再将其存储在我的MYSQL数据库?
我希望这很清楚。不要犹豫,问我是否有不清楚的地方:)
解决方法
如果我在这里正确理解了您的情况,那么您需要对此处的方法进行一些更改以使其变得简单。
让我从第一个特工的响应开始,看来您正在尝试按照相同的意图采取行动:
代理商:您好,我可以帮助您预订酒店房间或查看预订信息
理想地,从这里开始,应该进行两个意图不同的对话。
一种用于您当前正在阅读的书,另一种用于获取现有的预订详细信息:
因此,请创建双亲意图:
- 创建预订:您已经在处理并成功预订。
- 获取预订详细信息::它具有一个跟进意图AskName以获取名称并显示预订详细信息。所以,这就是对话的样子
代理人: 您好,我可以帮助您预订酒店房间或查看预订信息
用户:我要检查我的预订
//This above response will be decision point to invoke either of intent (**create a booking or get reservation**)
代理商:告诉我您的全名
用户:约翰尼·苹果种子
代理人: 好的,Johnny Appleseed。您已于8月31日在巴塞罗那酒店预订。
现在在Node JS中也非常简单。对话设计有些不同。您需要像对话一样设计每个对话流。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。