Asterisk

Asterisk 阻止帶有某些來電顯示的來電

  • November 22, 2014

所以我知道這是一個相當簡單的問題,但我似乎無法找到一個好的答案。我有一個 DID,它受到來自非 1-8XX 號碼的電話推銷員的相當大的打擊(或者至少對我來說,每天大約 1-3 個電話)。然而,只有少數幾個號碼日復一日地打電話。所以很自然地,我只想阻止他們,這樣我的電話就不會響起,也不會被計費。

我正在尋找發送 SIP/404 或其他一些無應答響應——不要將它們發送到語音郵件或其他錄音。我並不真正關心日誌記錄或類似的事情,我只是希望能夠相當容易地添加(或刪除)一個數字,這樣我就可以減少不必要的呼叫。

我發現的一切似乎要麼太複雜,要麼太簡單(只有一個被屏蔽的號碼),而且我找不到好的媒介。希望其他人會有更好的見解!我正在使用星號 1.6。謝謝!

我做過類似的事情,和其他送出者一樣,我使用了數據庫。我沒有使用內置的 int DB 功能,而是使用了cmd MySQL。這樣我就可以編寫一個與同一個數據庫互動的網頁,並且我的 DBA 可以在這個“目錄”表和 MySQL CDR 之間進行跨數據庫選擇。

在我的範例中,我設置了一個包含 4 個欄位的表。id(auto_increment int), number(電話號碼), name(使用者名), ban(預設為 0 的 int)。該範例做了 2 件事,1- 它從數據庫中查找名稱並將其設置為呼叫者 id(因為我們的 POTS 線路不傳達它) 2- 它查找是否ban設置為 1,並阻止呼叫.

exten => s,1,答案
exten => s,n,NoOp("來電顯示為: ${CALLERID(number)}")
exten => s,n,MYSQL(連接 connid HOST USER PASSWORD 數據庫)
exten => s,n,MYSQL(Query resultid ${connid} SELECT name,ban FROM directory WHERE number='${CALLERID(number)}')
exten => s,n,MYSQL(Fetch fetchid ${resultid} name ban)
exten => s,n,NoOp("我們發現:${name} ${ban}")
exten => s,n,MYSQL(清除 ${resultid})
exten => s,n,MYSQL(斷開 ${connid});
exten => s,n,Set(CALLERID(name)=${name})
擴展 => s,10,NoOp()
exten => s,n,GotoIf($["${ban}" = "1"]?wedontlikeyou,s,1)
exten => s, n, Goto (mainmenu, s, 1)

在此之後,您將擁有您的

$$ mainmenu $$和$$ wedontlikeyou $$. 後者是你的禁令,它可能是一個簡單的掛斷,錯誤消息,任何你想要的。我的偏好是Congestion()因為這往往會讓人們認為電話號碼無法使用。

引用自:https://serverfault.com/questions/349560