我正在使用dialogflow和webhook(nodejs)构建聊天机器人。我想在Google助手上运行此聊天机器人。我面临的问题是,如果一个人说“ 1.5 Lakhs”或“ 22 lacs”,则Google助手不会分别将其转换为150000或220万。
我在dialogflow上创建了一个名为“ get-customer-income”的意图,其中包含一些训练短语
对话框流自动获取参数sys.number和denom
这是我创建的实体
然后我通过webhook将其路由,以按如下方式处理denom实体
app.intent('get-customer-income',(conv,{number,denom}) =>{
const income = number;
console.log(number,denom);
var actualincome,denomination;
if(denom ==='lakhs'){
actualincome = income * 100000;
} else if(denom === 'crore'){
actualincome = income * 10000000;
} else {
actualincome = income;
}
conv.ask(`Your ${actualincome}`);
});
当我测试时,它可以在右侧面板上的Dialogflow chatbot模拟器上正常工作
当我在Google Assistant模拟器上对其进行测试时不起作用
答案 0 :(得分:0)
我的猜测是,它与没有denom
参数的训练短语匹配。
由于denom
参数是可选的,因此您可能根本不需要该训练短语。尝试删除它,进行再培训,然后看它如何匹配。
答案 1 :(得分:0)
得到解决方案。 我没有使用app.intent内部的参数,而是使用conv.parameters ['parameterName']
以下是我的Webhook现在的样子。
app.intent('get-customer-income',(conv) =>{
const number = conv.parameters['number'];
const denom = conv.parameters['denom'];
const income = number;
console.log(number,denom);
var actualincome,denomination;
if(denom ==='lakhs'){
actualincome = income * 100000;
} else if(denom === 'crore'){
actualincome = income * 10000000;
} else {
actualincome = income;
}
conv.ask(`Your actual income is ${actualincome} ${denom}`);
});
我知道我在此函数中使用了太多常量,这些常量可以替换。尽管这也像一种魅力!