2015-10-26 44 views
0

我已經創建了一個撥號方案這需要通話並保存通話的開始和結束時間。我以前${CDR(start)}獲得通話的開始時間,但是當我用${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}而是比${CDR(start)}。第三部分我的代碼給了我一個10秒或更差:

same => n,NoOp(------${CDR(start)}----${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}--) 

上面的線是第二線我的撥號方案。從文檔${CDR(start)}給出通話的開始時間和${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}給出當前時間。但我把該線路作爲我的撥號方案的第二行,所以它幾乎開始通話,所以${CDR(start)}${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}應該近似相等,但輸出像

NoOp(------2015-10-25 12:30:10----2015-10-25 12:30:21--) 

爲什麼兩者都有這麼多的差異?而且我也不知道爲什麼${CDR(end)}的值是空的。

感謝

回答

0

${CDR(start)} - 是通話開始的時間。
${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - 當前時間,當執行此命令時。

如果使用掛機後EPOCH變量,它可能指向通話結束。如果呼叫處於活動狀態,並掛斷後會充滿

${CDR(end)}可以爲空。

關於CDR變量:https://wiki.asterisk.org/wiki/display/AST/CDR+Variables

+0

我力有我貼的代碼之前撥號命令,我得到了'$ {CDR(開始)}'但是你說'這是呼叫開始的時候,當轉盤()是executed.' – codegasmer

+0

而不是'dial()'它也可以是來電或內部呼叫(例如來自AMI或callfile)。無論如何,這是一個當前通話開始的時間。 – sisoft

0

$ {CDR(開始)}不是當前通話的開始時間,但目前的CDR開始的時間。它可以從隊列,ResetCDR,ForkCDR命令傳遞後更改

EPOCH總是讓當前的Linux時間。掛斷後它可以顯示呼叫結束,但如果處理很長時間,也可以顯示不同的時間。

相關問題