Asterisk拨号计划中ExecIf变量被忽略 主叫ID改写不生效问题
Asterisk主叫ID改写规则不生效问题排查
核心错误点
- 语法错误导致规则加载失败,是你配置的规则完全不生效的直接原因,具体有两个问题:
Set函数使用错误:Set的参数需要直接写变量名=值的结构,你错误的将CALLERID(num)用${}包裹,相当于你尝试给4111这个值对应的变量赋值,逻辑完全错误。- 括号不匹配:
ExecIf函数、Set函数都缺少必要的闭合右括号,拨号计划解析时直接判定该行无效,不会加载。
修正后配置
exten => 4111,1,ExecIf($["${CALLERID(num)}" = "4111"]?Set(CALLERID(num)=4442)) exten => 4111,n(dial),Dial(DAHDI/g7/${EXTEN},10) exten => 4111,n,Hangup()
验证方式
执行dialplan reload重载拨号计划后,先查看CLI输出确认没有语法报错,测试呼叫时开启CLI日志级别core set verbose 5,可以看到主叫ID修改的执行日志,确认规则生效。
内容的提问来源于stack exchange,提问作者elbarna
相关产品推荐
相关产品推荐

