Asterisk GotoIf命令变量为真却未正确跳转分支问题求助
问题原因
核心是Asterisk拨号方案的字符串比较大小写完全敏感,两边字符串大小写不一致才会判断失败:
- 你配置的GotoIf判断条件是
$["${Blocked}"=="TRUE"],用来匹配全大写的TRUE - 从运行日志的NoOp输出可见,
Blocked变量的实际取值是全小写的true - 二者大小写不匹配,所以判定结果为0,不会触发跳转。
修复方法
任选一种修改配置即可:
- 直接把判断条件里的大写
TRUE改为小写true,和实际变量值对齐:
same => n,GotoIf($["${Blocked}"=="true"]?blah-ivr-v5-difficulties,s,1)
- 如果你无法确定变量输出的大小写,可通过大小写转换函数统一格式后再比较,避免类似问题:
same => n,GotoIf($[${LOWER(${Blocked})}=="true"]?blah-ivr-v5-difficulties,s,1)
内容的提问来源于stack exchange,提问作者M Suhayl
相关产品推荐
相关产品推荐

