2010-09-02 79 views
7

我用星号写了一个简单的拨号方案。这个拨号计划的目标是检查来电的来电号码和特定的挂断:)!星号和前女友拨号计划?

但这个拨号计划挂断所有来电与不同的来电显示。
那我该怎么做? (

[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) 

编辑

我改变拨号计划这一点,但它不能正常工作,来电挂机后二音(我知道它发生的Cuz在我的拨号计划中的错误)

[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 
+0

所以让我使这个问题更难!!!! 我想要9999电话,首先听到一个声音文件,然后挂断电话。 – Rev 2010-09-02 08:37:44

+0

请把你的问题说成比“那么我该怎么办?”如果这不是一个编程问题,也许http://superuser.com是一个更好的场所。 – Gabe 2010-09-02 08:39:38

回答

3

您不必为其他callerids和autofalltrhough一个步骤2中启用,这意味着(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) 
后丢弃

编辑: 你确定callerID是EXACTELLY 9999吗? 尝试更换该行以

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

然后查看控制台,看来电显示是什么。

使用:

asterisk -r 

然后输入:

core set verbose 5 

也,请输入:

show dialplan 

,看看拨号方案被正确地加载到星号

+0

我像你说的那样改变我的拨号计划。但现在对于9999号码呼叫没有挂机和所有呼叫同为9999号码,请到后台步骤。 – Rev 2010-09-02 08:34:26

+0

谢谢,但有没有任何解决方案查看来电呼叫或在线电话的来电显示。我检查我的voip网关并查看号码,然后在拨号计划中输入该号码。感谢您的关注 – Rev 2010-09-15 11:28:37

+0

当执行该步骤时,NoOp($ {CallerID(all)})将在星号控制台上显示呼叫者ID。 – Radu094 2010-09-16 09:00:17

13

这里你的前女友Dailp兰,假设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() 

希望这有助于你

+0

谢谢,但看到我的编辑。你的解决方案不起作用 – Rev 2010-09-15 11:23:33

+2

这个答案如何得到这么多upvotes是超越我。我总是看到这种拨号方案。伙计们,当你有两个前女友时会发生什么?或50?您需要多少次筛选一个单一号码。大多数情况下,它是一个数字列表和前缀列表。 GotoIf不起作用。按照预期使用拨号方案,或者如果您想编程,请转到AGI脚本。 – Radu094 2010-09-16 08:58:14

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)