ITСooky

IT-рецепты съедобные и не очень!

Боремся со спам звонками на городском телефоне с Asterisk, IVR, Grandstream ht813 на OrangePi PC Plus!

дата 08.12.2019

У вас же есть городской телефон, наверняка есть даже если не подключен и не используется за него все равно платите! У меня лично он больше двух дней не работает, какие-то начинающие музыканты звонят мне и ставят свою музыку, даже не представившись!


Идея такая городскую телефонную линию воткнуть в VOip Gateway FXS/FXO, пускать звонки на IVR на Asterisk и там простенькое меню «Если ты человек нажми 7» и дальше звонок идет на стационарный телефон!

Беру Orange Pi PC Plus, у меня DIY корпус с охлаждением, но подойдет и стоковый.

На нем стоит Debian Stretch with Armbian Linux 4.19.62-sunxi обновляю его и ставлю Астериск

apt-get upgrade
apt-get install asterisk

Запускаю и смотрю статус
systemctl start asterisk
systemctl status asterisk

И чтобы запускался на старте
systemctl enable asterisk

Да это все еще тот самый старый ламповый Asterisk
asterisk -rvvvvv

Asterisk 13.14.1~dfsg-2+deb9u4, Copyright (C) 1999 - 2014, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 13.14.1~dfsg-2+deb9u4 currently running on OrangeHomeServer (pid = 6142)
OrangeHomeServer*CLI>

Вспоминаю что надо делать вот по этой инструкции mike42.me/blog/2015-01-02-how-to-set-up-asterisk-in-10-minutes как обычно много нужного тут не сказано, но отталкиваются от сюда!

Специально не ставлю на Asterisk вебморду, с ней конечно удобно, но всё-всё она сама не делает, так что буду мучатсяь с файлами настроек напрямую!

Добавляю в конце файла
vi /etc/asterisk/users.conf
вот это

[6001]
fullname = First    
secret = 1234
hassip = yes
context = users
host = dynamic

[6002]
fullname = Second
secret = 1234
hassip = yes
context = users
host = dynamic

И в файл добавляем
vi /etc/asterisk/extensions.conf
в конце текст

[users]
exten => 6001,1,Dial(SIP/6001)
exten => 6002,1,Dial(SIP/6002)

Захожу в консоль asteriska
asterisk -rvvvvv
и делаю
reload

Для проверки ставлю на Android телефон Linphone ужасно глючная прога, заработало когда повторно создал профиль для SIP. Настройки такие, IP моей опельсинки с Asterisk, по умочанию надо оставить UDP способ передачи!

И еще были проблемы с правами доступа, если запрашивает права записывать разговоры это на самом деле право просто использовать микрофон… или нет… но после этого работает!!! На телефонах номера 6001 и 6002, звонил с одного на другой — работает!

Теперь делаю IVR. Для начала нужен аудио файл, для этого нужны две проги!
apt-get install espeak
apt-get install sox

Важно перейти в нужную папку и там делать файлы
cd /var/lib/asterisk/sounds/custom/
Хорошая прога, звук настоящего робота. Русского нет, но подошел сербский, кроме цифр!
espeak -s 1 -v sr "[[_::_::_::]]Zdrastvuite[[_::_::_::]]Esli vi reklamniy robot nazhmite piyat[[_::_::_::_::]]Esli vi chelovek [[_::_::_::]]nazhmite sem[[_::_::_::_::_::_::_::_::_::_::_::_::_::_::_::_::_::_::]]ot klu chaius[[_::_::_::]] dosvidania" -w ivr.wav
Asterisk’у нужен файл ulaw делаем его
sox ivr.wav --rate 8000 --channels 1 --type ul ivr.ulaw lowpass 3400 highpass 300

Вот такой звучок получается:

И в файл меняем
vi /etc/asterisk/extensions.conf
контекст users и добавляем новый spam_ivr

[users]
exten => 6666,1,Goto(spam_ivr,s,1)
exten => 6001,1,Dial(SIP/6001)
exten => 6002,1,Dial(SIP/6002)

[spam_ivr]
exten => s,1,Answer(500)
same => n(loop),Background(/var/lib/asterisk/sounds/custom/ivr)
exten => 5,1,Dial(SIP/6001)
exten => 7,1,Dial(SIP/6002)

Захожу в консоль asteriska
asterisk -rvvvvv
и делаю
reload

Тут немного не так как хотелось бы. IVR вешает трубку когда кончается запись, по умному задать тайм аут не получилось. Поэтому запись удлиненна неестественным образом!

Опять названиваю на 6666 и работает!!!

Выбор VoIP маршрутизатора
Что-то сейчас плоховато с выбором. Половина народа видимо не дождались стационарного телефона в квартиру и плюнула на него, другая из-за спама тоже плюнула и вырубила как я…

Сейчас (осень 2019) можно купить две брендовые модели.

Первая DVG-7111S B1 это старый DVG-7111S A1 в новом модном квадратном корпусе модель была популярна в 2012 судя по вопросам на форумах как её заставить работать, и дальше она не развивалась, последняя прошивка от 2016 года!

И Grandstream ht813, сразу скажу что купил его!!! На устройстве оказалась прошивка 18-го года, а вообще есть еще 2019-го — значит свежий VoIP! Grandstream знаю давно, лет 15 назад настраивал их телефоны и удивлялся, что в них веб меню из 80-х и ничего не изменилось, такое же меню такой же цвет и шрифт!

Удивило, что цена немаленькая 5500RUR, а шлюз поставляется в белой коробке без красивой картинки, которая никак не заклеена, и внутри есть только шлюз, блок питания, патч корд, и бумажка на раз сходить в туалет — стартового мануала, ничего нет!!!

