Познакомьте начальника с Asterisk. Возможности IP-телефонии для мобильных пользователей::Журнал СА 11.2012
www.samag.ru
Льготная подписка для студентов      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

Jobsora

ЭКСПЕРТНАЯ СЕССИЯ 2019


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 1894
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 1936
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 1497
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 1098
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1667
Комментарии: 1
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

Электронка - 2020!

 Познакомьте начальника с Asterisk. Возможности IP-телефонии для мобильных пользователей

Архив номеров / 2012 / Выпуск №11 (120) / Познакомьте начальника с Asterisk. Возможности IP-телефонии для мобильных пользователей

Рубрика: IP-телефония /  Мобильные решения

Вячеслав Лохтуров ВЯЧЕСЛАВ ЛОХТУРОВ, ведущий преподаватель Центра компьютерного обучения «Специалист», главный системный администратор МГТУ им. Н. Э. Баумана

Познакомьте начальника с Asterisk
Возможности IP-телефонии для мобильных пользователей

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

Постановка задачи

Представим офис, подключенный к городской телефонной сети через традиционную ATC (PBX). У каждого сотрудника телефон с внутренним номером 101, 102 и т.д. Чтобы понять, что нас в этом не устраивает, представим, что клиент звонит сотруднику, которого нет на месте, и ответим на вопросы:

  • Можно ли перенаправить этот звонок сотруднику на мобильный телефон?
  • Можно ли оставить сообщение для сотрудника?

Если ответы отрицательные, знакомим руководство с IP-телефонией!

Шаг 1. Знакомство с Asterisk

