我用星号写了简单的拨号方案。这个拨号计划的目标是检查来电的来电显示并挂断特定号码
但是此拨号计划会挂断具有不同来电显示的所有来电。
那我该怎么办? ;(
[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
这是您的拨号方案,假设 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()
希望这对您有帮助
您没有针对其他主叫方的步骤 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
并查看拨号方案是否正确加载到星号中
首先,您似乎并不真正了解 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 号码。再次假设这是您想要实现的结果。
很简单:
[default]
exten => s/9999,1,Hangup
exten => s,1,Answer
exten => s,2,BackGround(welcome)
exten => s,3,Macro(queue,operator)