我正在使用星號並希望收集cdr記錄。我搜索了一會兒,發現已經有模塊可以用來將cdr記錄收集到CSV文件或MySQL中。通過http收集星號cdr記錄
我想知道是否已經有一個模塊讓我通過http post收集cdr記錄。所以當通話結束時,Asterisk會將cd記錄發佈到預定義的URL。
謝謝先進。
我正在使用星號並希望收集cdr記錄。我搜索了一會兒,發現已經有模塊可以用來將cdr記錄收集到CSV文件或MySQL中。通過http收集星號cdr記錄
我想知道是否已經有一個模塊讓我通過http post收集cdr記錄。所以當通話結束時,Asterisk會將cd記錄發佈到預定義的URL。
謝謝先進。
我不知道這樣的模塊,但是你可以在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)}。
請注意,默認情況下,curl在同一時間連接超過10個連接時會出現問題。源文件中的Changable。 – arheops
它看起來像一個很好的解決方案,但我對擴展腳本知之甚少。所以最後我通過mysql閱讀了cdr的源代碼,並自己創建了一個模塊來完成這個任務。非常感謝。 – delphifirst
另一種選擇是使用CRON作業每隔幾分鐘運行一次Ruby或PHP腳本以提取自上次腳本運行以來的所有CDR並提取HTTP POST。我已經爲客戶做到了這一點,並且工作得很好。
這就是說,我發現如果我需要讓CDR「脫機」,最簡單的方法就是建立MySQL複製;將CDR寫入PBX機器,從報告機器上的複製副本讀取它們。開始的時候它的設置更加密集,但是之後的其他所有事情都會變得更加容易。
有這樣的模塊,但它被刪除,因爲沒有人使用它。你可以用c/C++技能問某人做這樣的模塊,這是一項簡單的任務。 – arheops