Денис Здесенко
23.04.2020
11885

Разделение пользователей на контексты. Как и зачем это нужно?

При первичной настройке АТС на базе Asterisk VoIP-инженер рано или поздно сталкивается с задачей разграничения пользователей данной АТС на различные контексты. Подобные задачи являются по сути своей одними из наиболее распространенных и рутинных в работе. В данной статье мы рассмотрим: как это делать на станциях с веб-интерфейсом FreePBX, на «голом» Астериске, ну и сами причины […]

При первичной настройке АТС на базе Asterisk VoIP-инженер рано или поздно сталкивается с задачей разграничения пользователей данной АТС на различные контексты. Подобные задачи являются по сути своей одними из наиболее распространенных и рутинных в работе. В данной статье мы рассмотрим: как это делать на станциях с веб-интерфейсом FreePBX, на «голом» Астериске, ну и сами причины для чего это вообще требуется. Думаю, что подобная статья будет полезна молодым инженерам, только начавшим свой путь на поприще ip-телефонии.

 Немного теории

В первую очередь, прежде чем перейти непосредственно к настройке стоит разобрать что такое вообще контексты.

Конфигурационный текстовый файл /etc/asterisk/extensions.conf содержит в себе логику звонков на нашей станции — диалплан, состоящий из области с описанием глобальных переменных и непосредственно контекстов. Контексты – это изолированные области диалплана в которых описывается поведение экстеншенов.

Не стоит забывать, что экстешнены диалплана и SIP-экстеншены – это две разные сущности. Они могут пересекаться, а могут и не пересекаться.

То есть, можно сказать, что контекст состоит из экстеншенов, а те в свою очередь состоят из последовательности команд. Выглядит это для АТС без веб-интерфейса примерно таким образом:

/etc/asterisk/extensions.conf на АТС без веб-интерфейса
/etc/asterisk/extensions.conf на АТС без веб-интерфейса

Как видно из скриншота, в файле прописан только один контекст from-internal с описанием логики внутренней связи для сотрудников с номерами от 100 до 999 (согласно шаблону) и отдельно для экстеншенов 101 и 102, а также 777 для эхотеста. Название контекста должно быть заключено в квадратные скобки. Стоит отметить, что контекст закончится ровно в том месте, где начнется другой контекст, т.е. новое название в квадратных скобках. Секции [general] и [global] НЕ являются контекстами! В них описываются глобальные переменные.

Информер: Астреиск определяет контекст для обработки по принципу откуда пришел вызов, а не куда.

Рассмотрим, для чего контексты вообще предназначены:

  • Разделение абонентов по привилегиям
  • Для маршрутизации вызовов
  • Виртуализация АТС на уровне диалплана (для работы одной станции с несколькими компаниями, использующими одинаковые экстеншены)
  • Построение различных технических решений (например, IVR, авторизация, обратный вызов и прочее)
  • Использование системных команд сервера (на основе, например, linux)
  • Безопасность и защита АТС от внешнего негативного воздействия (в простонародии — взлома)

В рамках нашей статьи нас заинтересуют пункты 1, 2 и 5. Обсудим их поподробнее.

Разделение по привилегиям. Предположим, у нас есть группа абонентов, которым необходимо совершать звонки по всем направлениям, но есть и вторая группа, которым мы хотим запретить звонки на мобильные номера или на международное направление. Просто распишем их логику в разных контекстах и присвоим эти контексты их номерам в файле /etc/asterisk/sip.conf.

Пример для разделения по привилегиям
Пример для разделения по привилегиям

Далее пара слов о маршрутизации вызовов. В принципе очень похоже на пункт 1, но со своими нюансами. Например, есть несколько групп абонентов и нам необходимо различное поведение при звонках на мобильные номера (для группы 1 — запрет, для группы 2 – свободно, а для группы 3 – запрос пин-кода на направление). Расписываем поведение для каждой группы в своем контексте. Стоит отметить, что с помощью контекстов реализовывать маршрутизацию можно огромным количеством способов, подбирая наиболее оптимальный для нас.

Пример для маршрутизации вызовов
Пример для маршрутизации вызовов

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

Custom Contexts

Custom Contexts – это бесплатный модуль для веб-интерфейса FreePBX предназначенный для работы с пользовательскими контекстами. Этот модуль идеально подходит для решения рутинных задач по разграничению прав доступа пользователей к разным направлениям вызовов. На самом деле задач, решаемых с помощью этого модуля, огромное количество, все зависит лишь от фантазии и потребностей. По умолчанию этого модуля во FreePBX нет, его необходимо доустановить в разделе Module Admin. Как это делается рассматривать мы не будем, так как статья не об этом. После установки найти его можно в разделе Connectivity.

Рассматривать работу модуля будем на примере внутреннего номера 101, которому будем запрещать звонки по разным направлениям, а также для номера 102, исходящие с которого должны уходить с отличного внешнего номера нежели у 101.

Итак приступим. В первую очередь необходимо создать исходящие направления для этих номеров. Сделаем это мы в разделе Outbound Routes во вкладке Connectivity. Сначала создадим исходящий маршрут для номера 101, который сможет звонить только на мобильные номера и на номера города Москва. Зададим соответствующие шаблоны:

Шаблоны исходящей маршрутизации для 101
Шаблоны исходящей маршрутизации для 101

Далее создаем второй исходящий маршрут для номера 102 (направления не ограничены) и выставляем для него другой CID и выбираем другой транк для звонка. Должно получиться примерно так:

Исходящие маршруты для номеров 101 и 102
Исходящие маршруты для номеров 101 и 102

Следующим шагом необходимо создать 2 кастомных контекста во вкладке Custom Contexts в которых разрешим для 101 исходящее направление out-for-101. Выглядит это таким образом:

Разрешаем исходящий маршрут out-for-101
Разрешаем исходящий маршрут out-for-101

Делаем по аналогии и для 102 — out-for-102 соответственно:

 Разрешаем исходящий маршрут out-for-102
Разрешаем исходящий маршрут out-for-102

После проделанных манипуляций внутренние номера, использующие эти кастомные шаблоны, будут звонить по назначенным маршрутам. Поэтому нам необходимо в настройках наших экстеншенов 101 и 102 выставить соответственные контексты (делается это в Applications->Extensions->Other) и на этом можно задачу считать выполненой.

Контекст для экстеншена 101
Контекст для экстеншена 101
Контекст для экстеншена 102
Контекст для экстеншена 102
Книга 101 функция Asterisk
Познакомьтесь с возможностями Asterisk. Найдите инструменты, которые помогут вашей компании развиваться.
Скачать книгу
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.