Еще есть совершенно потрясающий косплей от китайцев. Во всех мельчайших подробностях они штампуют модели SPA3000 и SPA3102, со всеми наклейками, мануалами под брендом компании которой уже нет 6 лет — Linksys by Cisco! Уверен что прошивка в них настоящая десяти летней давности cisco’вская(как и в свичах хуавей :))), но вот железки конечно уже свои! В свое время я верил что Lynksis это Сisco даже уважал, но сейчас почитал вики и там совсем ничего общего — Cisco купил Sipura и Lynksis и решил что под брендом Lynksis будет выпускать VoIPы Sipur’ы…. Есть у меня SPA3000 (вот этот) еще подает признаки жизни, но так сильно в трубке что-то квакает, что такой же новый не решился купить!

Подключаем VoIP маршрутизатор Grandstream ht813 к Asterisk

Для начала нужно чтобы звонки с городской телефонной линии звонились в астериск!

Тут без подсказки ну никак, беру trustore.ru/article/asterisk/nastrojka-grandstream-ht503-dlya-freepbx-asterisk-trixbox-elastix.html не важно что много лет прошло и модель другая — в меню Grandstrem ничего не меняется десятилетиями, даже на разных моделях! Но тут правда вебморда у меня то её нет…

Заходим на Grandstream ht813 во вкладке BASIC SETTINGS внизу пишем в Unconditional Call Forward to VOIP:

Это настройка делает — все звонки что приходят на порт FXO кидать на номер 6666 на ip моего asterisk по порту!
Чтобы применить изменения нажимает Apply

Далее идем в FXO PORT и делаем

Тут ставим свои значения в Primary SIP Server и SIP User ID и Authenticate Password астериск просто так не примет звонок нужна учетка!
Чтобы применить изменения нажимает Apply

Тут же внутри настраиваем, забавная штука!!! VoIP шлюз не может повесить сам трубку просто не понимает, что на другом конце её повесили. Для этого надо ему сказать какие прерывистые гудки слушать — вот для Абонентский терминал GPON RV6699 они такие как у меня

Тут поменяно Enable Current Disconnect и Enable PSTN Disconnect Tone Detection и STN Disconnect Tone и AC Termination Model и PSTN Ring Thru FXS
Чтобы применить изменения нажимает Apply
Как выискивать параметры для вашей линии расскажу ниже

И порт fsx будет обычным телефоном с номером 6002 захожу в FXS PORT

Здесь меняю Primary SIP Server и IP User ID и Authenticate Password
Чтобы применить изменения нажимает Apply

Теперь редактирую файлы астериска
vi /etc/asterisk/extensions.conf
довожу до вида экстеншены

[users]
exten => 6666,1,Goto(spam_ivr,s,1)
exten => 6001,1,Dial(SIP/6001)
exten => 6002,1,Dial(SIP/6002)

[spam_ivr]
exten => s,1,Answer(500)
exten => s,2,Monitor(wav,,m)
same => n(loop),Background(/var/lib/asterisk/sounds/custom/ivr)
exten => 5,1,Dial(SIP/6001)
exten => 7,1,Dial(SIP/6002)

Тут добавлена запись звонков строкой

exten => s,2,Monitor(wav,,m)

появляется записи звонков будут в /var/spool/asterisk/monitor

И в файле users.conf
vi /etc/asterisk/sip.conf
Добавляю учетку для шлюза для pstn линии fso итого получается

[6789]
fullname = MGTS PSTN
secret = 1234
hassip = yes
context = users
host = dynamic

[6001]
fullname = Test Android
secret = 1234
hassip = yes
context = users
host = dynamic

[6002]
fullname = Home phone
secret = 1234
hassip = yes
context = users
host = dynamic

Захожу в консоль asteriska
asterisk -rvvvvv
и делаю
reload

И работает, у вас сразу, а я это уже второй день пишу уф!

Как подобрать PSTN Disconnect Tone для вашей телефонной линии?
Позвонил себе с мобильного на домашний, дождался IVR нажал нужную цифру пошел звонок — бросил звонок пошли гудки, но Grandstream продолжает названивать хотя звонок прекрашен — все это пишет asterisk — все звуки!

Забираю аудио файл и открываю его в программе Free, open source, cross-platform audio software Audacity. Выделяю кусок гудка из серии финальных гудков и смотрю его спектограмму Analyze > Plot Spectrum…

Подвожу крусор к пику, и он сразу прыгает на пик, внизу смотрю Peak 425Hz 20.1Db

Меряю длинну гудка и тишину между ними

Внизу видна длинна, только надо выбрать Length and End of Selection у меня 359 милисекунд округляю до 350

И всё, дальше просто подставляем в формулу

Syntax: f1=freq@vol, f2=freq@vol, c=on1/off1-on2/off2-on3/off3;
Allowed Range: freq = 0 to 4000Hz; vol = -40 to -24dBm
Default: Busy Tone: f1=480@-32,f2=620@-32,c=500/500;

У меня для телефонной городской линии МГТС через Абонентский терминал GPON RV6699 надо вставить

f1=425@-21,f2=425@-21,c=350/350;

Пик один, но может быть больше поэтому f1 и f2, для одного пика все описывают его два раза, дальше c это гудок и тишина!

Теперь звоним со стационарного телефона через Grandstream ht813 по городской линии!
А все просто, (была такая же настройка на поддельном SPA3000, но другими буквами) просто в Dial Plan в настройках FXS PORT пишим

{ L:x+ }

Все что набирается на стационарном телефоне валится в телефонную линию. Гудков нет, сразу голос если отвечают, так что надо ждать!

Здесь появятся спам звоноки, как выловлю!
Чистый робот — не прошел!


Человеко-роботы из колцентров звонят по выходным (сволочи) тоже не проходят — эх видеть бы их лица при этом :)))


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *