powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по Триггеру в MySQL
1 сообщений из 1, страница 1 из 1
Вопрос по Триггеру в MySQL
    #39672671
Tirlimbombom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Оговорюсь сразу, с MySQL не работал совсем, поэтому нужен совет - возможно ли вообще то, что я хочу попытаться реализовать.

Преамбула.

Для клиента был создан сервер Asterisk на Freepbx 14 под управлением Ubuntu, но возникла потребность получать извещения на почту при пропущенном звонке. Те скрипты, которые работали на FreePBX12 больше не работают на FreePBX14, поэтому было принято решение писать логи звонка в MySQL. Запись логов настроил, тут всё прекрасно, но поскольку никогда не работал с MySQL, то завис на создании Триггеров.

В данный момент реализован ужасный костыль, который худо-бедно работает.
Из планировщика раз в минуту запускается скрипт со следующими условиями:
Код: plsql
1.
mysql -sse"SELECT callid FROM asterisk.queuelog Where Event=`ABANDON` INTO @a;

- Ищем значение ABANDON (которое говорит нам, что звонок не был отвечен и получаем уникальное значение события CallID) и передаем его в переменную
Код: plsql
1.
Select data2 FROM asterisk.queuelog Where callid=@a AND event=`ENTERQUEUE` INTO OUTFILE `/var/lib/mysql/Missedcall.txt`;

- парсим всю таблицу ищем в таблице CallID и EnterQUEUE (вхождение внешнего звонка в очередь) и значение Data2(телефон звонившего) пишем в TXT файл.
Код: plsql
1.
\! /home/sendmail.sh;"

- запускаем bash скрипт, который проверяет ранее созданный TXT файл и если он не пустой, то содержимое файла копирует в тело письма, отправляет письмо и удаляет TXT файл. Если же файл пустой, то просто удаляет TXT файл.
Код: plsql
1.
mysql -sse"DELETE FROM asterisk.queuelog;"

- Полностью удаляем все данные из таблицы

В чем собственно проблемы:
1. Если за минуту пропускается более одного звонка, то в таблице присутствует два значения ABANDON, а оба значения в переменную мы передать не можем, поэтому скрипт не отрабатывает и я не узнаю, что за эту минуту вообще были пропущены звонки.
2. Приходится постоянно очищать всю таблицу от старых данных, чего делать не хотелось бы.

Какое хочется получить решение:
Это написать Триггер, который будет делать тоже самое, что и скрипт выше, но чтобы он запускался при появлении в таблице нового значения ABANDON.
Тогда решение будет такое, Триггер мониторит таблицу и при появлении ABANDON, выгружает мобильный в TXT и запускает bash скрипт отправки.

Соответственно вопрос - возможно ли это реализовать Триггерами и возможно ли это вообще реализовать средствами MySQL? Спасибо.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по Триггеру в MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]