Uri 星号拨号计划:清理分机
我的sip客户端正在发送一些在空格处使用奇怪字符拨打的号码 例如Uri 星号拨号计划:清理分机,uri,sip,asterisk,Uri,Sip,Asterisk,我的sip客户端正在发送一些在空格处使用奇怪字符拨打的号码 例如011▒237▒1140141 如何删除▒字符?一个快速(但并非完美)的解决方法可能是: exten => s,1,Set(strangeID=${CALLERID(number)}) exten => s,2,Set(strangeID_splited=${CUT(strangeID,▒,1-3&5-7&9-16)}) exten => s,3,Dial(SIP/stangeID_splited)
011▒237▒1140141
如何删除▒在拨出分机之前,在星号拨号计划中输入代码>字符?一个快速(但并非完美)的解决方法可能是:
exten => s,1,Set(strangeID=${CALLERID(number)})
exten => s,2,Set(strangeID_splited=${CUT(strangeID,▒,1-3&5-7&9-16)})
exten => s,3,Dial(SIP/stangeID_splited)
我假设这个奇怪的字符不是▒代码>,因此您可以在拨号计划中声明它,并且号码的长度和位置始终相同,因此您可以告诉星号哪些位置是不需要的字符
否则,您可以制作一个AGI脚本来消除这些角色,我知道这不是最理想的方法,但它肯定会奏效
希望对您有所帮助。您可以使用过滤功能。是的,您也需要替换cna regexp,但这要复杂得多
localhost*CLI>核心显示函数筛选器
-= Info about function 'FILTER' =-
[Synopsis]
Filter the string to include only the allowed characters
[Description]
Permits all characters listed in <allowed-chars>, filtering all others outs.
In addition to literally listing the characters, you may also use ranges
of characters (delimited by a '-'
Hexadecimal characters started with a '\x'(i.e. \x20)
Octal characters started with a '\0' (i.e. \040)
Also '\t','\n' and '\r' are recognized.
NOTE: If you want the '-' character it needs to be prefixed with a '\'
[Syntax]
FILTER(allowed-chars,string)
-=关于函数“FILTER”的信息=-
[简介]
筛选字符串以仅包含允许的字符
[说明]
允许中列出的所有字符,过滤所有其他字符。
除了逐字列出字符外,还可以使用范围
字符数(以“-”分隔)
十六进制字符以“\x”(即\x20)开头
以'\0'开头的八进制字符(即.\040)
还可以识别'\t'、'\n'和'\r'。
注意:如果需要“-”字符,则需要在其前面加“\”前缀
[语法]
筛选器(允许的字符、字符串)
我用拨号计划中的FILTER
命令解决了这个问题:
exten => _X.,1,Set(CALLERID(dnid)=${FILTER(0-9,${CALLERID(dnid)})})
数字的长度并不总是相同的。难道没有一种正则表达式方法可以做到这一点吗?