我如何 return 从 QnA Maker 连接器到 Power Virtual Agent 的回答?

How do I return an answer from QnA Maker connector to Power Virtual Agent?

我正在使用 Power Virtual Agent Composer,但我无法让 QnA Maker 的连接器正常工作。 URL 通过 SoapUI 工作,但我从 "Answers" 获得以下对象。任何解析 JSON、初始化变量或尝试获取 "answer" 文本的尝试都会导致传入请求失败。我在他们的文档中找不到任何设置它的例子。谁能帮我弄清楚如何 return QnA Maker 对 Power Virtual Agent 的回答?

{"output": [{
   "answer": "I'm the EBS Bot! Nice to meet you!",
   "score": 100,
   "id": 55,
   "source": "qna_chitchat_professional.tsv",
   "metadata": [   {
      "name": "editorial",
      "value": "chitchat"
   }],
   "context":    {
      "isContextOnly": false,
      "prompts": []
   }
}]}

流程如下所示

正如您在问题中提到的,您从 "Answers" 中获得了以下对象:

{"output": [{
   "answer": "I'm the EBS Bot! Nice to meet you!",
   "score": 100,
   "id": 55,
   "source": "qna_chitchat_professional.tsv",
   "metadata": [   {
      "name": "editorial",
      "value": "chitchat"
   }],
   "context":    {
      "isContextOnly": false,
      "prompts": []
   }
}]}

上面的json包含"output",所以如果在"Response"动作中的"Answers"之前再添加一个{"output":}。 "Response" 操作的 "Body" 框中的 json 数据与您提供的架构不匹配。

除此之外,如果你想初始化一个变量来存储"Answers",你可以选择变量的类型为字符串,并将变量的"Value"设置为:

string(body('Generate_answer')?['answers'])

希望对您的问题有所帮助~

Hury Shen 为我指明了正确的方向,但获得 QnA 答案并不是很有效。像他的建议一样初始化一个变量会触发一个 "Apply to each" 块,因为 "Answers" 是一个数组。实际上根本不需要变量,你可以直接通过

解析响应

body('Generate_answer')['answers'][0]['answer'].

我 return 在响应主体(我称之为输出,但它可以是任何东西)中作为 JSON 由虚拟代理使用。这是显示流程的屏幕截图: