Назад | Перейти на главную страницу

Asterisk записывает исходящие звонки

Я пытаюсь записывать исходящие звонки на звездочку и всегда получаю пустой аудиофайл.

Понятно почему :( Часть [исходящих] для тестовых звонков

exten => 8916XXXXXXX,1,NoOp()
exten => 8916XXXXXXX,n,Verbose("Writing call")
exten => 8916XXXXXXX,n,Gosub(record_out,s,1(${EXTEN}))
exten => 8916XXXXXXX,n,Dial(SIP/sip-trunk/${EXTEN},,T)
exten => 8916XXXXXXX,n,Hangup()

Sub для записи файлов:

[record_out]
exten => s,1,Set(MCALLER=${CALLERID(num)})
exten => s,n,Set(MCALLED=${MACRO_EXTEN})
exten => s,n,Set(MDIRECTION=${IF($["${ARG1}" = ""]?IN:${ARG1})})
exten => s,n,Verbose(Call from ${MCALLER} to ${MCALLED} direction ${MDIRECTION})
exten => s,n,Set(FOLDER=/mnt/data/${MCALLER})
exten => s,n,Set(CALLFILENAME=OUT_${STRFTIME(${EPOCH},,%C%y-%m-%d_%H-%M-%S)}_CID_${MCALLER}_CAID_${MCALLED}_ID${UNIQUEID}_${MDIRECTION})
exten => s,n,MixMonitor(${FOLDER}/${CALLFILENAME}.wav,b)
;exten => s,n,Dial(SIP/mtt-ariel/${EXTEN},,T)
exten => s,n,Return()

Попробуйте использовать ulaw вместо wav и перекодируйте его позже, также передача идентификатора вызывающего абонента в качестве аргумента может работать ненадежно, поэтому я обычно передаю его как расширение плана набора. Попробуйте это, чтобы увидеть, работает ли он (может потребоваться установка sox):

 exten => 8916XXXXXXX,1,NoOp()
 exten => 8916XXXXXXX,n,Verbose("Writing call")
 exten => 8916XXXXXXX,n,Gosub(record_out,${EXTEN},1)
 exten => 8916XXXXXXX,n,Dial(SIP/sip-trunk/${EXTEN},,T)
 exten => 8916XXXXXXX,n,Hangup()

 [record_out]
 exten => s,1,StopMixMonitor()
 exten => s,2,System(sox -q --single-threaded -t ul -r 8000 -c 1 ${CALLFILENAME}.ulaw ${CALLFILENAME}.wav && rm ${CALLFILENAME}.ulaw)

 exten => _X.,1,Set(MCALLER=${CALLERID(num)})
 exten => _X.,n,Set(MCALLED=${MACRO_EXTEN})
 exten => _X.,n,Set(MDIRECTION=${IF($["${EXTEN}" = ""]?IN:${EXTEN})})
 exten => _X.,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
 exten => _X.,n,Verbose(Call from ${MCALLER} to ${MCALLED} direction ${MDIRECTION})
 exten => _X.,n,Set(FOLDER=/mnt/data/${MCALLER})
 exten => _X.,n,Set(CALLFILENAME=OUT_${STRFTIME(${EPOCH},,%C%y-%m-%d_%H-%M-%S)}_CID_${MCALLER}_CAID_${MCALLED}_ID${UNIQUEID}_${MDIRECTION})
 exten => _X.,n,MixMonitor(${FOLDER}/${CALLFILENAME}.ulaw,a)
 exten => _X.,n,Return()