You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS QnA Bot中Handlebars无法获取正确交互计数问题

AWS QnA Bot Handlebars交互计数异常排查方案

这个双计数跳变问题是配置Handlebars自定义计数时的经典冲突问题,根因基本逃不过以下两类:

  • 内置计数逻辑与自定义Handlebars计数同时生效:QnA Bot默认开启的Lex V2会话属性自动注入功能,会自带一套计数逻辑,这套逻辑会把Bot后台自动触发的欢迎语、路由校验、兜底澄清、权限检查等所有隐式交互全算入计数,你首次查询拿到的30左右数值,就是这套逻辑统计的全链路交互数;而你参照教程写的Handlebars计数默认只统计用户主动发起的对话轮次,两套逻辑同时运行时,首次查询触发内置计数拉取全量值,第二次查询会直接把两个计数结果累加跳到60区间,后续每次交互两套逻辑各+1,就会出现每次涨2的异常递增表现。
  • 教程示例模板的预置偏移未删除:多数旧版QnA Bot Handlebars教程,为了演示数值偏移效果,会在示例计数代码里默认加30的初始偏移量,直接复制模板不修改的话,首次查询就会从30开始计数,叠加内置逻辑的30左右隐式交互值,刚好跳到60区间。

按以下步骤修复即可:

  1. 打开Content Designer找到配置计数逻辑的QnA条目,进入Handlebars编辑模式全局搜索硬编码数值,删除所有类似{{add turnCount 30}}、{{setSessionAttr "turnCount" 30}}的预置偏移代码,将计数初始值统一设为0。
  2. 进入QnA Bot系统设置页,找到Lex V2配置板块,关闭「自动填充会话属性」下的turnCount自动注入开关,停掉内置计数逻辑避免冲突。
  3. 调整自定义Handlebars计数代码位置,把计数累加逻辑放到响应模板最顶层,不要嵌在条件判断分支里,确保每次用户触发问答时只执行一次,参考正确写法:
{{#if (eq sessionAttributes.customTurnCount undefined)}}
  {{setSessionAttr "customTurnCount" 0}}
{{/if}}
{{setSessionAttr "customTurnCount" (add sessionAttributes.customTurnCount 1)}}
当前交互次数:{{sessionAttributes.customTurnCount}}
  1. 配置修改完成后,不要只执行Lex Rebuild,需要到Lambda控制台重启QnA Bot对应的Content Designer服务函数,清掉Lambda层缓存的旧模板配置,再用无痕窗口开新会话测试即可——仅重建Lex不会同步更新Handlebars模板的缓存配置,这也是很多人按教程操作完不生效的常见疏漏。

测试注意:不要在同一个历史会话窗口反复验证,交互计数是存在会话维度的属性里的,旧会话残留的属性值会干扰测试结果。

内容的提问来源于stack exchange,提问作者Kera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 20:18:29