使用Dialogflow v2中的Node.js Webook的自定义快速回复

时间:2018-09-09 11:30:28

标签: javascript node.js webhooks dialogflow chatbot

我的用例可以更好地理解问题

我正在开发一个聊天机器人,以为工作人员提供支持,以解决假想装配线上的问题。机器人向用户打招呼后,它会建议他用其徽章号标识自己。然后,如果用户接受bot的提示,则bot会询问列表中需要支持哪个组件。
每个工人只能管理组装线组件中的一部分。 我的目标是仅向用户显示他有资格管理的零件。enter image description here

...但是真正的问题在这里

我的问题是关于通过Node.js Webhook设置快速答复。在这里您可以看到

我使用QuickReplies的webhook(简体)

const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {QuickReplies}= require('dialogflow-fulfillment');
const https=require('https');


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 getAllowedParts(agent){
      /* deleted all unuseful details*/
      agent.add(new QuickReplies(['A','B','C']);
  }  //close getAllowedParts


  let intentMap = new Map();
  intentMap.set('UserIntro', getAllowedParts);
  agent.handleRequest(intentMap);

}); 

但是它不起作用,在控制台中打印

  

TypeError:QuickReplies不是构造函数

我遵循了发现的here,并在https://github.com/dialogflow/dialogflow-fulfillment-nodejs/blob/master/docs/WebhookClient.md#WebhookClient+handleRequest使用了WebhookClient函数。

真正的问题是我不明白在Dialogflow v2中使用Node.js webhook添加非默认快速回复的正确过程是什么。 我也查看了rich messages documentantion,但发现它在此主题上非常缺乏。 任何帮助将不胜感激,谢谢

1 个答案:

答案 0 :(得分:1)

您应该会看到在Dialogflow控制台的默认index.js文件中设置的注释掉的快速答复示例。

 agent.add(new Suggestion(`Quick Reply`));
 agent.add(new Suggestion(`Suggestion`));

您还可以从Github repo看到快速回复的其他可用方法:

let suggestion = new Suggestion('reply to be overwritten');
suggestion.setReply('reply overwritten');