FreePBX уведомление о пропущенных звонках на почту.
В статье описан вариант решения проблемы об отправке оповещений на почту о пропущенных звонках, совершенных в нерабочее время или когда звонивший повесил трубку, не дождавшись ответа.
В интернете есть довольно много вариантов решения, но, как обычно, нет идеально подходящего. Поэтому выкладываю еще один.))
Уведомление о звонках, пропущенных в нерабочее время.
У меня стояла задача настроить FreePBX уведомление о пропущенных звонках в нерабочее время(вечерние часы и выходные)на почту . Так как у меня используется специально созданное голосовое меню(IVR) с сообщением перезвонить в рабочие часы, то настраивать отправку уведомлений нужно именно на этом IVR. Если нужно настроить отправку уведомлений о пропущенных звонках на других IVR, то настройка будет аналогичной.
Итак, для начала, нужно выяснить номер этого IVR. Сделать это удобнее через консоль, выполнив команду:
1 |
cat /etc/asterisk/extensions_additional.conf | grep <название ivr> |
где <название ivr> — название(или его часть) ivr, которым вы обозвали ваше голосовое меню. В нашем примере IVR называется «Нерабочее время». Вот вывод команды:
Как видим, интерактивное меню имеет номер 2.
Теперь нужно отредактировать файл /etc/asterisk/extensions_override_freepbx.conf
1 |
nano /etc/asterisk/extensions_override_freepbx.conf |
Добавляем туда следующее:
1 2 3 |
[ivr-2] ; exten => h,1,System(echo "${CDR(start)} пропущен звонок в ivr Нерабочее время от ${CDR(clid)} | На номер: ${CDR(did)} | Звонок длился: ${CDR(duration)} сек. | Дата звонка: ${STRFTIME(${EPOCH},,%l:%M:%S %p %Z on %A %B %e)}" | mail -s "Пропущен звонок от ${CDR(clid)}" info@mail) exten => h,2,Macro(hangupcall,) |
где <info@mail> — почтовый адрес, на который нужно отправить уведомление. Для отправки оповещений на несколько адресов просто допишите их через запятую.
Собственно, содержимое Дата звонка: ${STRFTIME(${EPOCH},,%l:%M:%S %p %Z on %A %B %e)} можно удалить, так как уже есть время начала звонка(${CDR(start)}).
После этого сохраняем файл и перечитываем конфиг Asterisk командой core reload
Теперь после того, как звонящий положит трубку во время работы IVR, на указанный почтовый адрес придет письмо примерно следующего вида:
Уведомление о звонках, пропущенных в очереди.
Если нужно уведомлять о звонках, которые дошли до очереди, но звонящий не дождался ответа агента очереди, нужно проделать аналогичные манипуляции. Только вместо [ivr-2] будет [ext-queues]. То есть, в файл нужно добавить примерно следующее:
1 2 3 |
[ext-queues] ; exten => h,1,System(echo "${CDR(start)} пропущен звонок от ${CDR(clid)} | На номер: ${CDR(did)} | Звонок длился: ${CDR(duration)} сек. | Дата звонка: ${STRFTIME(${EPOCH},,%l:%M:%S %p %Z on %A %B %e)} | Очередь ${NODEST}" | mail -s "Пропущен звонок от ${CDR(clid)}" info@mail) exten => h,2,Macro(hangupcall,) |
Здесь можно добавить номер очереди(переменная ${NODEST})
Чтобы сделать то же для групп вызова нужно заменить [ext-queues] на [ext-group]
При написании статьи использовались идеи с сайтов https://voxlink.ru/kb/freepbx/missed-call-freepbx/ и https://smirnov-alexey.ru/asterisk-missed-calls
Настройка оповещений о состоянии транков описана в статье FreePBX Мониторинг транков..
Добрый день.
У меня приходят все звонки не зависимо отвечен он или нет.
В чем может быть проблема?
Добрый день.
В статье описан вариант уведомления о звонках, поступивших в нерабочее время и попавших в специальное голосовое меню. Там и настраивались уведомления. Как это настроено у Вас, из Вашего комментария не понятно. Возможно, более подробное описание Ваших настроек поможет понять причину проблемы.
Странно, но у меня вообще уведомления не доставляет.
Пробовал прописывать и
[ivr-1] ;
exten => h,1,System(echo «${CDR(start)} пропущен звонок в ivr IVR_ReceptionBusy от ${CDR(clid)} | На номер: ${CDR(did)} | Звонок длился: ${CDR(duration)} сек. | Дата звонка: ${STRFTIME(${EPOCH},,%l:%M:%S %p %Z on %A %B %e)}» | mail -s «Пропущен звонок от ${CDR(clid)}» <список адресов>)
exten => h,2,Macro(hangupcall,)
и
[ivr-1] ;
exten => h,1,System(echo «${CDR(start)} пропущен звонок в ivr IVR_ReceptionBusy от ${CDR(clid)} | На номер: ${CDR(did)} | Звонок длился: ${CDR(duration)} сек. | Дата звонка: ${STRFTIME(${EPOCH},,%l:%M:%S %p %Z on %A %B %e)}» | mail -s «Пропущен звонок от ${CDR(clid)}» <список адресов>)
exten => h,2,Macro(hangupcall,)
[ext-queues] ;
exten => h,1,System(echo «${CDR(start)} пропущен звонок от ${CDR(clid)} | На номер: ${CDR(did)} | Звонок длился: ${CDR(duration)} сек. | Дата звонка: ${STRFTIME(${EPOCH},,%l:%M:%S %p %Z on %A %B %e)} | Очередь ${NODEST}» | mail -s «Пропущен звонок от ${CDR(clid)}» <список адресов>)
exten => h,2,Macro(hangupcall,)
ни в том ни в другом варианте не работает. А надо, чтобы по-хорошему работало во втором варианте. В любом.
Возможно, проблема именно с доставкой писем. Проверьте почтовые логи.