我正试图制定一个拨号计划来阻止来自孟加拉国的来电,那里的国家代码是88。
这是我的拨号计划
exten => _X.,1,NoOp(${CALLERID(num)})
same => n,Set(regx=^(88)[0-9]$)
same => n,GotoIf($[${REGEX("${regx}" ${CALLERID(num)})} = 1]?blacklisted,s,1)
same => n,Dial(SIP/8.8.8.8/${EXTEN}
[blacklisted]
exten => s,1,Wait(9)我想做的是,来自88的任何东西都应该被列入黑名单。目前,如果我用Caller ID 88测试呼叫,它可以工作,但是如果呼叫来自88XXXXXXX,这不起作用,我可以做些什么来阻止从88XXXXXX到goto黑名单的拨号计划。
发布于 2021-01-05 14:54:57
为什么要使用复杂的REGEX函数?就这样做吧:
exten => _X.,1,NoOp(CallerID is: ${CALLERID(num)})
exten => _X.,n,Set(number=${CALLERID(num)})
exten => _X.,n,ExecIf($[${number:2} = 88],Hangup())
exten => _X.,n,NoOp(Call is being continued)这将将调用into num保存到"number“变量中。然后,它将检查变量的前2个字符是否等于88。如果是这样的话,电话就会挂断。如果要将黑名单中的调用发送到特定上下文,则还可以使用GoToIf而不是ExecIf。
发布于 2020-10-22 10:16:08
星号拨号计划本身就是regexp。你为什么要使用其他的regexp?
exten => _X.,1,NoOp(${CALLERID(num)})
same => n,Gosub(cid-blacklist,${CALLERID(num)},1)
same => n,Dial(SIP/8.8.8.8/${EXTEN}
[cid_blacklist]
exten => _88.,1,Noop(bangladesh)
same => n,Wait(100)
; this works only when not found match in context.
include=> cid_blacklist_not_found
[cid_blacklist_not_found]
exten => _X.,1,Return;not found in cid blacklisthttps://stackoverflow.com/questions/64479714
复制相似问题