Разграничения вызовов на мобильные телефоны по регионам
В этой статье мы рассмотрим способ разрешить или запретить вызовы на мобильные номера в каких-либо регионах. Для примера разрешим звонки только на мобильные номера в Москве и Московской области. Установка зависимостей Для начала нам потребуется: python3 (я использую версию 3.6) библиотека asterisk и pyst2 Для проверки какой версии python у вас стоит, введите: Для установка […]

В этой статье мы рассмотрим способ разрешить или запретить вызовы на мобильные номера в каких-либо регионах.
Для примера разрешим звонки только на мобильные номера в Москве и Московской области.
- Установка зависимостей
Для начала нам потребуется:
- python3 (я использую версию 3.6)
- библиотека asterisk и pyst2
Для проверки какой версии python у вас стоит, введите:
python3 -V

Для установка библиотек Asterisk и pyst2 выполните следующую команду:
pip3 install asterisk pyst2

(у меня они уже установлены)
Что бы проверить что эти библиотеки поставились можно ввести команду:
pip3 list

- Написание кода и dialplan
создаем файл notaccept.sh в папке /var/lib/asterisk/agi-bin/
touch /var/lib/asterisk/agi-bin/notaccept.sh
после чего открываем файл и пишим туда следующее
nvim /var/lib/asterisk/agi-bin/notaccept.sh
#! /usr/bin/env python3.6 # -*- coding: utf-8 -*- import requests from asterisk.agi import * agi = AGI() num = str(agi.env["agi_callerid"]) phone_number = str(agi.env["agi_extension"]) citys = ['г. Москва и Московская область', 'г. Москва', 'Московская область'] url = "http://num.voxlink.ru/get/" querystring = {"num":phone_number, "field": "region"} payload = "" city = requests.request("GET", url, data=payload, params=querystring) if city.text in citys: agi.set_variable('num', "yes") else: agi.set_variable('num', "no")

Что мы тут написали:
Мы получаем переменную agi_extension которую записываем в переменную phone_number, в ней содержится номер, который набрал пользователь. Далее мы создаем массив citys, в котором содержатся города и регионы, в которые разрешено звонить. После чего мы делаем запрос к api num.voxlink.ru передавая в качестве параметров номер телефона и слово region, для того чтобы нам вернулся только регион. После чего полученный регион мы проверяем есть ли он в нашем массиве, если есть мы просто в астериск возвращаем переменную “num” со значением “yes”, а иначе мы вернём переменную “num” со значением “no”.
Далее переходим к dialplan:
открываем файл /etc/asterisk/extensions.conf, либо если у вас freepbx то /etc/asterisk/extensions_custom.conf
[not-accept] exten => _X.,1,AGI(notaccept.sh) same => n,GotoIf("${num}" = "yes"?yes:no) same => n(yes),Goto(from-internal,${EXTEN},1) same => n(no),Hangup()

Что мы сделали:
Мы создали новый контекст, при звонке в котором будет вызываться наш скрипт и возвращать переменную num. Далее мы проверяем равна ли это переменная слова “yes” и если равно переводим звонок в нормальный режим, а если нет то просто сбрасываем вызов.
- Создание контекста и выдача его пользователю
Все что осталось сделать это создать кастомный контекст в админки freepbx и выдать его номеру.
Переходим во вкладку connectivity -> custom contexts и создаем новый контекст точно с таким же названием как писали в dialplan

Ставим ALL OUTBOUND ROUTES в состояние Allow и сохраняем.

После этого переходим во вкладку Applications -> Extensions выбираем номер, которому хотим поставить ограничения.

Переходим в вкладку Advanced

Тут ищем custom context и ставим тот что мы только что создали

Сохраняем все это, и все. Теперь данный номер может звонить только на номера чьи области вы добавите в список разрешенных.

Остались вопросы?
Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.