2010-09-02 42 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)