Как вы догадались, статья посвящена системе IP PBX Asterisk. Многие проекты предлагают готовые решения Asterisk, включающие графический интерфейс для настройки и управления (http://www.freepbx.org, http://www.elastix.org). Однако для лучшего понимания и обучения рекомендую начать знакомство с Asterisk непосредственно из командной строки и файлов конфигурации.

Для развертывания Asterisk нам понадобится *NIX-сервер. Для первых опытов сгодится виртуальная система, работающая под управлением, например, VirtualBox (https://www.virtualbox.org). Учтите, что в этом случае при создании системы в настройках сети надо указать тип подключения «Сетевой мост». В этой статье будет использоваться система Linux Ubuntu 12.04 LTS (http://help.ubuntu.ru/wiki/руководство_по_ubuntu_server/установка). Представим, что у вас эта система установлена и имеет следующие параметры:

  • Имя системы: asterisk.
  • IP-адрес системы (статический): 192.168.1.10.
  • Учетная запись администратора системы: admin.

Устанавливаем asterisk:

$ sudo apt-get install asterisk

В ходе установки будет предложено указать параметр конфигурации ITU-T telephone code. Для наших задач этот параметр не имеет значения, и его можно не менять. Согласно парадигме управления ПО в Debian (а Ubuntu – родственник этого дистрибутива) только что установленный Asterisk уже имеет конфигурацию «по умолчанию» и даже запущен.

Для первых экспериментов с IP-АТС используем программные телефоны. В IP-телефонии есть несколько протоколов подключения (правильно сказать сигнализации), наиболее популярным из них является SIP (http://ru.wikipedia.org/wiki/SIP). Для подключения телефонов к Asterisk по протоколу SIP настроим каналы подключения. Выглядит это так:

$ sudo echo > /etc/asterisk/sip.conf
$ sudo nano /etc/asterisk/sip.conf

[general]
transport=udp
disallow=all
allow=alaw

[101]
type=friend
secret=tpassword1
host=dynamic

[102]
type=friend
secret=tpassword2
host=dynamic

В общей (general) секции конфигурации мы видим директивы, определяющие транспортный протокол и разрешенный кодек для SIP-клиентов. Далее идет описание двух каналов с именами 101 и 102. Подключаться к ним можно, зная пароль (secret), с любого IP-адреса. Тип канала (type) определяет направление звонков в отношении подключенного к нему устройства. Поскольку к этим каналам будут подключаться телефоны, которые могут и принимать, и совершать звонки, указываем тип канала friend.

Имена каналов напоминают номера телефонов, но ими НЕ ЯВЛЯЮТСЯ. Чтобы подключенный SIP-телефон мог куда-то позвонить, настроим план звонков (dialplan).

$ sudo echo > /etc/asterisk/extensions.conf
$ nano /etc/asterisk/extensions.conf

[default]
exten => 199,1,Answer()
same => n,Playback(hello-world)
same => n,Hangup()
exten => _1XX,1,Dial(SIP/${EXTEN},10)

Одним из механизмов обеспечения безопасности в Asterisk являются контексты. Все номера, которые может набирать клиент SIP-телефона, находятся в определенном контексте. Поскольку внешний доступ к телефонному серверу пока не планируется, при описании каналов мы не указывали контексты, и наши каналы попали в контекст default.

Первый элемент номерного плана позволяет набрать номер 199 и услышать приветствие. Answer, Playback и Hangup – приложения, заставляющие Asterisk снять трубку, воспроизвести звуковой файл и повесить трубку.

Шаблон описания следующего номера определяет, что  если пользователь наберет номер, начинающийся (символ «_») с цифры 1 и заканчивающийся двумя любыми цифрами от 0 до 9 (символы «X»), то будет произведен вызов (приложение Dial) другого SIP-телефона, подключенного к каналу ${EXTEN}. Те, кто имел дело с программированием на bash, догадаются, что EXTEN – это имя переменной, а попадает в нее значение, набранное на клавиатуре. Теперь понятно, почему удобно, когда имена каналов совпадают с номерами их вызова. Значение «10» среди параметров приложения Dial определяет время ожидания снятия трубки на телефоне, подключенном к вызываемому каналу, иначе приложение заканчивает работу. Для вступления изменения конфигурации в силу перезагрузим соответствующие подсистемы:

$ sudo asterisk -x 'sip reload'
$ sudo asterisk -x 'dialplan reload'

Установим на свободную рабочую станцию программный телефон, например, ZoIPer (http://www.zoiper.com), и настроим на подключение к SIP-каналу 101 Asterisk (см. рис. 1 и 2). Наберите номер 199. Если вы услышите приветствие – вы на верном пути! Аналогично настройте на другой рабочей станции программный телефон на подключение к SIP-каналу 102 и позвоните с телефона на телефон.

Рисунок 1. Установка и настройка программного телефона. Шаг 1

Рисунок 1. Установка и настройка программного телефона. Шаг 1

Рисунок 2. Установка и настройка программного телефона. Шаг 2

Рисунок 2. Установка и настройка программного телефона. Шаг 2

Шаг 2. Звонки во внешний мир

Настроить звонки во внешний мир проще через VoIP-провайдера. Выбор VoIP-провайдера – большая тема, однако с точки зрения настроек все будет аналогично, и мы остановимся на SipNet (http://www.sipnet.ru). После регистрации на сайте вам будут присвоены SIP ID и пароль. Проверить возможность использования VoIP-провайдера из вашей локальной сети можно с помощью того же ZoIPer, указав в поле Domain значение spinet.ru, в поле Username – присвоенный вам SIP ID и пароль – в поле Password. После подключения ZoIPer к SipNet позвоните себе на мобильный или городской телефон, указав 8 перед кодом города. Проверьте качество прохождения голоса. Для подключения Asterisk к SipNet добавим описание канала в конец файла sip.conf:

$ sudo nano /etc/asterisk/sip.conf

;...

[sipnet]
type=peer
host=sipnet.ru
defaultuser=0012345678
fromuser=0012345678
fromdomain=sipnet.ru
secret=sipnetpassword
canreinvite=no

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

Для входящих звонков потребуется арендовать у VoIP-провайдера прямой телефонный номер. Можно принимать входящие звонки от провайдера без аренды номера, но это требует донабора номера SID ID после дозвона в spinet, что не понравится вашим клиентам.

Поля defaultuser, fromuser, fromdomain и secret используются для авторизации звонков через spinet. Параметр canreinvite запрещает SIP-клиентам установить соединение между собой напрямую, голосовой трафик будет идти через Asterisk. Это повышает нагрузку на сервер, но упрощает настройку сервисов NAT и FIREWALL на интернет-шлюзе.

Чтобы пользователи Asterisk смогли звонить на внешние номера через канал VoIP-провайдера, добавим соответствующий вызов в конец файла, описывающего номерной план:

$ nano /etc/asterisk/extensions.conf

;...

exten => _8XXXXXXXXXX,1,Dial(SIP/sipnet/${EXTEN})

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

Для вступления изменения конфигурации в силу необходимо дать команду перезагрузить конфигурацию Asterisk:

$ sudo asterisk -x 'reload'

Подключите программный телефон к Asterisk и позвоните на номер 199 и на номер своего мобильного телефона. Если все работает, можно приступать к следующему шагу.

Шаг 3. Перенаправление звонков

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

$ sudo echo > /etc/asterisk/followme.conf
$ sudo nano /etc/asterisk/followme.conf

[101]
number=>89161234567,30
number=>891687654321,30
context=>default

[102]
number=>89162323232,30
number=>89163434345,30
context=>default

В квадратных скобках – имя пользователя, совпадающее с номером телефона. Это упрощает описание плана звонков. Далее – номера телефонов, на которые будут перенаправлены вызовы, и время ожидания ответа (секунды).

Параметр context определяет секцию в файле плана звонков, обрабатывающую вызов указанного номера. Добавим вызов приложения FollowMe в конец обработки вызова трехзначных номеров в файле, описывающем план звонков:

$ nano /etc/asterisk/extensions.conf

;...

exten => _1XX,1,Dial(SIP/${EXTEN},10)
same => n,FollowMe(${EXTEN})

;...

Приложению FollowMe в качестве аргумента передается имя пользователя, описанного в файле followme.conf, в нашем случае имя совпадает с номером, набранным вызывающим абонентом.Для вступления изменения конфигурации в силу дадим команду перезагрузить конфигурацию Asterisk:

$ sudo asterisk -x 'reload'

Позвоните с одного из программных телефонов на трехзначный номер соседнего телефона. Если тот в течение 10 секунд не снимет рубку, вызов уйдет через VoIP-провайдера на внешний номер. Вам будет сообщено о перенаправлении вызова. Как только пользователь внешнего номера снимет трубку, ему будет сообщено о поступлении перенаправленного звонка и предложено с помощью тонального набора принять его (нажав «1») или отклонить («2»). Эти сообщения Asterisk «произносит» на английском.

Шаг 4. Русификация Asterisk

«Речь» Asterisk, записана в звуковых файлах в каталоге /usr/share/asterisk/sounds/. Для каждого языка создается подкаталог с соответствующим именем en, fr, ru. Каталог ru и его файлы загрузим с сайта разработчиков Asterisk. Какой каталог использовать, определяет директива language в описании канала или в общей (general) секции конфигурации (например, language=ru). Кроме имени каталога, директива language заставляет Asterisk учитывать грамматические категории языка (например, один номер – одно сообщение). Почему-то в штатных архивах русских сообщений нет нескольких файлов, необходимых для воспроизведения грамматических вариаций произношения. Выход – «обман» Asterisk. Он будет «думать», что говорит на английском, а файлы будут содержать русские фразы. Для русификации Asterisk выполняем:

$ cd /usr/share/asterisk/sounds/en
$ wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-ru-alaw-current.tar.gz
$ tar -xvf asterisk-core-sounds-ru-alaw-current.tar.gz

Позвоните с одного из программных телефонов на номер 199. Если приветствие на русском, все в порядке.

***

За рамками статьи остались настройка голосовой почты, интеграция Asterisk в офисную телефонию, подключение к Asterisk аналоговых телефонных аппаратов и подключение Asterisk к офисной АТС. И это – первая демонстрация возможностей Asterisk, которых у системы гораздо больше.

Узнать их вы сможете на курсах в Центре компьютерного обучения «Специалист» при МГТУ им. Н.Э. Баумана!


Комментарии отсутствуют

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

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru