Тестирование телефонов Digium с Asterisk и настройка Smart BLF

asterisk digium BLF

Alexcr

Ранее специалистами нашей компании было проведено тестирование телефонов Digium с системой унифицированных коммуникаций Switchvox и одним из самых распространенных бесплатных дистрибутивовAsteriskNow. И вот наконец-то мы добрались до “голого” Asterisk'a.

В данном обзоре мы рассмотрим конфигурирование аппарата с помощью модуля взаимодествия телефонов Digium с Asterisk – DPMA (Digium Phone Module for Asterisk), а также настройку Smart BLF.

Всех заинтересовавшихся прошу под кат.

Итак, начнем.

Прежде всего, нужно заказать лицензию DPMA на официальном сайте производителя:store.digium.com/productview.php?product_code=804-00032 
Лицензия бесплатная, но тем не менее продукт все равно требует регистрации. Буквально через несколько минут на почту приходит письмо от Digium с кодом активации. Естественно, чтобы получить лицензию нужно зарегистрироваться на сайте.

После получения лицензии необходимо скачать утилиту register:
 

wget http://downloads.digium.com/pub/register/x86-32/register


Далее меняем права доступа для утилиты register:
 
chmod 500 /root/register


И запускаем ее:
 
/root/register


Далее следуя подсказкам визарда выполняем все необходимые манипуляции:

Нажимаем 1, затем 11.

И, наконец, вводим ключик, присланный нам от Digium.

“Читаем” условия лицензионного соглашения, вводим необходимые данные для регистрации.

И видим в терминале надпись, что лицензия успешно записана.

Стоит отметить, что для того, чтобы лицензия успешно активировалась, сервер должен иметь выход в интернет, т.к. утилита лезет на сервера Digium для регистрации.

Переходим к следующему шагу: скачиваем модуль DPMA
 
# cd /root
# wget http://downloads.digium.com/pub/telephony/res_digium_phone/asterisk-11.0/x86-32/res_digium_phone-11.0_1.4.0.tar.gz


Разархивируем и копируем файл res_digium_phone.so в папку с модулями Asterisk (по умолчанию /usr/lib/asterisk/modules/):
 
tar xzvf res_digium_phone-11.0_1.4.0.tar.gz
# cp /root/res_digium_phone-11.0_1.4.0/res_digium_phone.so /usr/lib/asterisk/modules


Копируем файл конфигурации в папку конфигов asterisk (по умолчанию /etc/asterisk/):
 
cp /root/res_digium_phone-11.0_1.4.0/res_digium_phone.conf.sample /etc/asterisk/res_digium_phone.conf


Загружаем модуль:
 
asterisk -rx "module load res_digium_phone.so"


Подключаемся к Asterisk, проверяем валидность лицензии:
 
#asterisk -rvvv
*CLI> digium_phones license status
OK, Valid product license found


Лицензия DPMA привязывается к mac-адресу вашей сетевой карты, в случае ее замены, либо придется перерегистрировать модуль, либо подменять mac-адрес новой сетевой карты

Итак, переходим к настройке телефонов.
 
В sip.conf создаем юзеров:

Для удобства я назвал их номерами телефонов.
 
В extensions.conf создаем правила для этих абонентов:

Настраиваем почтовые ящики для наших абонентов в voicemail.conf:


Далее непосредственно переходим к файлу конфигурации res_digium_phone.conf.

Структура файла делится на несколько обязательных секций:
  • general
  • network
  • phone
  • line
  • external_line
  • application
  • ringtone
  • alert
  • firmware
  • translation


Остановимся поподробнее на каждой:
 
Секция General

Секция Network (секция не обязательна для DPMA версий 1.2 и ниже, в новых версиях обязательна)

Секция Phone

Секция Line

Секция External Line

Application – раздел конфигурирования приложений, содержит как стандартные приложения, так и дает возможность задать свое приложение

Секция Ringtone

Секция Alert

Секция Firmware

Секция Translation


