Pull to refresh

Защита от «спама» на 8800 во FreePBX

Reading time2 min
Views10K
Приветствую, астерискеры и сочувствующие! Вчера ночью на одном популярном форуме в тематике asterisk наткнулся на вопрос: как же можно «по быстрому» защитить свой номер 8800 от методики, которую нередко используют конкуренты — многократному дозвону на номер для срабатывания тарификации у владельца номера?

Оператор номеров 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 также сброс.

Выглядит это так:

image

Остается направить звонки в модуль Smart Routes во входящих правилах и все!
Удачи и поменьше неадекватных людей вам на пути.
Tags:
Hubs:
+18
Comments24

Articles