Защита от «спама» на 8800 во FreePBX
Оператор номеров 8800, которого я советую своим клиентам, берет 2.42 руб/минуту с поминутной тарификацией, и 2.89 руб/минуту с посекундной. С посекундной, конечно, все проще, но тоже неприятно. За одну минуту можно совершить минимум 10 звонков, которые спишут с баланса владельца номера почти 15 рублей. За час это будет 900 рублей, и это если в один поток. В общем, проблема есть и явная.
Решение было найдено несложное, по традиции, все делается из вебморды FreePBX. Нам понадобится модуль Smart Routes, который я уже упоминал в предыдущей публикации, там же его можно скачать.
Логика проста — ищем в CDR последние звонки с текущего номера, и если их больше X за Y минут — сбрасываем звонок.
Запрос в модуле прост:
SELECT count(`calldate`) FROM `cdr` WHERE (`src`='${CALLERID(number)}') AND (`calldate` BETWEEN NOW() - INTERVAL 5 MINUTE AND NOW())
Как видно, интервал указывается именно тут, в запросе. Запрос отберет количество звонков с текущего номера за последние 5 минут и выведет их в результирующем поле одной строкой.
Match Type нам необходимо установить в LESSER, по совпадению — переход на нужную нам точку, Failover устанавливаем, например, в Terminate => Hangup. Именно в этом поле настраивается число разрешенных звонков с текущего номера за интервал, указанный в запросе.
Default Destination также сброс.
Выглядит это так:
Остается направить звонки в модуль Smart Routes во входящих правилах и все!
Удачи и поменьше неадекватных людей вам на пути.
Комментарии (3)
6 сентября 2016 в 16:51
0↑
↓
Забыл указать настройки для СУБД, они идентичны указанным в прошлой статье, упоминаемой в посте.6 сентября 2016 в 17:10
0↑
↓
А что за оператор? если не секрет…6 сентября 2016 в 17:11 (комментарий был изменён)
0↑
↓
ТТК через iprating
— Искренне прошу прощения, не в ту таблицу посмотрел (
2.42 с поминутной, 2.89 с посекундной, ошибся (
Давно с 8800 не связывался, цены не держатся в голове