Итак, мы разобрали все секции файла конфигурации res_digium_phone.conf
 
Ниже приведен листинг моего используемого конфига:


Теперь разберемся со структурой xml-файла с контактами:

Телефоны Digium оснащены приложение “Контакты” с встроенным быстрым набором, blf и статусом присутствия. Приложение “Контакты” связано с приложением “Статус”, так как оба эти приложения действуют на основании информации о присутствии пользователя. Приложение “Статус” опирается только на информацию о присутствии локального пользователя, в то время как приложение “Контакты” также смотрит на статусы других пользователей (информация о которых закреплена за кнопками быстрого набора). 

Контакты без статуса присутствия могут быть загружены локально в телефон владельцем этого телефонв, однако это не рекомендуется. Предпочтительно использовать сконфигурированный администратором xml-файл для унификации.

Начиная с версии DPMA 1.3 телефоны Digium поддерживают возможность переноса локально добавленных пользователем контактов на сервер Asterisk. Для активации данной возможности опция “editable” должна иметь значение 1 и контакт должен иметь уникальный идентификатор. 

Хотя и можно добавить контакты на сервер с телефона, контакты, сформированные на сервере, не редактируются с телефона и не удаляются из памяти телефона. Таким образом, Digium намекает, что лучше все-таки воздержатья от возможности добавления контактов с телефона во избежании потерь телефонной книги…
 
Загрузка контакт-листа

Файлы контактов, которые должен загрузить телефон, определяются в модуле DPMA или в основном XML-файле провиженинга телефона. 
 
Параметр contact

Как сказано выше, может быть задано несколько полей contact, которые являются подэлементами элемента
Параметр Rapid Dial Keys

BLF задается параметром blf_contact_group (обязательное поле, BLF-кнопкам будут присвоены значения в соответствии с порядком их объявления в XML-файле.)
 
Структура файла контактов

Ввиду того, что контакты и blf используют синтаксис XML, очень важно верно построить структуру контакт-листа, так как телефоны Digium не имеют встроенного валидатора XML и вы не увидите никакого сообщения об ошибке.

Базовая структура файла контактов выглядит следующим образом:
<phonebooks>
    <contacts>
        <contact>
            <emails>
                <email />
            </emails>
            <actions>
                <action>
                    <headers>
                        <header />
                    </headers>
                </action>
            </actions>
        </contact>
    </contacts>
</phonebooks>

Секция Contacts

Contact: дочерний элемент секции contacts


Не оставляйте параметры “first_name” и ”last_name” пустыми во избежание некорректного отображения контакт-листа
При использовании DPMA необходимо использовать параметр auto_hint для корректной blf-индикации в формате «auto_hint_,» например: subscribe_to=«auto_hint_1234»

В случае использования DPMA пропистывать хинты в диалплане не обязательно
Если не используется DPMA параметр subscribe_to выглядит следующим образом: subscribe_to=«sip:500@my.pbx.com»

Также необходимо прописать хинты в диалплане:
 
exten => 1234,hint,SIP/mypeer
exten => 1234,1,NoOp()
exten => 1234,n,Dial(SIP/mypeer,20)


В любом случае, используете вы DPMA или нет, параметр callcounter в sip.conf необходим
Секция Emails

Email: дочерний элемент emails

Секция Actions

Action: дочерний элемент actions

Headers: дочерний элемент actions
 
Header: дочерний элемент headers

Wildcard Variables (специальные символы)

%_ACCOUNT_USERNAME_% 
%_ACCOUNT_SERVER_% 
%_ACCOUNT_PORT_% 
 
Display Rules (правила отображения)


Начиная с версии ПО 1.4 приложение Контакты работает во взаимодействии с функцией BLF. Действия, определенные для контакта, по умолчанию, отображаются при просмотре информации о контакте.
 
Пример XML-файла Display Rules

Ниже приведен листинг моего файла контактов:

Структура файла smart blf

