Azure Bot中QnA Maker「Context Only」在模拟器及生产环境失效求助
检查QnA调用的上下文传递配置
在Composer的QnA对话步骤中,确认Context字段已正确绑定用户会话中的地区信息(如user.location)。同时在Bot模拟器的请求日志里,验证发送给QnA Maker的API请求是否包含context属性,且previousContexts里的键值对与知识库配置完全匹配。核对知识库上下文规则
重新确认Context-Only问题的触发条件,确保上下文键的大小写、拼写和Bot传递的参数完全一致。如果存在无上下文限制的相同问题短语,需调整匹配分数或优先级,避免无上下文答案覆盖Context-Only结果。验证SDK版本与缓存设置
检查Composer使用的QnA Maker SDK是否为最新稳定版,旧版本可能存在上下文传递bug。同时关闭QnA Maker的缓存功能(发布设置中禁用),或在Composer的QnA配置里设置isTest=true(测试环境),排除缓存导致的旧答案干扰。手动构造上下文测试
在Composer中添加测试流程,强制设置固定的地区上下文(如user.location="Beijing")后调用QnA Maker。若此时能返回正确的Context-Only答案,说明问题出在用户地区信息的收集或存储逻辑上,需排查会话状态中该参数的完整性。检查会话状态管理
确认用户地区信息被正确存储在user或conversation作用域的会话状态中,不会在会话过程中丢失。通过模拟器查看会话状态的实时变化,确保每次调用QnA Maker时都能读取到有效的上下文参数。
内容的提问来源于stack exchange,提问作者Nick Francis

