2010-09-02 28 views
7

Tôi đã viết kế hoạch quay số đơn giản trong dấu hoa thị. Mục tiêu quay số kế hoạch này là để kiểm tra người gọi id của cuộc gọi đến và cho hangup cụ thể :)!asterisk chống bạn gái cũ Quay số kế hoạch?

nhưng gói quay số này lên tất cả cuộc gọi đến với id người gọi khác.
Vì vậy, tôi phải làm gì? ; (

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

Sửa

tôi thay đổi kế hoạch quay số của tôi để điều này, nhưng nó không làm việc, đến gác cuộc gọi sau hai tiếng bíp (tôi biết nó xảy ra cuz một sai lầm trong kế hoạch quay số của tôi)

[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

vì vậy hãy để tôi làm cho câu hỏi này khó khăn hơn !!!! Tôi muốn nếu cuộc gọi 9999, trước tiên hãy nghe một tập tin âm thanh và sau đó gác máy. – Rev

+0

Hãy đặt câu hỏi cho câu hỏi của bạn tốt hơn "Vì vậy, tôi phải làm gì?" Nếu đây không phải là một câu hỏi lập trình, có lẽ http://superuser.com là một địa điểm tốt hơn. – Gabe

Trả lời

3

Bạn không có một bước 2 cho callerids và autofalltrhough khác được kích hoạt, điều đó có nghĩa (trong 1.6) rằng cuộc gọi sẽ được giảm sau bước 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) 

Chỉnh sửa: Bạn có chắc chắn rằng ID người gọi là CHÍNH XÁC 9999 không? Thử thay thế đường đó bằng

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

rồi tìm trong bảng điều khiển và xem ID người gọi là gì.

sử dụng:

asterisk -r 

sau đó nhập:

core set verbose 5 

cũng có, hãy nhập:

show dialplan 

và xem nếu dialplan được nạp một cách chính xác vào dấu

+0

Tôi thay đổi kế hoạch quay số của tôi giống như bạn đã nói. nhưng bây giờ cho cuộc gọi số 9999 không bị treo và tất cả cuộc gọi giống như số 9999, hãy chuyển đến bước nền. – Rev

+0

cảm ơn nhưng có bất kỳ giải pháp nào để xem id người gọi cho cuộc gọi đến hay cuộc gọi trực tuyến. tôi kiểm tra cổng voip của tôi và xem số, và nhập số đó vào kế hoạch quay số của tôi. nhờ sự chú ý của bạn – Rev

+0

NoOp ($ {CallerID (tất cả)}) sẽ hiển thị id người gọi trên bảng điều khiển dấu hoa thị khi bước đó được thực thi. – Radu094

13

Đây là chống bạn gái cũ của bạn lan, giả sử xxxxx là số bạn gái cũ của bạn

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

Hy vọng điều này sẽ giúp bạn

+0

cảm ơn nhưng xem chỉnh sửa của tôi. giải pháp của bạn không làm việc – Rev

+2

Làm thế nào câu trả lời này có rất nhiều upvotes là vượt ra ngoài tôi. Tôi thấy kiểu quay số này mọi lúc. Các bạn, chuyện gì sẽ xảy ra khi bạn có 2 bạn gái cũ? hoặc 50? Đã bao nhiêu lần bạn cần phải sàng lọc cho 1 số duy nhất. Thông thường nó là một danh sách các số và danh sách các tiền tố. GotoIf sẽ không hoạt động. Sử dụng phương án quay số như dự định hoặc chuyển sang tập lệnh AGI nếu bạn muốn lập trình. – Radu094

0

Trước hết, có thể thấy rằng bạn không thực sự hiểu cách thức hoạt động Asterisk dialplan. Các khối mã bạn đưa lên có chỉ là đồng bằng sai, Asterisk sẽ không phàn nàn - như dialplan không phải là nghĩa vụ phải làm như vậy.

Hãy kiểm tra từng người một:

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

Lý do ở trên là sai là do thực tế rằng bạn không thể đặt một khớp CallerID trên một dòng duy nhất của phần mở rộng - đó là phải được tất cả các đường. Vì vậy, về mặt kỹ thuật, bạn sẽ cần:

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

Bây giờ, đó không phải là cách thích hợp để thực hiện việc này - đơn giản vì bạn sẽ lặp lại nhiều dòng. Cách đúng để thực hiện nó rất giống với câu trả lời trước, tuy nhiên, đây là những gì tôi sẽ làm:

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

Bây giờ, bạn có thể mở rộng các số CALLERID khác nhau mà bạn muốn chặn. Một lần nữa, giả sử đây là kết quả bạn đang tìm kiếm để đạt được.

0

Nó khá đơn giản:

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

    exten => s,1,Answer 
    exten => s,2,BackGround(welcome) 
    exten => s,3,Macro(queue,operator) 
Các vấn đề liên quan