Инструменты пользователя

Инструменты сайта


install_local_version

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
install_local_version [2019/10/28 10:45]
Евгений Романенко
install_local_version [2022/08/27 08:13] (текущий)
Евгений Романенко
Строка 1: Строка 1:
 **Системные требования.** **Системные требования.**
  
-  * На сервере (здесь и далее примем,​ что “сервером” может быть как отдельный компьютер,​ \\ так и виртуальная машина,​ VPS/VDS и т .д. \\ Также отметим:​ docker-контейнер с локальной версией системы статистики может быть запущен как на том же сервере,​ что и АТС Asterisk, так и на отдельном сервере) должна быть установлена операционная система Linux семейства Debian не ниже ​7.0 (Ubuntu ​14.04  и выше), CentOS не ниже ​6.5 или другие дистрибутивы с актуальной базой репозиториев.+  * На сервере (здесь и далее примем,​ что “сервером” может быть как отдельный компьютер,​ \\ так и виртуальная машина,​ VPS/VDS и т .д. \\ Также отметим:​ docker-контейнер с локальной версией системы статистики может быть запущен как на том же сервере,​ что и АТС Asterisk, так и на отдельном сервере) должна быть установлена операционная система Linux семейства Debian не ниже ​10.0 (Ubuntu ​18.04  и выше), CentOS не ниже ​или другие дистрибутивы с актуальной базой репозиториев.
  
   * IP АТС Asterisk должна быть версии не ниже 1.8. \\ На Asterisk должна быть настроена запись информации о разговорах в таблицы cel, cdr и queue_log, подробную информацию о необходимых настройках Asterisk вы найдете ниже в разделе "​Настройки Asterisk"​.   * IP АТС Asterisk должна быть версии не ниже 1.8. \\ На Asterisk должна быть настроена запись информации о разговорах в таблицы cel, cdr и queue_log, подробную информацию о необходимых настройках Asterisk вы найдете ниже в разделе "​Настройки Asterisk"​.
Строка 7: Строка 7:
   * Сервер БД MySQL не ниже версии 5.5.   * Сервер БД MySQL не ниже версии 5.5.
  
-  * Docker версии 1.7.1 и выше (версии ниже нужно проверять дополнительно). \\ Установка docker в различных ОС подробно расписана в официальной документации:​ \\ [[https://store.docker.com/​editions/community/docker-ce-server-debian?​tab=description|Debian]], [[https://store.docker.com/​editions/community/docker-ce-server-ubuntu?​tab=description|Ubuntu]], [[https://store.docker.com/​editions/community/docker-ce-server-centos?​tab=description|CentOS]]. \\ Для установки в FreePBX 13 можете воспользоваться [[https://​wiki.vistep.ru/​doku.php?​id=установка_docker_на_freepbx_13_centos_6.6|нашей инструкцией]]+  * Docker версии 1.7.1 и выше (версии ниже нужно проверять дополнительно). \\ Установка docker в различных ОС подробно расписана в официальной документации:​ \\ [[https://docs.docker.com/​engine/install/debian/|Debian]], [[https://docs.docker.com/​engine/install/ubuntu/|Ubuntu]], [[https://docs.docker.com/​engine/install/centos/|CentOS]]. \\ Для установки в FreePBX 13 можете воспользоваться [[https://​wiki.vistep.ru/​doku.php?​id=установка_docker_на_freepbx_13_centos_6.6|нашей инструкцией]]
  
 ==== Настройка ==== ==== Настройка ====
Строка 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.
install_local_version.1572234309.txt.gz · Последние изменения: 2019/10/28 10:45 — Евгений Романенко