Поступает входящий вызов, я его начинаю писать апликацией monitor, после перевода звонка, monitor продолжает следить за каналом с которого поступил вызов, а канал на который перевели вызов, он не мониторит (не пишит).
прошу помощи у знатоков, на сколько я понял в версии 1.4 была такая трабла, решалась патчем, в версии 1.6 думаю патчи не помогут, подскажите в какую сторону капать?
за 1.6 не скажу, а на 1.4 и на 1.8 данная опция работает
в файле экстеншен:
[context]
exten => s,1,NoOp("Start IVR")
exetn => s,n,Answer
exten => s,n,Set(CHANNEL(language)=ru)
exten => s,n,AGI(record.agi,in,${CALLERID(num)},${EXTEN})
...
при запуске record.agi я устанавливаю переменную MONITOR_EXEC и пишу в необходимую директорию 2-а файла in and out
-------------------------------
cat /var/lib/asterisk/agi-bin/record.agi
#!/usr/bin/perl -w
use Asterisk::AGI;
$AGI = new Asterisk::AGI;
my %input = $AGI->ReadParse();
my $wav_conert="/usr/local/bin/2wav2stereo.sh";
my $date=`date "+%Y.%m.%d_%H.%M.%S"`;
my $datemonth=`date "+%Y%m"`;
my $root_dir="/home/samba/records";
chomp($date);
chomp($datemonth);
mkdir "$root_dir/$datemonth","0777";
chmod oct("0777"),"$root_dir/$datemonth";
$AGI->set_variable("MONITOR_EXEC", $wav_conert);
$AGI->exec("Monitor","wav|$root_dir/$datemonth/$ARGV[0]\_$date\_src$ARGV[1]\_dst$ARGV[2]|m");
$AGI->set_variable("AUDIOHOOK_INHERIT(MixMonitor)","yes");
exit 0;
-------------------------------
переназначенная переменная mixmonitor, после образования файлов запускает скрипт.
# cat /usr/local/bin/2wav2stereo.sh
#!/bin/sh
SOX=/usr/bin/sox
SOXMIX=/usr/bin/soxmix
# command line variables
LEFT="$1"
RIGHT="$2"
OUT="$3"
test ! -r $LEFT && exit 21
test ! -r $RIGHT && exit 22
# left channel
$SOX $LEFT -c 2 $LEFT-tmp.wav pan -1
# right channel
$SOX $RIGHT -c 2 $RIGHT-tmp.wav pan 1
$SOXMIX -v 1 $LEFT-tmp.wav -v 1 $RIGHT-tmp.wav -v 1 $OUT
#remove temporary files
test -w $LEFT-tmp.wav && rm $LEFT-tmp.wav
test -w $RIGHT-tmp.wav && rm $RIGHT-tmp.wav
test -w $LEFT && rm $LEFT
test -w $RIGHT && rm $RIGHT
#test -w $OUT.wav && rm $OUT.wav
# eof
-----------------------------------
проблема в следующем, когда делем трансфер, размер файлов in и out имеют различную длину, соответствено при микшировании идет десинхронизация потоков, т.е. голос ответившего на трансфер накладывается с голосом позвонившего!
как решать проблему, пока не знаю, м.б. кто нибудь натолкнет на мысль?