微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

星号仅阻止来自特定国家/地区的来电

如何解决星号仅阻止来自特定国家/地区的来电

我正在尝试制定拨号计划以阻止来自说国家代码为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,Wait(9)

我想做的是将88中的任何内容发送到黑名单。目前,如果我测试呼叫者ID为88的呼叫可以正常工作,但是如果呼叫来自88XXXXXXX,则此方法不起作用,该怎么办才能使我的拨号计划阻止任何从88XXXXXXXX进入黑名单的呼叫

解决方法

星号拨号计划本身就是正则表达式。为什么要使用其他正则表达式?

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.,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.,Return;not found in cid blacklist
,

为什么要使用复杂的 REGEX 函数?做这样的事情:

['B','B','CDEFGH','AB','FGHI','GHIJKL']
['B','GHIJKL']

这会将调用者的 num 保存到“number”变量中。然后它会检查变量的前2个字符是否等于88。如果是,呼叫将被挂断。如果要将列入黑名单的调用发送到要对其执行其他操作的特定上下文,也可以使用 GoToIf 而不是 ExecIf。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。