微软认知服务自定义问答项目调用API更新未解答问题的方法
微软认知服务自定义问答未解答问题追踪与更新实现指引
前置信息确认
配合你已有的Ocp-Apim-Subscription-Key,你还需要提前获取两个核心参数:
- 自定义问答资源的部署地域(例如
chinaeast2、westus) - 目标知识库ID,可在认知服务门户的自定义问答项目详情页查询到
一、拉取未解答问题的API实现
未解答问题会被标记为无答案匹配的对话记录,调用对话日志查询接口即可筛选获取:
基础请求配置
- 请求方法:
POST - 请求地址:
https://<部署地域>.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/<知识库ID>/analytics/conversations - 必填请求头:
Ocp-Apim-Subscription-Key: <你的订阅密钥> Content-Type: application/json - 请求体示例(筛选最近100条未解答问题):
{ "filters": { "answerMatchCondition": "NoMatch" }, "pageSize": 100, "sort": { "field": "timestamp", "order": "Descending" } }
结果处理
返回值的conversations数组中,userQuestion字段即为用户提交的未解答问题,你可以直接将该列表渲染到UI的待处理问题页。
二、补充答案更新知识库的API实现
在UI中为对应问题填写答案后,分两步完成知识库更新,修改才会对线上用户生效:
第一步:新增问答对到知识库
- 请求方法:
PATCH - 请求地址:
https://<部署地域>.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/<知识库ID> - 请求头和上述接口一致
- 请求体示例:
{ "add": { "qnaList": [ { "id": <自定义唯一数字ID,只要不与现有问答ID冲突即可>, "answer": "<UI中填写的答案内容>", "source": "UI手动更新", "questions": [ "<待处理的未解答问题内容>" ] } ] } }
第二步:发布知识库使修改生效
- 请求方法:
POST - 请求地址:
https://<部署地域>.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/<知识库ID>/publish - 请求头同上,无需填写请求体
三、UI实现优化建议
- 增加重复问题合并逻辑,同一问题被多次提交的仅展示1条,避免重复添加相同问答对
- 给已处理的问题增加状态标记,避免重复操作
- 不要将订阅密钥直接硬编码在前端代码中,建议通过自有后端服务做请求转发,防止密钥泄露被滥用
内容的提问来源于stack exchange,提问作者Anirban Paul
相关产品推荐
相关产品推荐

