Возникла потребность в отчёте по пропущенным звонкам.
Так как 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
Комментарии