簡體   English   中英

從停車場提取星號后無法記錄通話

[英]Asterisk Cannot record call after fetching it from parking lot

我正在使用星號/ freepbx。 星號未記錄從暫存區獲取的呼叫。 這是我的電話流程。

分機代答對Asterisk Server(AS)的呼叫BB通過撥打* 2200(200是我的默認停車場)進行有人值守的轉接。C撥1提取駐留的電話C撥* 1記錄呼叫。

記錄未完成。

我找到了解決方法,它對我有用。 在星號日志中,我發現星號試圖記錄到一個沒有文件名的無效文件,只是一個擴展名(.wav)。 它執行了2個文件-/var/lib/asterisk/agi-bin/parkfetch.agi和/var/lib/asterisk/bin/one_touch_record.php。

one_touch_record.php從通道讀取的數據生成文件名,例如年份,日期,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為“ INITIALIZED”的情況下才復制這些通道變量。 所以我添加了一個OR子句,即我將if($ rec_status ==“ RECORDING”)更改為if($ rec_status ==“ RECORDING” || $ rec_status ==“ INITIALIZED”)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM