2014-02-05 52 views
0

我正在使用星號/ freepbx。星號不記錄從公園獲取的呼叫。這是我的通話流程。星號從停車場取回後無法錄製電話

一個調用的Asterisk服務器(AS) 呼叫被拾起分機B B則通過撥打出席轉移* 2200(200是我的默認停車場) Ç撥號1取回寄存的呼叫 Ç錶盤* 1記錄通話。

錄音沒有完成。

回答

0

我發現了一個修復程序,它適用於我。在星號日誌中,我發現星號試圖記錄一個無文件名的無效文件,只是一個擴展名(.wav)。它執行2個文件 - /var/lib/asterisk/agi-bin/parkfetch.agi和/var/lib/asterisk/bin/one_touch_record.php。

one_touch_record.php從通道讀取的數據生成文件名,例如year,date,mixmonitor文件夾等,但由於日誌中沒有有效的文件名,因此這裏應該爲null。

$mixMonDir = getVariable($channel, "MIXMON_DIR"); 
$year = getVariable($channel, "YEAR"); 
$month = getVariable($channel, "MONTH"); 
$day = getVariable($channel, "DAY"); 
$mixMonFormat = getVariable($channel, "MIXMON_FORMAT"); 
$mixMonPost = getVariable($channel, "MIXMON_POST"); 
$astman->mixmonitor($channel, "{$mixMonDir}{$year}/{$month}/{$day}/{$callFileName}.{$mixMonFormat}", "a", $mixMonPost, rand()); 

所以我檢查的parkfetch.agi是我發現,這些信道瓦爾被複制僅當REC_STATUS是「RECORDING」,並在此情況下被REC_STATUS「初始化」。所以我加or子句也就是說,如果($ rec_status == 「記錄」),以如果($ rec_status == 「記錄」 || $ rec_status == 「初始化」)

if ($channel) { 
     $rec_status = get_var("IMPORT($channel,REC_STATUS)"); 

     $agi->set_variable('REC_STATUS', $rec_status); 
     if ($rec_status == "RECORDING" || $rec_status=="INITIALIZED") { 
       foreach (array('MIXMON_DIR', 'YEAR', 'MONTH', 'DAY', 'CALLFILENAME', 'MIXMON_FORMAT', 'MIXMON_POST', 'MON_FMT') as $v) { 
         $agi->set_variable($v, get_var("IMPORT($channel,$v)")); 
       } 
     } 
} 

我更改了它的工作。現在當我從公園接到電話後按* 1時,它正在被錄製。

如果有人找到了更好的解決方案,請將其作爲評論留在我的博客中。 http://sachindotg.blogspot.in/2014/02/asterisk-cannot-record-call-after.html