Pandorabots AIML条件格式异常 求排查错误原因
问题定位与修复方案
核心错误点
1. Pattern大小写不匹配
按钮回传的文本是Option 1(首字母大写O,其余小写),但第二个category的pattern是全大写的OPTION *,AIML默认大小写敏感,导致该category无法触发,自定义变量未被正确设置。
2. 自定义变量与系统话题混淆
你用<set name="topic">设置的是自定义变量,但<condition name="topic">在多数AIML实现中会读取系统话题(由<topic>标签管理),而非自定义变量,因此条件匹配失败,始终进入默认分支。
修复后的完整代码
<?xml version="1.0" encoding="UTF-8"?> <aiml> <!-- Initial category to present buttons --> <category> <pattern>*</pattern> <template>Click on one of three buttons: <button> <text>Option 1</text> <postback>Option 1</postback> </button> <button> <text>Option 2</text> <postback>Option 2</postback> </button> <button> <text>Option 3</text> <postback>Option 3</postback> </button> </template> </category> <!-- 修正Pattern与回传文本一致,变量名避免与系统话题重名 --> <category> <pattern>Option *</pattern> <template> You chose Option <set name="selected_option"><star/></set>. <srai>TEST</srai> </template> </category> <!-- 基于自定义变量的条件判断写法 --> <category> <pattern>TEST</pattern> <template> <condition value="<get name='selected_option'/>"> <li value="1">Entering Condition 1</li> <li value="2">Entering Condition 2</li> <li value="3">Entering Condition 3</li> <li> Value: <get name="selected_option"/> Default Condition</li> </condition> </template> </category> </aiml>
关键修复说明
- 统一Pattern大小写:将第二个category的pattern改为
Option *,与按钮回传文本完全匹配,确保触发该分支。 - 避免变量名冲突:把自定义变量名从
topic改为selected_option,避开AIML系统保留的topic属性,防止混淆。 - 正确的条件判断语法:使用
<condition value="<get name='selected_option'/>">绑定自定义变量,确保条件匹配的是你设置的变量值,而非系统话题。
内容的提问来源于stack exchange,提问作者David Graham
相关产品推荐
相关产品推荐

