сообщения о пропущенных вызовах
Поставило руководство задачу, чтобы на почту сыпались сообщения о пропущенных вызовах с номером телефона клиента.
Есть Elastis 2.2.0-25, есть две очереди. Созданы в вебе, потом скопированы в extensions_custom и чуть-чуть подкорректированы (наименования вайлов записи разговоров). Вся остальная обработка входящего звонка идет стандартными контекстами.
Особо вмешиваться в стандартные конфиги не хочется, если они итак замечательно работают.
В принципе отправлять сообщения из астера получается, а вот как определить, что вызов пропущен и в какую щель конфигов впихнуть строчку, что надо бы отправить сообщение, не ясно.
Судя по штатной статистике, думаю, пропущенными вызовами можно считать такие:
1. статус звонка ANSWER, но поле канал-приемник пустое (т.е. абонент не дождался из очереди)
2. статус звонка NOANSWER и поле канал-приемник имеет значение (оператор отошел от телефона, не поставив режим ДНД).
Вопрос в какой момент проверить эти значения и как бы так присоседиться к базовым конфигам, написанным куда более умными и опытными людьми.
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
пасиба, буду читать
| Цитата: |
| Вы можете написать некий демон, который сканит биллинг с какой-то периодичностью и формирует, при наличии требуемых условий сообщение |
нужно было подобное. сделал скрип и с завидной периодичностью его запускал.
но такое решение не понравилось.
покопал в инете (искать типа "mysql udf sys_exec")
и скачал исходники UDF библиотеки, которая может запускать скрипт из mysql.
сделал тригер, и вуаля.
при появлении нужной записи у меня автоматом запускается скрипт.
ну очень удобно, и не надо кроном дергать регулярно. а то если запускать крон часто, то делается лишняя никому не нужная работа.
а если редко, то получаем большие задержки.
небольшие подсказки для новичков:
в тригере не забудьте пометить отработанную запись. ( что бы не получить бесконечный цикл)
скрипт запускается с правами mysql (если что более менее серьезное, то можно настроить SUDO)
_________________
Алексей Милько
так что выкладываю тут.
есть библиотека для mysql
https://github.com/mysqludf/lib_mysqludf_sys#readme
можете взять скомпилированный, можете скомпилировать сами.
после добавления этой библиотеки в базе будут работать некоторые функции.
нас интересует только одна. "sys_exec" (эта функция умеет запускать скрипты.)
после чего в нужной таблице создаем свой тригер, который будет срабатывать на нужное событие.
у меня тригер срабатывает на добавление новой записи.
| Код: |
| CREATE DEFINER = 'DatabaseUser'@'localhost' TRIGGER `messages_after_ins_tr` AFTER INSERT ON `messages` FOR EACH ROW BEGIN DECLARE result CHAR(255); SET result = sys_exec('sudo /usr/vmc/robo-error/error-sms.sh &'); END; |
не забываем в mysql дать нужные права нужную таблицу.
пример рабочего скрипта
| Код: |
| #!/bin/bash IDM=$(mysql -uпользователь -pпароль -e "select id from messages WHERE sended is null limit 1;" база -B -N) if [ -n "$IDM" ]; then sudo -u root bash -c echo $(date +"%F %T") ' посылаем сообщение' >>/var/log/sms msg=$(mysql -uпользователь -pпароль -e "select mess from messages WHERE id=$IDM" база -B -N) sudo -u root bash -c echo "$msg" >>/var/log/sms status=$(sudo -u root wget "https://специальный урл для отсылки смс&text=$msg" --quiet -O - |grep "" | grep -c ">success |