星号呼叫阻止拨号计划?

问题描述 投票:0回答:4

我用星号写了简单的拨号方案。这个拨号计划的目标是检查来电的来电显示并挂断特定号码

但是此拨号计划会挂断具有不同来电显示的所有来电。
那我该怎么办? ;(

   [general]  
    static=yes  
    writeprotect=yes  
    autofallthrough=yes  
    clearglobalvars=no  
    priorityjumping=yes  
    include "exten_gvars.inc"  
    
    [macro-queue]
    exten => s, 1, Queue(${ARG1})
    
    [default]  
    exten => s, 1, Answer  
    exten => s/9999, 2 ,Hangup  
    exten => s, 2, BackGround(welcome)  
    exten => s, 3, Macro(queue,operator)  

编辑

我将我的拨号计划更改为这个,但它不起作用,两声蜂鸣声后来电挂断(我知道它发生是因为我的拨号计划中有错误)!

    [general]
static=yes
writeprotect=yes
autofallthrough=yes
clearglobalvars=no
priorityjumping=yes
#include "exten_gvars.inc"

[macro-monitor]
exten => s, 1, MixMonitor(${UNIQUEID}.wav)
exten => s, 2, SetCIDName(${UNIQUEID}#${CALLERIDNAME},a)

[macro-defaultLine]
exten => s, 1, Macro(monitor)
exten => s, 2, Dial(SIP/${ARG1},60,T)

[macro-queue]
exten => s, 1, Macro(monitor)
exten => s, 2, Queue(${ARG1})

[inbound]
exten => _XX, 1, Macro(defaultLine,${EXTEN})

[default]
exten => 123,1,GotoIf($[${CALLERID(num)} = XX]?reject:allow)
exten => 123,n(allow),Answer
exten => 123,n,BackGround(welcome)
exten => 123,n,Macro(queue,operator)
exten => 123,n(reject),BackGround(WTF)
exten => 123,n,Hangup()
include => inbound
asterisk
4个回答
13
投票

这是您的拨号方案,假设 xxxxx 是您的目标号码

exten => 123,1,GotoIf($[${CALLERID(num)} = xxxxx]?reject:allow)
exten => 123,n(allow),Dial(Zap/4)
exten => 123,n,Hangup()
exten => 123,n(reject),Playback(abandon-all-hope)
exten => 123,n,Hangup()

希望这对您有帮助


3
投票

您没有针对其他主叫方的步骤 2,并且启用了 autofalltrhough,这意味着(在 1.6 中)呼叫将在步骤 1 后挂断。

[default]
exten => s, 1, Answer
exten => s/9999, 2 ,Hangup
exten => s, 2, NoOp  
exten => s, 3, BackGround(welcome)
exten => s, 4, Macro(queue,operator) 

编辑: 您确定来电显示正是 9999 吗? 尝试将该行替换为

exten => s, 2, NoOp((${CALLERID(all)})

然后查看控制台并查看 callerID 是什么。

用途:

 asterisk -r 

然后输入:

 core set verbose 5

另外,输入:

show dialplan

并查看拨号方案是否正确加载到星号中


0
投票

首先,您似乎并不真正了解 Asterisk 拨号方案的工作原理。你放在那里的代码块完全是错误的,Asterisk 不会抱怨 - 因为 dialplan 不应该这样做。

我们来一一分析:

[macro-queue]
exten => s, 1, Queue(${ARG1})

[default]  
exten => s, 1, Answer  
exten => s/9999, 2 ,Hangup  
exten => s, 2, BackGround(welcome)  
exten => s, 3, Macro(queue,operator)  

上述错误的原因是您不能将 CALLERID 匹配放在分机的单行上 - 它应该是一路。所以从技术上来说,你需要:

[macro-queue]
exten => s, 1, Queue(${ARG1})

[default]  
exten => s/9999, 1, Answer  
exten => s/9999, 2 ,Hangup  
exten => s/9999, 2, BackGround(welcome)  
exten => s/9999, 3, Hangup 

exten => s, 1, Answer  
exten => s, 2 ,Hangup  
exten => s, 2, BackGround(welcome)  
exten => s, 3, Macro(queue,operator)  

现在,这不是正确的方法 - 只是因为您将一遍又一遍地复制线条。正确的做法与之前的答案非常相似,但是,这就是我要做的:

exten => s, 1, Answer
exten => s, n, Gotoif($["${CALLERID(num)}" = "9999"]?reject:continue)
exten => s, n(continue), Background(Welcome)
exten => s, n, Macro(queue, operator)
exten => s, n(reject), Hangup()

现在,您可以扩展要阻止的各种 CALLERID 号码。再次假设这是您想要实现的结果。


0
投票

很简单:

[default]  
    exten => s/9999,1,Hangup  

    exten => s,1,Answer  
    exten => s,2,BackGround(welcome)  
    exten => s,3,Macro(queue,operator)  
© www.soinside.com 2019 - 2024. All rights reserved.