Node.js 检测对话结束并在azure机器人中请求反馈

Node.js 检测对话结束并在azure机器人中请求反馈,node.js,botframework,azure-bot-service,Node.js,Botframework,Azure Bot Service,我正在Nodejs中使用azurebot框架创建聊天机器人。 QnA maker存储问题答案和一个LUIS应用程序。 现在我想检测对话的结束(通过检查长时间没有回复或刷新网页),并在对话结束时添加反馈卡。您可以通过使用oneddialog方法和使用单独的类来管理反馈过程来实现这一点 首先,我有一个组件对话框,它导入feedback.js文件并调用onEndDialog中关联的onTurn()方法 接下来,我创建mainDialog.js文件,其中mainDialog扩展了FeedbackDial

我正在Nodejs中使用azurebot框架创建聊天机器人。 QnA maker存储问题答案和一个LUIS应用程序。
现在我想检测对话的结束(通过检查长时间没有回复或刷新网页),并在对话结束时添加反馈卡。

您可以通过使用
oneddialog
方法和使用单独的类来管理反馈过程来实现这一点

首先,我有一个组件对话框,它导入
feedback.js
文件并调用
onEndDialog
中关联的
onTurn()
方法

接下来,我创建mainDialog.js文件,其中
mainDialog扩展了FeedbackDialog
。通过这种方式,
FeedbackDialog
位于
main对话框的“顶部”
监听特定的用户输入或活动。在本例中,它正在侦听要调用的
EndDialog()
。您可能需要添加额外的验证,以确保它仅在调用所需的
EndDialg()
时触发

最后,在
feedback.js
文件中,这是您的反馈代码/逻辑所在的位置。为了简单起见,我使用一个社区项目,
botbuilder feedback
,来生成用户反馈界面。大部分代码集中于创建和管理“基本”对话框。其他对话框活动来自
botbuilder反馈

作为参考,此代码部分基于Botbuilder示例repo中找到的示例

希望有帮助


feedbackDialog.js:

const{ComponentDialog}=require('botbuilder-dialogs');
const{Feedback}=require('./反馈');
类反馈对话框扩展了ComponentDialog{
构造函数(){
超级();
this.feedback=新反馈();
}
异步onEndDialog(innerDc){
return等待这个.feedback.onTurn(innerDc);
}
}
module.exports.FeedbackDialog=反馈对话框;
mainDialog.js:

const{FeedbackDialog}=require('./FeedbackDialog');
类MainDialog扩展了反馈对话框{
[...]
}
module.exports.MainDialog=MainDialog;
feedback.js:

const{ActivityTypes}=require('botbuilder');
const{DialogTurnStatus}=require('botbuilder-dialogs');
const Botbuilder_Feedback=require('Botbuilder-Feedback')。反馈;
课堂反馈{
异步onTurn(turnContext,下一个){
if(turnContext.activity.type==ActivityTypes.Message){
等待Botbuilder_反馈。sendFeedbackActivity(turnContext,“请为该对话框评分”);
返回{'status':DialogTurnStatus.waiting};
}否则{
返回{“状态”:DialogTurnStatus.cancelled};
}
等待下一个();
};
}
module.exports.Feedback=反馈;