artem
19.02.2019
359

Скрипт конвертации записей в mp3 на лету. Отправка записи на почту с указанием информации по звонку

Разберем для начала сам скрипт. Нам понадобятся так же данные к таблице cdr mysql и почтовые ящики Создадим директорию и файл: Чтобы изменить права на папки и файлы, выполним в консоли следующие команды: Открываем файл: Для удобства оформим их сразу в переменные: Данные можно посмотреть в файле Далее формируем путь и имя файла в переменную, […]

Разберем для начала сам скрипт.
Нам понадобятся так же данные к таблице cdr mysql и почтовые ящики
Создадим директорию и файл:

$ mkdir /etc/asterisk/scripts/
$ touch /etc/asterisk/scripts/send-to-mail-mp3.sh
Если мы создавали скрипт в ранее не существующей директории, нам обязательно понадобится изменить права на папки и файлы
Чтобы изменить права на папки и файлы, выполним в консоли следующие команды:
$ chown –R asterisk:asterisk /etc/asterisk/scripts/
$ chmod 755 /etc/asterisk/scripts/send-to-mail-mp3.sh

Открываем файл:

 $ nano /etc/asterisk/scripts/send-to-mail-mp3.sh

Для удобства оформим их сразу в переменные:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
cdrdb=asteriskcdrdb #имя БД
cdrtable=cdr #имя таблицы
astdbuser=freepbx #пользователя смотрим в /etc/asterisk/res_odbc_additional.conf
astdbuserpass=xxxxxxxxxxxxxxxxxxx #пароль там же в /etc/asterisk/res_odbc_additional.conf
toemail=client@voxlink.ru # почта НА которую будем отправлять файл записи
fromemail=mp3cdr@voxlink.ru # почта С которой отправляем сообщение
# 1{YEAR} 2{MONTH} 3{DAY} 4{TIMESTR} 5{FROMEXTEN} 6{CALLFILENAME} 7{MIXMON_FORMAT} 8{ARG3} 9{FROM_DID}

Данные можно посмотреть в файле

/etc/asterisk/res_odbc_additional.conf
Последняя закомментированная строка напоминает в каком порядке указаны переменные снаружи скрипта (об этом чуть позже) Выносим мы их потому, что значения переменных будем получать в процессе диалплана и они являются частью asterisk’a, поэтому присвоив внутри мы не сможем их получить

Далее формируем путь и имя файла в переменную, а затем используя Lame конвертируем

Важно! В системе должен быть установлен Lame
Чтобы установить Lame используйте следующие команды:
$ yum -y install epel-release
$ yum -y install lame
В этой части мы так же удаляем за собой предыдущий формат записи
FFILENAME=/var/spool/asterisk/monitor/$1/$2/$3/$6.$7
test ! -e ${FFILENAME} && exit 21
WAVFILE=${FFILENAME}
MP3FILE=`echo ${WAVFILE} | sed 's/.wav/.mp3/g'`
LOWNICE="nice -n 19 ionice -c3"
${LOWNICE} lame --quiet --preset phone -h -v ${WAVFILE} ${MP3FILE}
test -e ${MP3FILE} && rm -f ${WAVFILE}
${LOWNICE} ffmpeg -loglevel quiet -y -i ${MP3FILE} -f wav -acodec copy ${WAVFILE} >/dev/null 2>&1
test -e ${WAVFILE} && rm -f ${MP3FILE}

Далее, т.к. нам понадобится скачивать записи в формате mp3, следует учесть, что стандартный CDR во FreePBX видит только wav. Поэтому сразу за конвертацией заменим расширение файла в бд.

mysql --user="$astdbuser" --password="$astdbuserpass" --database="$cdrdb" --execute='UPDATE '$cdrtable' SET recordingfile="'$6'.mp3" WHERE recordingfile="'$6'.wav";';

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

dt=$(date '+%m/%d/%Y %r');
/usr/local/bin/sendEmail.pl -f $fromemail -t $toemail -u "Запись разговора $dt $5 $8" -m "Уважаемый клиент! \n\n Записан разговор от $dt \n\n Номер линии АТС: $9 \n\n Кто звонил: $5 \n\n С кем говорил:  $8 \n\n Запись разговора во вложении \n\n" -o message-charset=UTF-8 -a "${MP3FILE}"

На FreePBX заходим в Settings -> Advanced Settings

Включаем 2 настройки: Display Readonly Settings и Override Readonly Settings

Далее жмем Apply Config и там же в Advanced Settings после этого  должно появиться поле Post Call Recording Script.

Вставляем туда путь к нашему скрипту и как раз указываем наши переменные:

 /etc/asterisk/scripts/send-to-mail-mp3.sh ^{YEAR} ^{MONTH} ^{DAY} ^{TIMESTR} ^{FROMEXTEN} ^{CALLFILENAME} ^{MIXMON_FORMAT} ^{ARG3} ^{FROM_DID}

В консоли asterisk’a можем соответственно видеть, что скрипт удачно отработал после звонка

Проверим, что в нашу БД заносятся данные о звонках с расширением mp3:
Подключимся к mysql  и выполним команды (дату установите нужную):

use asteriskcdrdb;
select calldate,dst,src,recordingfile from cdr where calldate BETWEEN CAST('2018-12-32' AS DATE) AND CAST('2018-12-33' AS DATE);

Как видно, данные наполняются уже с новым расширением.
Итог: сразу же, после каждого разговора запись конвертируется в mp3, удаляется изначальный wav файл, что бы не занимать место (ради чего мы в основном всё это и делали) и перезаписываем формат расширения в БД mysql CDR, что бы могли видеть и скачивать записи в CDR Reports FreePBX.

Ну и запись на почте:

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices