2014-02-05 4 views
0

별표/freepbx를 사용하고 있습니다. 별표는 공원에서 가져온 통화를 녹음하지 않습니다. 여기 내 통화 흐름입니다.별표 (Asterisk) 주차장에서 가져온 후 통화를 녹음 할 수 없습니다.

A는 보류 된 통화 C 다이얼을 가져 오기 위해 서버 (AS) 전화가 B는 * 2200 전화하여 참석 전송 ((200) 내 기본 주차장입니다) 않습니다 확장 B에 의해 포착되어 C 다이얼 1 아스 테 리스크 호출 * 1을 눌러 통화를 녹음하십시오.

녹음이 완료되지 않았습니다.

답변

0

수정 프로그램이 발견되어 저에게 적합합니다. 별표 로그에서 별표는 파일 이름이없는 잘못된 파일, 확장자 (.wav)로 기록하려고합니다. /var/lib/asterisk/agi-bin/parkfetch.agi와 /var/lib/asterisk/bin/one_touch_record.php의 두 파일을 실행했습니다.

one_touch_record.php는 연도, 날짜, 믹스 모니터 폴더 등의 채널에서 읽은 데이터로부터 파일 이름을 생성하지만 유효한 파일 이름이 로그에 없으므로 여기에 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"있는 것을 발견했다 검사. 그래서 내가 ($의 rec_status == "RECORDING") 경우에 ($의 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)")); 
       } 
     } 
} 

경우 내가 변경에 OR 절 즉, 추가 그리고 그것은했다. 이제 공원에서 전화를 가져온 후 * 1을 누르면 녹음이 시작됩니다.

누군가가 더 좋은 해결책을 찾으면 내 블로그에 댓글로 남겨주세요. http://sachindotg.blogspot.in/2014/02/asterisk-cannot-record-call-after.html

관련 문제