包含qnaid和上下文的漫游器卡的行为类似于QnA测试吗?

时间:2019-11-19 10:18:15

标签: botframework qnamaker

在QnA门户的测试中,如下面的屏幕截图所示,这些按钮是由QnA的后续提示创建的,单击这些按钮时,下一个Http请求将包含所有提示信息,例如文本和qnaid。那些下一个响应将是特定qnaid的答案。 但是在Bot -qnamaker提示示例enter link description here中,单击按钮时,Http请求仅包含文本作为问题,因此QnA将不会获得与qnaid绑定的答案。答案可能不会与qnaid绑定,而不会与上下文绑定。 enter image description here 所以有人对如何创建像QnA测试这样的机器人有想法吗?

1 个答案:

答案 0 :(得分:0)

通常,这就是从QnA获得与getAnswers()API调用相同的返回结果的方法。

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

httpWebRequest.ContentType

验证返回的响应后,可以将结果文本传递给活动:

const stepResults = turnContext.context;
let qnaResults = await this.qnaMaker.getAnswers(stepResults);

记录以上qnaResults [0] .context.prompts显示返回的提示值与devtools中看到的请求有效负载对齐:

image

image

对于您链接的样本,await innerDc.prompt('ConfirmPrompt', qnaResults[0].context.prompts[0].displayText); 值是返回的prompt结果(即后续提示)。如果整个QnA结果中存在提示,则将其解析并显示为按钮。 QnAPrompts[]来自该提示。

displayText

希望有帮助!