Botframework 机器人如何';包含qnaid和上下文的s卡的行为类似于QnA测试?

Botframework 机器人如何';包含qnaid和上下文的s卡的行为类似于QnA测试?,botframework,qnamaker,Botframework,Qnamaker,在QnA门户中的测试(如下面的屏幕截图)中,这些按钮是由QnA的后续提示创建的,当单击这些按钮时,下一个Http请求包含所有提示信息,如文本和qnaid。下一个回答将是具体问题的答案。 但是在Bot-qnamaker提示示例中,当单击按钮时,Http请求只包含作为问题的文本,因此QnA将不会获得与qnaid绑定的答案。答案可能与qnaid无关,只与上下文有关。 那么,有没有人对如何创建类似机器人的QnA测试有什么想法?一般来说,这就是如何获得从getAnswers()API调用生成的与从QnA获

在QnA门户中的测试(如下面的屏幕截图)中,这些按钮是由QnA的后续提示创建的,当单击这些按钮时,下一个Http请求包含所有提示信息,如文本和qnaid。下一个回答将是具体问题的答案。 但是在Bot-qnamaker提示示例中,当单击按钮时,Http请求只包含作为问题的文本,因此QnA将不会获得与qnaid绑定的答案。答案可能与qnaid无关,只与上下文有关。
那么,有没有人对如何创建类似机器人的QnA测试有什么想法?

一般来说,这就是如何获得从getAnswers()API调用生成的与从QnA获得的相同返回结果的方法

首先,将当前上下文传递到getAnswers()(其中包含用户的消息:“帮助”、“树从何而来”、“为什么是天蓝色?”等),然后将结果映射到一个变量:

const stepResults=turnContext.context;
让qnaResults=wait this.qnaMaker.getAnswers(stepResults);
验证返回的响应后,可以将结果文本传递到“活动”:

wait innerDc.prompt('confirmport',qnaResults[0].context.prompts[0].displayText);
记录上述qnaResults[0].context.prompts会显示返回的提示值与devtools中的请求负载对齐:

对于您链接的样本,
提示
值是返回的
QnAPrompts[]
结果(即后续提示)。如果在整个QnA结果中出现提示,则会将其解析并显示为按钮。
displayText
来自该提示符

公共静态活动GetHeroCard(字符串cardTitle,QnAPrompts[]提示)
{
var chatActivity=Activity.CreateMessageActivity();
var按钮=新列表();
var sortedPrompts=prompts.OrderBy(r=>r.DisplayOrder);
foreach(sortedPrompts中的var提示符)
{
按钮。添加(
新行动
{
Value=prompt.DisplayText,
Type=ActionTypes.ImBack,
Title=prompt.DisplayText,
});
}
var plCard=新HeroCard()
{
Title=cardTitle,
Subtitle=string.Empty,
按钮=按钮
};
var attachment=plCard.ToAttachment();
chatActivity.Attachments.Add(附件);
返回(活动)聊天活动;
}

希望有帮助

请手动点击图片,似乎我无法上传一张图片,只是一个链接