Разделение пользователей на контексты. Как и зачем это нужно?
При первичной настройке АТС на базе Asterisk VoIP-инженер рано или поздно сталкивается с задачей разграничения пользователей данной АТС на различные контексты. Подобные задачи являются по сути своей одними из наиболее распространенных и рутинных в работе. В данной статье мы рассмотрим: как это делать на станциях с веб-интерфейсом FreePBX, на «голом» Астериске, ну и сами причины […]
При первичной настройке АТС на базе Asterisk VoIP-инженер рано или поздно сталкивается с задачей разграничения пользователей данной АТС на различные контексты. Подобные задачи являются по сути своей одними из наиболее распространенных и рутинных в работе. В данной статье мы рассмотрим: как это делать на станциях с веб-интерфейсом FreePBX, на «голом» Астериске, ну и сами причины для чего это вообще требуется. Думаю, что подобная статья будет полезна молодым инженерам, только начавшим свой путь на поприще ip-телефонии.
Немного теории
В первую очередь, прежде чем перейти непосредственно к настройке стоит разобрать что такое вообще контексты.
Конфигурационный текстовый файл /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, который сможет звонить только на мобильные номера и на номера города Москва. Зададим соответствующие шаблоны:
Далее создаем второй исходящий маршрут для номера 102 (направления не ограничены) и выставляем для него другой CID и выбираем другой транк для звонка. Должно получиться примерно так:
Следующим шагом необходимо создать 2 кастомных контекста во вкладке Custom Contexts в которых разрешим для 101 исходящее направление out-for-101. Выглядит это таким образом:
Делаем по аналогии и для 102 — out-for-102 соответственно:
После проделанных манипуляций внутренние номера, использующие эти кастомные шаблоны, будут звонить по назначенным маршрутам. Поэтому нам необходимо в настройках наших экстеншенов 101 и 102 выставить соответственные контексты (делается это в Applications->Extensions->Other) и на этом можно задачу считать выполненой.
Остались вопросы?
Я - Першин Артём, менеджер компании 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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.