你如何基于意图的dialogflow的displayName正确调用条件?

时间:2018-08-09 16:41:43

标签: json chatbot dialogflow

我正在尝试为我的dialogflow代理执行webhook。但是,根据调用的特定意图,有四个特定的意图应该全部具有不同的JSON响应。现在,我基于被调用的意图的displayName创建一个开关盒。但是,这是行不通的。我是否应该使用其他参数来检查除displayName之外的其他意图?

这是我的代码,只能输出“测试”

server.post("/get-bill-details", function(req, res) {

let intentName = req.body.queryResult.intent.displayName;

let ret = "test";

if(intentName == "1 - Bill"){
    ret = "your billing amount is $120.";
}

return res.json({
    fulfillmentText: ret,
    source: "get-bill-details"
});

});

2 个答案:

答案 0 :(得分:0)

我建议您使用客户端库,因为它们可以简化解析JSON的过程并减少开发时间。您可以将NodeJS或Python客户端用于Dialogflow。另外,如果您需要Google Assistant,还可以使用以下NodeJS库来构建Webhook。他们都有关于如何在云上或使用Express和其他框架构建Webhooks的文档。

答案 1 :(得分:0)

与其匹配意图名称,不如给意图提供一个动作名称(请尽量不要使用空格,例如 input.welcome )。

enter image description here

然后使用

获取action参数
 <page name="studio_page_uj7zz" string="MyTabName">
  <group name="studio_group_uj7zz">
     <iframe marginheight="0" marginwidth="0" frameborder="0" src="https://www.example.com/salepage.aspx?SaleOrderId={model.id}" width="100%" height="1000"/>
  </group>
</page>

正如abhinav所说,您可以使用this库来缩短开发时间并提高代码的可读性,这也有助于跨平台响应Cards,Image和Recommendations。

let action = req.body.queryResult.action;
switch(action) {
   your logic..
}