АНТИ СПАМ ДЛЯ FREEPBX

Существует множество различных программ для блокировки спама на мобильных телефонах, а вот найти что-то подобное для IP-АТС и IP-телефонов – уже сложнее.

Бот определяет спамеров, местоположение и оператора связи. Предназначен для IP-АТС (Asterisk, FreePBX, FreeSWITCH), IP-телефонов и CRM. Если фиксируется спам-звонок, то сервис присылает уведомление в Telegram с соответствующей пометкой и названием оператора связи. API ссылка так же возвращает текст с названием оператора.

Таким образом если указать эту ссылку в Asterisk, то сообщение с пометкой спам и оператором связи отобразится в Telegram и на экране IP-телефона, а в статистике CDR всегда можно будет фильтровать выдачу по операторам связи.

Помечая звонок как "спам", все пользователи вносят свой вклад в расширение спам-базы.

Если номер помечен другими пользователями как спам, после слова "СПАМ" в скобках будет количество отметивших. Пример: СПАМ(2) +7(495)100-00-00

Возможности сервиса:

Определение номеров по спам-базам;
Персональный спам список;
Определение страны/города;
Определение оператора связи;
Добавление комментариев к звонку.

ПОДКЛЮЧЕНИЕ API
Перейдите в Телеграм скачайте приложение для Windows

бот @phone_info_bot

telegram.org/phone_info_bot
t.me/phone_info_bot
tele.gg/phone_info_bot
Или в поиске приложения Телеграм введите @phone_info_bot

API ссылка:

http://rustyle.tmweb.ru/bots/tgbots/phone_info_bot/callerid_lookup_src/callerid_lookup.php?in_num=ВХОДЯЩИЙ_НОМЕР&dst_num=НОМЕР_НАЗНАЧЕНИЯ&user_id=ВАШ_USER_ID&api_key=ВАШ_API_KEY

ВХОДЯЩИЙ_НОМЕР - Код страны и телефон. Пример: 74991234567;
НОМЕР_НАЗНАЧЕНИЯ - Код страны и телефон. Пример: 74991234567;
ВАШ_USER_ID - Выдается при запуске бота;
ВАШ_API_KEY - Выдается при запуске бота;
Получить USER_ID и API_KEY можно обратившись к боту по одной из ссылок выше.

ПОДКЛЮЧЕНИЕ FREEPBX
Перейдите в Web-интерфейс, в меню Admin > CallerID Lookup Sources > Add CID Lookup Source и заполните следующие поля:

В поле Source type выберите HTTP
В поле Host укажите rustyle.tmweb.ru
В поле Path введите bots/tgbots/phone_info_bot/callerid_lookup_src/callerid_lookup.php
И наконец – в поле Query введите следующее:
in_num=[NUMBER]&dst_num=${FROM_DID}&user_id=ВАШ_USER_ID&api_key=ВАШ_API_KEY

В поле Query не забудьте заменить ВАШ_USER_ID и ВАШ_API_KEY. Параметры [NUMBER] и ${FROM_DID} менять не нужно - оставьте без изменений.

Далее переходим в меню Connectivity > Inbound Routes, выбираем или создаем маршрут, переходим на вкладку Other > CID Lookup Source и выбираем источник из предыдущего шага.

БЛОКИРОВКА СПАМ-ЗВОНКОВ НА FREEPBX И ASTERISK
Добавляем в файл /etc/asterisk/extensions_custom.conf этот dialplan и изменяем параметры BLOCK_MY_SPAM, BLOCK_SPAM_LEVEL, XXXX

[antispam]
;--== Block SPAM calls with Telegram Bot https://t.me/phone_info_bot ==--;
exten => s,1,Noop( CALLERID(name) = ${CALLERID(name)} )
same => n,Set(BLOCK_MY_SPAM="ON") ; Включение = ON или Отключение = OFF блокировки номеров из моего СПАМ списка (звонки отмеченные мной как СПАМ).
same => n,Set(BLOCK_SPAM_LEVEL=1) ; Блокировать СПАМ номер, если его отметило кол-во пользователей равное BLOCK_SPAM_LEVEL. 0 = Отключить блокировку.
same => n,Set(SPAM_LEVEL=$["${CALLERID(name)}" =~ "SPAM\((.+)\)"]) ; Блокировка номера по количеству пользователей отметивших как СПАМ. Если в боте выключен транслит, "SPAM" заменить на "СПАМ"
same => n,Noop( SPAM_LEVEL = ${SPAM_LEVEL} && BLOCK_SPAM_LEVEL = ${BLOCK_SPAM_LEVEL} )
same => n,GotoIf( $[ "${SPAM_LEVEL}" >= "${BLOCK_SPAM_LEVEL}" & ${BLOCK_SPAM_LEVEL} != 0 ]?answer) ; Блокировка СПАМ номера определенного уровня.
same => n,GotoIf( $[ ${REGEX("SPAM " ${CALLERID(name)})} = 1 & ${BLOCK_MY_SPAM} = "ON" ]?answer) ; Блокировка из моего СПАМ списка. Если в боте выключен транслит, "SPAM" заменить на "СПАМ"
;same => n,GotoIf( $[ "${CDR(did)}" = "74991111111" ]?from-internal,1000,1) ; Если звонок не СПАМ и позвонили на вх. маршрут 74991111111, перенаправляем сюда. 1000 = номер телефона, очереди или группы.
;same => n,GotoIf( $[ "${CDR(did)}" = "74992222222" ]?from-internal,2000,1) ; Если звонок не СПАМ и позвонили на вх. маршрут 74992222222, перенаправляем сюда. 2000 = номер телефона, очереди или группы.
same => n,Goto(from-internal,XXXX,1) ; Если звонок не СПАМ и позвонили на любой вх. маршрут, перенаправляем сюда. XXXX = номер телефона, очереди или группы.
same => n,Hangup
same => n(answer),Answer ; Если звонок СПАМ, выдаем тишину. Для некоторых спамеров тишина означает неактивный номер, и на него не перезванивают. Если для Вас входящие платные удалите строку.
same => n,Wait(3600) ; Если каналов мало, время можно уменьшить. Если у Вас входящие платные удалите строку.
same => n,Hangup
exten => h,1,Hangup

;--== end ==--;
Далее переходим в меню Admin > Custom Destinations, создаем назначение.
В Target указываем antispam,s,1

В Description указываем antispam

Переходим в меню Connectivity > Inbound Routes, выбираем или создаем маршрут, переходим на вкладку General > Set Destination и выбираем Custom Destinations > antispam

Для каждого входящего маршрута можно создавать отдельный dialplan. Пример antispam-to-exten-1000. И только менять строку Goto(from-internal,XXXX,1)

Или раскоментируйте строки GotoIf( $[ "${CDR(did)}" = "XXXXXXXXXXX" ]?from-internal,XXXX,1) и укажите номер вх. маршрута.

Готово.