我正在使用星號/ freepbx。星號不記錄從公園獲取的呼叫。這是我的通話流程。星號從停車場取回後無法錄製電話
一個調用的Asterisk服務器(AS) 呼叫被拾起分機B B則通過撥打出席轉移* 2200(200是我的默認停車場) Ç撥號1取回寄存的呼叫 Ç錶盤* 1記錄通話。
錄音沒有完成。
我正在使用星號/ freepbx。星號不記錄從公園獲取的呼叫。這是我的通話流程。星號從停車場取回後無法錄製電話
一個調用的Asterisk服務器(AS) 呼叫被拾起分機B B則通過撥打出席轉移* 2200(200是我的默認停車場) Ç撥號1取回寄存的呼叫 Ç錶盤* 1記錄通話。
錄音沒有完成。
我發現了一個修復程序,它適用於我。在星號日誌中,我發現星號試圖記錄一個無文件名的無效文件,只是一個擴展名(.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