首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >星号阻止来自特定国家的来电

星号阻止来自特定国家的来电
EN

Stack Overflow用户
提问于 2020-10-22 09:52:22
回答 2查看 834关注 0票数 0

我正试图制定一个拨号计划来阻止来自孟加拉国的来电,那里的国家代码是88。

这是我的拨号计划

代码语言:javascript
复制
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黑名单的拨号计划。

EN

回答 2

Stack Overflow用户

发布于 2021-01-05 14:54:57

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

代码语言:javascript
复制
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。

票数 1
EN

Stack Overflow用户

发布于 2020-10-22 10:16:08

星号拨号计划本身就是regexp。你为什么要使用其他的regexp?

代码语言:javascript
复制
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 blacklist
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64479714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档