asterisk 15 cdr на почту

Опубликовано beregov.a.e - пт, 04/20/2018 - 16:46

Возникла потребность в отчёте по пропущенным звонкам.

Так как asterisk установлен из портов на freebsd 11 и не имеет web интерфейса для просмотра журнала звонков, а сервер баз данных был выбран postgres, был подготовлен небольшой скрипт. Скрипт выполняется от имени пользователя postgres которому разрешено подключаться без пароля к любой базе данных для примера база asterisk_cdr.

cat  bin/send.sh
#!/bin/sh
date_dey=`date -v-${1}d +%Y-%m-%d`
mails='admin@unixskills.ru' # можно через запятую указать несколько почтовых ящиков.
base_cdr='asterisk_cdr' # имя базы данных где хронятся журнал звонков.
psql ${base_cdr} -c "select src as кто_звонил ,start as когда,billsec ожидал, lastdata as кто_не_ответил, disposition as из_за_чего from (select src,max(start) as start,max(billsec) as billsec,lastdata,disposition,channel from cdr where start > '"${date_dey}"' and billsec > 5 and channel not in (select channel from cdr where start > '"${date_dey}"' and billsec > 5 and disposition = 'ANSWERED') group by src,lastdata,disposition,channel) as original order by start;" \
| mutt -x -s "пропущенные за пироуд с `date -v-${1}d +%Y-%m-%d` по `date +%Y-%m-%d` " ${mails}

В папке пользователя postgres создал каталог bin и туда положил скрипт.

Как это работает .

Вызывается скрипт с параметром. Параметр это за сколько дней нужен отчёт по пропущенным звонкам. После чего происходит магия sql и получаем отчёт. В отчёт не попадают звонки когда звонящий ожидал ответ на вызов больше 5 секунд. Это где-то два гудка. После чего положил трубку. Так как подразумевается о  не серьёздность намерения звонящего человека или ошибки выбора в голосовом меню. Например позвонил на номер компании в голосовом меню ошибочно нажал не на ту кнопку. Вызов в это время пощёл дольше на очередь или ещё куда, у кого как.  После чего сбросил.

Если кому надо в обще все пропущенные вызовы, то удалите "and billsec > 5 " из запроса.

После чего отчёт можно отправить на e-mail. Для этого я использовал mutt. Который настроил по этой статье. https://rbapub.wordpress.com/2016/09/30/debian-mutt-imap-yandex/

Отчёт необходимо было отправлять два раза в неделю. Во вторник и четверг. Для этого в cron добавил два задания.

00      12      *       *       2       /var/db/postgres/bin/send.sh 5
00      12      *       *       4       /var/db/postgres/bin/send.sh 2

 

 

Теги