artem
19.02.2019
5412

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

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

Конвертация записей в mp3

Разберем для начала сам скрипт.
Нам понадобятся так же данные к таблице 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
[email protected] # почта НА которую будем отправлять файл записи
[email protected] # почта С которой отправляем сообщение
# 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.

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

Книга 101 функция Asterisk
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Скачать книгу
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

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

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

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


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

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.