klink0v (klink0v) wrote,
klink0v
klink0v

Технарям: собственный голосовой антиспам

Псто направлен на технических спецов. В нём содержатся бесплатные идеи о том, как можно сделать свой собственный голосовой антиспам-фильтр с шахматами и поэтессами на базе Мультифон+Asterisk.

Если вас, как и меня, задрали звонить всякие назойливые говноеды с преложениями инвестировать чего-нибудь куда-нибудь, вылечить спину за два посещения, пройти очищение от глистов, enlarge your penis и всё в этом духе, то, возможно, вы тоже захотите скрафтить для себя антиспам.

Немного матчасти. У оператора "Мегафон" есть возможность подключить бесплатную услугу "Мультифон-бизнес". Она хоть и называется "бизнес", реально доступна всем желающим. По сути это двухканальный SIP-аккаунт, привязанный к вашему мобильному номеру. Причём можно настроить различные режимы обработки входящих вызовов: только на мобильник, только на SIP или и туда, и туда одновременно (кто первый снимет трубку, тот и говорит).

Дальше следите за руками. В случае маршрутизации "сразу на всё" вызов в первую очередь приходит на SIP за счёт возникновения задержки из-за необходимости построения маршрута и установления канала до мобильного устройства, которые выполняются несколько секунд. За этот промежуток времени ваш подключенный к Мегафону Asterisk успеет сверить номер позвонившего вам абонента с заложенными в него чёрными и белыми списками. И соответствующим образом отреагировать.

Дальше логика работы Asterisk-а такова. Номер обнаружен в белом списке: ничего не предпринимать. Через секунду-другую вызов поступит вам на сотовый, вы ответите на него как обычно.

Номер обнаружен в черном списке: снять трубку и дальше либо ничего не делать, либо повесить трубку через пять-десять секунд, либо транслировать в канал связи какую-нибудь дичь с целью поглумиться. До вашего сотового вызов просто не дойдёт, вас никто не побеспокоит почём зря.

Номер не обнаружен ни в чёрном, ни в белом списке. Снять трубку, запустить IVR, проиграть приветствие типа "если вы человек, наберите 1234". Если с той стороны человек, то перезвонить на вашу же мобилку через второй SIP-канал. Технически вы увидите входящий вызов с вашего же собственного номера (я проверял, это работает). А дальше вы по результатам разговора заносите номер позвонившего либо в белый, либо в чёрный список.

Способы добавления в списки могут быть самым разнообразными. Например, Asterisk смотрит кто первым положил трубку. Если вы — в чёрный список, если они — в белый список. Другой вариант: по завершении беседы вы не кладёте трубку первым, Asterisk снова забирает на себя установленный канал связи и играет IVR уже для вас: нажмите "1" для занесения в белый список, "2" для занесения в черный список. Третий способ: по окончании разговора Asterisk шлёт вам в почту / телеграм / жаббер две ссылки: "тыц" чтобы в белый список и "тыц" чтобы в чёрный список. Может быть вы ещё что-нибудь придумаете. Полёт фантазии не ограничен.

В качестве побочного продукта можно организовать себе уведомления о пропущенных вызовах на электрическую почту, собственную халявную голосовую почту с отсылкой MP3-шки записи в почту / телеграм / жаббер, перенаправление вызова через VoIP на другую SIMку когда вы находитесь в международном роуминге и другие всякие полезные в хозяйстве прибамбасы.

С точки зрения железа, у меня Asterisk прекрасно себя чувствует на перешитом в OpenWRT MikroTik RB951G-2HnD. Для таких ерундовых задач его вычислительной мощности более чем достаточно. Если нет нормального ШПД-провайдера дома, можно арендовать самую дешевую VPS-ку и развернуть всё это добро там. Даже если это решение набекренится, ничего принципиально плохого не произойдёт: вы по-прежнему будете получать входящие звонки, только без антиспам-фильтра. Ничего важного не пропустите в любом случае.

Так что вот, господа технари. Примите к сведению. Когда мне надоест стебаться над этими холодными горе-продажниками, сам обязательно зафигачу себе такую штуку. Благо, для реализации не требуется ни каких-то существенных материальных вложений, ни даже особых навыков программирования. Только Asterisk, какой-нибудь [no]SQL и любой скриптовый язык на уровне "Hello, world".

Tags: asterisk, hints, it, телекомы, телефон, технологии
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 25 comments