A.我做的步骤
>
"@google-cloud/firestore": "^0.16.1",
"actions-on-google": "^2.12.0",
"firebase-admin": "^8.10.0",
"firebase-functions": "^3.6.0",
"dialogflow": "^0.6.0",
"googleapis": "^27.0.0",
"dialogflow-fulfillment": "^0.6.1",
"request": "^2.85.0",
"uuid": "^3.0.1"
在index.js中添加管理员权限
var admin = require('firebase-admin');
var app = admin.initializeApp();
映射意图
intentMap.set('getVisaCountry', ffVisaCountry);
创建函数ffVisaCountry
B.我的代码
'use strict';
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
var admin = require('firebase-admin');
var app = admin.initializeApp();
process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
function welcome(agent) {
agent.add(`Welcome to my agent!`);
}
function fallback(agent) {
agent.add(`I didn't understand`);
agent.add(`I'm sorry, can you try again?`);
}
function ffVisaCountry(agent) {
let visaCountry = agent.parameters.visaCountry;
agent.add(`FF reply: ${visaCountry}`);
}
'https://developers.google.com/actions/images/badges/XPM_BADGING_GoogleAssistant_VER.png',
let intentMap = new Map();
intentMap.set('Default Welcome Intent', welcome);
intentMap.set('Default Fallback Intent', fallback);
intentMap.set('getVisaCountry', ffVisaCountry);
agent.handleRequest(intentMap);
});
C.我试着遵循交替论证。
D.代理人的预期和实际行为
预期行为:FF回复:{用户键入的国家名称}
实际行为:FF回复:[对象]
但是,为了使用从意图中的混合实体派生的参数(而不是@sys.geo-country等系统实体)
代码应写为
add(FF回复:${visaccountry['geo-country']}
);
谢谢
谢谢你的及时回答。正如你正确提到的,我在我的意图“getVisaCountry”中使用了混合实体“visaCountry”。根据您的解决方案,我使用@sys.geo-国家作为参数,在所述意图,问题解决。感谢您的支持和技术上完美的答案
问题在于visaccountry
是一个JavaScript对象而不是字符串。当您尝试将其转换为行中的字符串时
agent.add(`FF reply: ${visaCountry}`);
JavaScript不知道如何做到这一点,所以它将其表示为一个通用字符串“[对象对象”。
如果您只想查看对象符号,您可以使用JSON. stringify()方法将对象转换为JSON字符串。像这样的东西
agent.add(`FF reply: ${JSON.stringify(visaCountry)}`);
可能会给你这个结果
{ "name": "Canada", "alpha-2": "CA", "numeric": 124, "alpha-3": "CAN" }
如果您只是想要ISO-3166-1国家代码,您可以通过以下方式访问它
let countryCode = visaCountry['alpha-2'];
但是为什么Dialogflow要发送一个对象呢?
您不会显示正在使用的意图,但如果您使用的是@sys.geo country code
实体类型,则Dialogflow会将其作为对象发送给您的履行。
如果只需要名称,则可以使用@sys.geo country
实体类型。这将以当前语言环境中的字符串形式发送给您的代理。
我已经将Dialogflow配置为在询问名称后发出POST请求。当我在联机请求查看器中查看信息时,我可以在查询字符串部分中看到我想要的信息: 然而,在Django,我找不到这些信息。我试图在数据库中保存完整的请求和request.meta。 服务器上收到的请求如下所示: {http_content_type':'application/json'、'http_host':'www.mysite.i
问题内容: 我正在尝试对Hibernate 5.0.7.Final使用JPA2类型安全的条件查询。 root.get总是抛出异常。元模型类用于通过产生。 在未填充的JPA /Hibernate静态元模型属性中提出了类似的问题-NullPointerException,但这一次这两个类位于同一包中。 堆栈跟踪: 我的代码: 我用来确保它们将具有的接口。 模型类 生成的元模型Person_类 我随Pe
我试图访问选择参数设置的这个构建是参数化在一个Groovy构建脚本,为一个Jenkins自由式工作。 我尝试将列表用作,但它不起作用,并给出了以下输出: 我在Stackoverflow上引用了其他类似的帖子,但似乎没有什么对我有用。我还尝试了
本文向大家介绍简单实现winform编辑器,包括了简单实现winform编辑器的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了winform编辑器的具体实现代码,供大家参考,具体内容如下 就是写了一个挺简单的在winform里进行填写文本,里面用到的ADO.NET来链接数据库,在新建文本的时候需要写入.txt后缀名,打开或者是删除的时候需要先点击一下文本名。 写的不足请见谅! 以上就
问题内容: 这是我的一部分: This is the item reader: 这是Spring Batch在运行时所说的: 怎么了 在Spring 3.0中,我在哪里可以了解有关这些机制的更多信息? 问题答案: 如前所述,你的阅读器需要进行“逐步”调整。你可以通过注释完成此操作。如果你将该注释添加到阅读器,则它应该对你有用,如下所示: 该范围默认情况下不可用,但是如果你正在使用XML名称空间,则
嗨,伙计们,我试图检索数据从我的数据库使用HQL编辑器查询。我遵循了示例“在JavaSwing应用程序中使用Hibernate”中的步骤。我的配置文件如下: 映射: 使用这个:或我得到以下错误: org.hibernate.exception.SQLGrammarExcture:无法在org.hibernate.exception.SQLStateConverter.convert(SQLStat