在Google Assistant上捕获Lakhs和Crores中的数字-Dialogflow

时间:2019-07-03 09:07:27

标签: node.js dialogflow

我正在使用dialogflow和webhook(nodejs)构建聊天机器人。我想在Google助手上运行此聊天机器人。我面临的问题是,如果一个人说“ 1.5 Lakhs”或“ 22 lacs”,则Google助手不会分别将其转换为150000或220万。

我在dialogflow上创建了一个名为“ get-customer-income”的意图,其中包含一些训练短语

Training Phrases

对话框流自动获取参数sys.number和denom

enter image description here

这是我创建的实体

enter image description here

然后我通过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模拟器上正常工作

enter image description here

当我在Google Assistant模拟器上对其进行测试时不起作用

enter image description here

2 个答案:

答案 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}`);
});

我知道我在此函数中使用了太多常量,这些常量可以替换。尽管这也像一种魅力!