Smart BLF описывает поведение клавиш быстрого набора (начиная с версии прошивки 1.4). BLF определяет позицию кнопки быстрого набора, позволяет задавать фиксированное расположение на страницах (актуально для D70), поведение кнопки быстрого набора, действия при коротком и продолжительном нажатии, а также специальный рингтон контакта. Правила поведения кнопок быстрого набора конфигурируются в отдельном xml-файле, получаемом по http. 

Ввиду того, что контакты и blf используют синтаксис xml, очень важно верно построить структуру контакт-листа, так как телефоны Digium не имеют встроенного валидатора XML и вы не увидите никакого сообщения об ошибке.
 
Базовая структура файла blf выглядет следующим образом:

<smart_blf>
    <blf_items>
        <blf_item>
            <behaviors>
                <behavior />
            </behaviors>
            <indicators>
                <indicator />
            </indicators>
        </blf_item>
    </blf_items>
</smart_blf>

Более подробный пример конфига:
 
<smart_blf>
    <blf_items>
        <blf_item location="side" index="0" paging="1" contact_id="101">
            <behaviors>
                <behavior phone_state="idle" target_status="on_the_phone" press_action="call_vm" press_function="dial" />
                <behavior phone_state="idle" target_status="idle" press_action="regular_dial" press_function="dial" />
                <behavior phone_state="idle" target_status="idle" long_press_action="anintercom" long_press_function="dial" />
            </behaviors>
            <indicators>
                <indicator target_status="idle" ring="0" ringtone_id="Digium" led_color="green" led_state="on" />
                <indicator target_status="ringing" ring="1" ringtone_id="Techno" led_color="red" led_state="fast" />
            </indicators>
        </blf_item>
    </blf_items>
 </smart_blf>

Элемент BLF Item

Behaviors: дочерний элемент blf_item

Behavior: дочерний элемент behaviors

Phone States

Indicators: дочерний элемент blf_item

Indicator: дочерний элемент indicators

Ниже приведен листинг моего файла Smart BLF


Подробное описание всех опций и правила построения xml-файлов с контактами и smart blf можно найти на wiki asterisk.

Как было описано выше, файлы с поведением кнопок быстрого набора загружаются по http.

Я выбрал для этих целей apache2.

Тестирование проводилось на Centos 6.3. Пример установки:
 
yum install httpd


Заходим в файл конфигурации:
 
vim /etc/httpd/conf/httpd.conf


Ставим в параметре “ServerName” ip-адрес или доменное имя сервера, с которого телефон будет получать конфиги. В моем случае: ServerName 192.168.1.253
(не забываем снять коммент в начале строки).

Чтобы проверить, есть ли запросы от Digium-телефонов на получение Xml-файлов воспользуемся командой:
 
tail -f /var/log/httpd/*


Если телефон обращается за конфигом к apache, то в консоли мы увидим что-то типа:
 
192.168.1.143 - - [29/Jan/2014:18:39:15 +0400] "GET /blf_test.xml HTTP/1.1" 200 8564 "-" "Digium-D50/1_4_0_0_57389"
192.168.1.140 - - [29/Jan/2014:18:39:37 +0400] "GET /blf_test.xml HTTP/1.1" 200 8564 "-" "Digium-D70/1_4_0_0_57389"



Если все корректно настроено, то после перезагрузки ядра Asterisk ваш Digium-телефон приветливо заморгает зелеными и красными диодами:)









А ребята из Digium для того, чтобы разнообразить серые будни иногда делают такие вещи:)



Резюмируя все выше написанное, хотелось бы отметить, что первоначальная настройка может показаться довольно сложной, однако если у админа парк из 20 и более телефонов, то такой вариант провиженинга значительно облегчит работу по настройке телефонов. Богатый выбор опций, гибкая кастомизация, использование стандартных сервисов для автоматической настройки, плотная интеграция с asterisk и основанными на нем дистрибутивами делают телефоны Digium, на наш взгляд, лучшим решением на рынке IP-телефонии и унифицированных коммуникаций.