2013-04-17 53 views
0

我正在使用星號並希望收集cdr記錄。我搜索了一會兒,發現已經有模塊可以用來將cdr記錄收集到CSV文件或MySQL中。通過http收集星號cdr記錄

我想知道是否已經有一個模塊讓我通過http post收集cdr記錄。所以當通話結束時,Asterisk會將cd記錄發佈到預定義的URL。

謝謝先進。

+0

有這樣的模塊,但它被刪除,因爲沒有人使用它。你可以用c/C++技能問某人做這樣的模塊,這是一項簡單的任務。 – arheops

回答

0

我不知道這樣的模塊,但是你可以在Hangup上執行一個應用程序。

您可以使用功能${CURL(url[,post-data])}

exten => h,n,Set(result=${CURL(http://SERVER/cdr.php?\ 
      cdranswer=${CDR(answer)}&exten=${EXTEN}&cidnum=${CALLERID(num)})}) 
exten => h,n,Noop(${result}) 

另一種方法是在掛斷執行腳本:

exten => h,n,System('php -f /opt/scripts/cdr.php \ 
         ${CallerID(num)} ${EXTEN} "${CDR(answer)}" ${EPOCH}'); 

也許你也可以使用$ {CDR(billsec)}。

+1

請注意,默認情況下,curl在同一時間連接超過10個連接時會出現問題。源文件中的Changable。 – arheops

+0

它看起來像一個很好的解決方案,但我對擴展腳本知之甚少。所以最後我通過mysql閱讀了cdr的源代碼,並自己創建了一個模塊來完成這個任務。非常感謝。 – delphifirst

0

另一種選擇是使用CRON作業每隔幾分鐘運行一次Ruby或PHP腳本以提取自上次腳本運行以來的所有CDR並提取HTTP POST。我已經爲客戶做到了這一點,並且工作得很好。

這就是說,我發現如果我需要讓CDR「脫機」,最簡單的方法就是建立MySQL複製;將CDR寫入PBX機器,從報告機器上的複製副本讀取它們。開始的時候它的設置更加密集,但是之後的其他所有事情都會變得更加容易。