在QnA门户的测试中,如下面的屏幕截图所示,这些按钮是由QnA的后续提示创建的,单击这些按钮时,下一个Http请求将包含所有提示信息,例如文本和qnaid。那些下一个响应将是特定qnaid的答案。 但是在Bot -qnamaker提示示例enter link description here中,单击按钮时,Http请求仅包含文本作为问题,因此QnA将不会获得与qnaid绑定的答案。答案可能不会与qnaid绑定,而不会与上下文绑定。 enter image description here 所以有人对如何创建像QnA测试这样的机器人有想法吗?
答案 0 :(得分:0)
通常,这就是从QnA获得与getAnswers()API调用相同的返回结果的方法。
首先,将当前上下文传递到getAnswers()(包含用户的消息:“帮助”,“树木从何而来”,“为什么天空是蓝色?”等),然后将结果映射到变量:
httpWebRequest.ContentType
验证返回的响应后,可以将结果文本传递给活动:
const stepResults = turnContext.context;
let qnaResults = await this.qnaMaker.getAnswers(stepResults);
记录以上qnaResults [0] .context.prompts显示返回的提示值与devtools中看到的请求有效负载对齐:
对于您链接的样本,await innerDc.prompt('ConfirmPrompt', qnaResults[0].context.prompts[0].displayText);
值是返回的prompt
结果(即后续提示)。如果整个QnA结果中存在提示,则将其解析并显示为按钮。 QnAPrompts[]
来自该提示。
displayText
希望有帮助!