Приветствую. Есть такая задачка. Необходимо сделать отправку записанного разговора на мыло. Т.е. человек принимает звонок (все пишется), в процессе разговора понимает, что хочет его получить на мыло и жмет какую-нибудь кнопочку. После окончания разговора приходит мыло с файликом. Пытаюсь это сделать через featuresapplicationmapcustom.conf конструкцией вида
sendrecord => *3,self/callee,Macro,sendrec
Но завис на самом главном - непосредственно реализации макроса :) Чую, что должно быть что-то вроде
exten => s,n,System(uuencode ${MIXMON_DIR}${CALLFILENAME}.${MIXMON_FORMAT} ${CALLFILENAME}.${MIXMON_FORMAT} | sendmail email@domain)
Но как и куда это встроить придумать не могу. Система эластикс, сильно лезть руками и портить самообновляемость не хочется.
у меня работает так: в features.conf rec => *3,self,Macro,apprecord
[macro-apprecord]
exten => s,1,GotoIf($["${XAD}" = "0" | "${XAD}" = ""]?startrec:stoprec)
exten => s,n(startrec),Playback(beep)
exten => s,n,Set(XAD=1)
exten => s,n,Set(date=${STRFTIME(${EPOCH},,%Y%m%d%H%M)})
exten => s,n,Set(FILENAME=/var/spool/asterisk/monitor/${date}-${FAXExten}.wav;)
exten => s,n,MixMonitor(${FILENAME},b,/var/lib/asterisk/agi-bin/sendmonitor.sh ${FILENAME} ПОЧТА@КУДАНАДО);
exten => s,n,MacroExit
exten => s,n(stoprec),StopMonitor
exten => s,n,Set(XAD=0)
exten => s,n,Playback(beep)
exten => s,n,MacroExit
sendmonitor.sh:
fname=dirname $1
/basename $1 .wav
.mp3;
nice -n 19 lame -b 16 -m m -q 9-resample $1 $fname ;
subj=basename $1
sendEmail -f ПОЧТА@ОТКОГО -t $2 -u $subj -a $fname
if [ -f "$fname" ]
then
rm $1;
fi
вот так не?
sendrecord => *3,self/callee,System,/etc/asterisk/sendtoemail.sh ^{CDR(uniqueid)}
а в скрипте по uniqueid ищешь запись и посылаешь.
На сколько я понимаю, в данном случае команда будет вызвана в процессе разговора, т.е. файл еще не дописан.
lash ( 2012-07-20 10:25:30 +0400 )редактироватьну да. если хотите в конце- метите его какойто меткой и потом послыаете по крону. вам же сказали, если вы недостаточно програмист наймите експерат.
meral ( 2012-07-20 10:49:54 +0400 )редактироватьЧтобы в конце разговора получить его на почту, он должен либо с самого начала писаться, либо с середины (с момента нажатия). Рассмотрим оба варианта.
Все разговоры пишутся. После разговора проверяется флаг, отвечающий за отправку разговора на почту. При помощи featuremap можно выставлять этот флаг во время разговора. В конце разговора если не включена отправка на почту опционально удалять запись.
Разговор пишется с момента посылки DTMF. Я не знаю, как активировать запись на существующем канале, поэтому буду изобретать, Например можно создать динамическую конференцию с записью, а потом тихо через channelredirect туда перенаправлять существующий разговор. Либо, вызывать AMI команду, активирующую запись на канале. Мне кажется, это более правильно.
У первого способа по сравнению со вторым есть плюс - весь разговор. Бывает такое, записать хочешь, пишешь, а поздно, главные слова уже были сказаны. Но есть и минус - хочешь записать кусок разговора, а пишешь весь. Значит, делать надо оба способа :-)
Все разговоры пишутся по умолчанию. Получается человек говорит, а потом решает что эта запись нужна ему и на мыло (можно конечно его потом ручками в общем потоке выискивать, но это то). То, что в процессе надо выставить флаг, а потом его обработать я придумал :) Возникла загвоздка как бы без сильного руковмешательства это интегрировать в стандартный эластикс.
lash ( 2012-07-20 10:28:24 +0400 )редактироватьзапись на канале делаеться через фичу monitor или через AMI вызов монитор.
meral ( 2012-07-20 10:50:32 +0400 )редактировать> без сильного руковмешательства это интегрировать в стандартный эластикс. Я не знаток FreePbx, но думаю, там либо features.conf, либо featurescustom.conf, куда вписать надо свой макрос. А потом добавить его в extensionscustom.conf. IMHO вообще не вмешиваясь в freepbx.
litnimax ( 2012-07-20 11:49:57 +0400 )редактироватьБез рук не получится. Если не хочется лезть самому руками, найди, кто это сделает за деньги.
Задан: 2012-07-19 16:40:54 +0400
Просмотрен: 2,195 раз
Обновлен: Jul 23 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.