Комментарии 14
Не делайте так, используйте queue_log.
Также астериск вообще говоря не гарантирует запись CDR в таблицу до запуска h-exten. Вы вроде как решили это через sleep 7, НО астериск не гарантирует и за 7 секунд вообще говоря.
А еше на нагруженной системе скрипты с sleep 7 будут убиваться случайно.
Корректным решением был бы скрипт, который мониторит в mysql queue_logs и по записи ABANDON шлет сообщение.
Также астериск вообще говоря не гарантирует запись CDR в таблицу до запуска h-exten. Вы вроде как решили это через sleep 7, НО астериск не гарантирует и за 7 секунд вообще говоря.
А еше на нагруженной системе скрипты с sleep 7 будут убиваться случайно.
Корректным решением был бы скрипт, который мониторит в mysql queue_logs и по записи ABANDON шлет сообщение.
0
а еще queue_log можно писать в mysql и там настроить триггер на ABANDON
0
простите, а почему select | grep, а не добавить в where условие? думаю, что при наличии индекса на поле, будет быстрее. проверяли ли этот вариант?
0
Не пользуйтесь postfix если вам надо просто отправлять почту… есть ssmtp
конфигурация из 5 строк.
И используйте mutt при отправке письма
конфигурация из 5 строк.
И используйте mutt при отправке письма
0
Отлавливание пропущенных делается проще. Добавляете в Dial вызов gosub при ответе вызова.
В gosub ставите метку что вызов отвечен.
По hangupcause проверяете наличие метки.
Отправляете почту при отсутствии.
Очередь, не очередь, группа, номер… везде работает.
И не надо в mysql лезь и bash изобретать
В gosub ставите метку что вызов отвечен.
По hangupcause проверяете наличие метки.
Отправляете почту при отсутствии.
Очередь, не очередь, группа, номер… везде работает.
И не надо в mysql лезь и bash изобретать
0
А почему не сделать проще?
У команды QUEUE есть ключ 'c', при котором диалплан продолжается после того, как вызывающий положил трубку, и переменная ABANDONED, которая выставляется в TRUE, если никто из агентов не ответил на вызов.
У команды QUEUE есть ключ 'c', при котором диалплан продолжается после того, как вызывающий положил трубку, и переменная ABANDONED, которая выставляется в TRUE, если никто из агентов не ответил на вызов.
same => n,Queue(callcenter,CcRt,,,,,,callcenter-queue-connected)
same => n,GotoIf($["${ABANDONED}"="TRUE"]?send-email)
0
Очень сложное решение и непрактичное решение. Понятное дело, что нехватку практического опыта надо компенсировать и это похвально, решение все же работает :) Rsa97 выше предложил очень хорошее решение :) на практике мы что-то подобное используем уже довольно долго, и поток из тысяч звонков в день показывают его надежность и эффективность.
0
Откажитесь от вызова System. Любой внешний вызов через System/Exec и тд очень сильно грузит систему, что особенно заметно при хорошей нагрузке.
Если нужно выполнение внешнего скрипта в любой задаче — пишите нормальный демон скрипта и кидайте ему данные через curl, например, или слушайте астериск через AMI/ARI.
Если нужно выполнение внешнего скрипта в любой задаче — пишите нормальный демон скрипта и кидайте ему данные через curl, например, или слушайте астериск через AMI/ARI.
0
Тоже болел внешними скриптами. Наступил на грабли, скрипт не смог подключиться к базе и завис в фоне, в итоге получит 1000* запущенных процессов одного и того же скрипта. Так было до бесконечности пока сервер не упал.
Если уже пользуете скрипты то добавляйте таймаут на исполнение.
Я перешел на использование хендлеров.
wiki.asterisk.org/wiki/display/AST/Hangup+Handlers
Если уже пользуете скрипты то добавляйте таймаут на исполнение.
Я перешел на использование хендлеров.
wiki.asterisk.org/wiki/display/AST/Hangup+Handlers
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
FreePBX. Настройка Asterisk для e-mail уведомлений о пропущенных входящих вызовах в очереди