Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
install_local_version [2021/11/02 07:16] Евгений Романенко |
install_local_version [2022/08/27 08:13] (текущий) Евгений Романенко |
||
---|---|---|---|
Строка 70: | Строка 70: | ||
macro recording (calling,called) { | macro recording (calling,called) { | ||
if ("${RECORDING}" = "1"){ | if ("${RECORDING}" = "1"){ | ||
+ | Set(CUTTEDCHANNEL=${CUT(CHANNEL,,1)}); | ||
+ | Set(CUTTEDCHANNEL=${CUT(CUTTEDCHANNEL,/,2)}); | ||
Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${calling}-${called}); | Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${calling}-${called}); | ||
Set(datedir=${STRFTIME(${EPOCH},,%Y/%m/%d)}); | Set(datedir=${STRFTIME(${EPOCH},,%Y/%m/%d)}); | ||
Строка 79: | Строка 81: | ||
Set(CDR(realdst)=${called}); | Set(CDR(realdst)=${called}); | ||
Set(CDR(realsrc)=${calling}); | Set(CDR(realsrc)=${calling}); | ||
+ | ExecIf($["${calling:-10:10}" = "${called:-10:10}"]?Set(CDR(realsrc)=${CUTTEDCHANNEL})); | ||
MixMonitor(${WAV}/${datedir}/${fname}.wav,b,${monopt}); | MixMonitor(${WAV}/${datedir}/${fname}.wav,b,${monopt}); | ||
Строка 104: | Строка 107: | ||
[macro-vistep.ru-record] | [macro-vistep.ru-record] | ||
exten => s,1,NoOp(== START macro-vistep.ru-record ==) | exten => s,1,NoOp(== START macro-vistep.ru-record ==) | ||
- | same => n,Set(CallerID=${ARG1}) | + | same => n,Set(CallerID=${ARG1}) |
- | same => n,Set(CalleeID=${ARG2}) | + | same => n,Set(CalleeID=${ARG2}) |
- | same => n,NoOp(CalleeID=${CalleeID}, CallerID=${CallerID}) | + | same => n,Set(CUTTEDCHANNEL=${CUT(CHANNEL,,1)}) |
- | same => n,NoOp(VISTEPRURECORDING = ${VISTEPRURECORDING}) | + | same => n,Set(CUTTEDCHANNEL=${CUT(CUTTEDCHANNEL,/,2)}) |
- | same => n,GotoIf($["${VISTEPRURECORDING}" = "0"]?end) | + | same => n,NoOp(CalleeID=${CalleeID}, CallerID=${CallerID}) |
- | same => n,Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${CallerID}-${CalleeID}) | + | same => n,NoOp(VISTEPRURECORDING = ${VISTEPRURECORDING}) |
- | same => n,Set(datedir=${STRFTIME(${EPOCH},,%Y/%m/%d)}) | + | same => n,GotoIf($["${VISTEPRURECORDING}" = "0"]?end) |
- | same => n,System(mkdir -p ${MP3}/${datedir}) | + | same => n,Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${CallerID}-${CalleeID}) |
- | same => n,Set(monopt=nice -n 19 /usr/bin/lame -b 32 --silent "${WAV}/${fname}.wav" "${MP3}/${datedir}/${fname}.mp3" && rm -f "${WAV}/${fname}.wav" && chmod o+r "${MP3}/${datedir}/${fname}.mp3") | + | same => n,Set(datedir=${STRFTIME(${EPOCH},,%Y/%m/%d)}) |
- | same => n,Set(CDR(filename)=${fname}.mp3) | + | same => n,System(mkdir -p ${MP3}/${datedir}) |
- | same => n,Set(CDR(realdst)=${CalleeID}) | + | same => n,Set(monopt=nice -n 19 /usr/bin/lame -b 32 --silent "${WAV}/${fname}.wav" "${MP3}/${datedir}/${fname}.mp3" && rm -f "${WAV}/${fname}.wav" && chmod o+r "${MP3}/${datedir}/${fname}.mp3") |
- | same => n,Set(CDR(realsrc)=${CallerID}) | + | same => n,Set(CDR(filename)=${fname}.mp3) |
- | same => n,MixMonitor(${WAV}/${fname}.wav,b,${monopt}) | + | same => n,Set(CDR(realdst)=${CalleeID}) |
- | same => n(end),MacroExit() | + | same => n,Set(CDR(realsrc)=${CallerID}) |
+ | same => n,ExecIf($["${CallerID:-10:10}" = "${CalleeID:-10:10}"]?Set(CDR(realsrc)=${CUTTEDCHANNEL})) | ||
+ | same => n,MixMonitor(${WAV}/${fname}.wav,b,${monopt}) | ||
+ | same => n(end),MacroExit() | ||
;пример использования | ;пример использования | ||
Строка 126: | Строка 132: | ||
[from-pstn-custom] | [from-pstn-custom] | ||
exten => _XX.,1, Macro(vistep.ru-record,${CALLERID(number)},${EXTEN})</code> | exten => _XX.,1, Macro(vistep.ru-record,${CALLERID(number)},${EXTEN})</code> | ||
- | - Для входа в систему статистики используйте данные авторизации (Email-адрес/Пароль для авторизации) из регистрационного письма. | + | - Или у вас внезапно lua <code lua> |
+ | WAV = "/opt/records/wav" -- Временный каталог с WAV | ||
+ | MP3="/opt/records/mp3" --Куда выгружать mp3 файлы | ||
+ | RECORDING=1 -- 1 - запись включена. | ||
+ | |||
+ | function recording(calling,called) | ||
+ | if RECORDING == 1 then | ||
+ | fname = channel.UNIQUEID:get() .. "-" .. channel.STRFTIME("${EPOCH},,%Y-%m-%d-%H_%M".."-"..calling.."-"..called):get() | ||
+ | datedir = channel.STRFTIME("${EPOCH},,%Y/%m/%d"):get().."/" | ||
+ | os.execute("mkdir -p " .. WAV.."/"..datedir) | ||
+ | os.execute("mkdir -p " .. MP3.."/"..datedir) | ||
+ | WAVfname = WAV..datedir..fname..".wav" | ||
+ | MP3fname = MP3..datedir..fname..".mp3" | ||
+ | channel.CDR("filename"):set(MP3fname) | ||
+ | channel.CDR("realdst"):set(called) | ||
+ | channel.CDR("realsrc"):set(calling) | ||
+ | monopt = string.format("nice -n 19 /usr/bin/lame -b 32 --silent %s %s && rm -f %s && chown o+r %s",WAVfname,MP3fname,WAVfname,MP3fname) | ||
+ | app.mixmonitor(WAVfname,b,monopt) | ||
+ | return | ||
+ | end; | ||
+ | end; | ||
+ | |||
+ | extensions = { | ||
+ | ["local"] = { | ||
+ | --локальные вызовы на номера XXX | ||
+ | ["_XXX"] = function(context,extension) | ||
+ | app.answer() | ||
+ | recording(channel.CALLERID("num"):get(),extension) | ||
+ | app.dial("SIP/"..extension,300,"t") | ||
+ | app.hangup() | ||
+ | end; | ||
+ | }; | ||
+ | |||
+ | } | ||
+ | |||
+ | </code> | ||
+ | - Для входа в систему статистики используйте email/пароль, которые сообщат вам инженеры технической поддержки. | ||
\\ | \\ | ||
На этом настройка завершена, приятного пользования! \\ По любым вопросам/неполадкам/пр. пишите нам на <support@vistep.ru> или прямо из интерфейса, в меню Help Desk. | На этом настройка завершена, приятного пользования! \\ По любым вопросам/неполадкам/пр. пишите нам на <support@vistep.ru> или прямо из интерфейса, в меню Help Desk. |