很久沒有寫東西,近來都在煩程式開發。正在愁閉門造車有多不健康,就找到個機會做少許可以公開的指引。
剛先收到一位朋友的信,問我怎樣用 Asterisk ,去做一個實驗,以偵察一大堆電話號碼,到底是機器應答 ( IVR ),還是真人應答,定還是傳真機。他想把資料存入 MySQL ,以便稍後分析。
像這樣的做法,在電訊工程方面實在十分普遍,已經有很多人做過實例。是故只要問一問 Google 大神,應該很易得到指引。我在這裏只是用中文撮要一下,方便 Google 大神回答中文世界的懶人。
實作的前題,是要有一台安裝好 Asterisk ,插了 ATA / FXO 界面卡,駁好電話線,以及有一堆不介意被偵察的電話清單。
再提一次,要是亂槍打鳥而滋擾到本港用戶,基本上是犯法的。目前很多商業機構,都是透過委託非牟利團體,去做實則關乎商業利益的電話調查,以便隱藏來電線路。他們以為這樣子,就可以繞過了「在 發 送 商 業 電 子 訊 息 至 電 話 或 傳 真 號 碼 時 , 不 得 隱 藏 來 電 線 路 識 別 資 料」的規定,這實在是超糟糕的。
回到正題,一般新手去搞 Asterisk ,搞大輪安裝好了,也就只是知道怎樣接電話。要再下一城,弄出一個應用方案,關鍵就在於怎接連自己會寫的應用程式。
以電話類別偵察為例,運作的流程可能是這樣:
1. 定義電話號碼清單。
2. 定義撥號次序。(也許只是純粹順著清單撥打)
3. 撥打號碼。( 可能是多線進行)
4a. 號碼接通,辨別接聽端為何物。
4b. 未能接通,分辨原因。
5. 紀錄 4a/b 的相關資料
6. 提取下一個號碼,重複 3 ~ 5 ,直至沒有新號碼
由於開發工具不是一蹴即就,無關電訊運作的邏輯部份,亦即是 (1) (2) (6) 宜於抽出來編寫,只要用熟悉的 Scripting Language 便可以輕鬆搞定。
(5) 基本上也和電訊運作無關,只是其觸發點仍是以 (3) (4) 有結論為前提,用的資料也是由電訊邏輯提供,應用 Asterisk 的 API 更為簡單直接。譬如說,我的朋友打算用 MySql 存案,我提議他參考這個:
http://www.voip-info.org/wiki/view/Asterisk+cmd+MYSQL
另一點,外部程式要使用 asterisk , 像是觸發 (3) ,則可以參這個:
http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out
最後,怎樣用 Asterisk 判別接聽端為何物呢?其實例子也挺多的,像是
這個分辨 Fax 機的插件程式
以及這個有關辨認人和應答系統的功能
至於如何把現有的東西改良,那當然要靠實際開發者的智慧了。

