Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
configure_asterisk_for_cloud_version [2021/06/22 19:23] Евгений Романенко |
configure_asterisk_for_cloud_version [2023/04/18 19:18] (текущий) Евгений Романенко |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
**Системные требования.** | **Системные требования.** | ||
- | * На сервере (здесь и далее примем, что “сервером” может быть как отдельный компьютер, \\ так и виртуальная машина, VPS/VDS и т .д. должна быть установлена операционная система Linux семейства Debian не ниже 7.0 (Ubuntu 14.04 и выше), CentOS не ниже 6.5 или другие дистрибутивы с актуальной базой репозиториев. | + | * На сервере (здесь и далее примем, что “сервером” может быть как отдельный компьютер, \\ так и виртуальная машина, VPS/VDS и т .д. \\ Также отметим: docker-контейнер с локальной версией системы статистики может быть запущен как на том же сервере, что и АТС Asterisk, так и на отдельном сервере) должна быть установлена операционная система Linux семейства Debian не ниже 10.0 (Ubuntu 18.04 и выше), CentOS не ниже 7 или другие дистрибутивы с актуальной базой репозиториев. |
* IP АТС Asterisk должна быть версии не ниже 1.8. \\ На Asterisk должна быть настроена запись информации о разговорах в таблицы cel, cdr и queue_log, подробную информацию о необходимых настройках Asterisk вы найдете ниже в разделе "Настройки Asterisk". | * IP АТС Asterisk должна быть версии не ниже 1.8. \\ На Asterisk должна быть настроена запись информации о разговорах в таблицы cel, cdr и queue_log, подробную информацию о необходимых настройках Asterisk вы найдете ниже в разделе "Настройки Asterisk". | ||
Строка 145: | Строка 145: | ||
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)}); | ||
Строка 153: | Строка 155: | ||
Set(CDR(realdst)=${called}); | Set(CDR(realdst)=${called}); | ||
Set(CDR(realsrc)=${calling}); | Set(CDR(realsrc)=${calling}); | ||
+ | ExecIf($["${calling}" = "${called}"]?Set(CDR(realsrc)=${CUTTEDCHANNEL})); | ||
MixMonitor(${WAV}/${datedir}/${fname}.wav,b,${monopt}); | MixMonitor(${WAV}/${datedir}/${fname}.wav,b,${monopt}); | ||
Строка 178: | Строка 181: | ||
[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}" = "${CalleeID}"]?Set(CDR(realsrc)=${CUTTEDCHANNEL})) | ||
+ | same => n,MixMonitor(${WAV}/${fname}.wav,b,${monopt}) | ||
+ | same => n(end),MacroExit() | ||
;пример использования | ;пример использования |