Автонастройка (auto provision) VoIP телефонов в Астериске


Т.к. потихоньку движется проект по мегапереходу на VoIP телефонию, начал разбираться с автонастройкой телефонов. Т.к. у меня планируются все телефоны Panasonic, соответственно, разбирался под них.

Астериск умеет сам генерировать файлы автоматической конфигурации клиентов. У него есть два модуля - http и phoneprov.

http - отвечает за то, чтобы asterisk мог работать web-сервером, а phoneprov - за автоматическое создание файлов конфигурации.

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

Для получения файлов автоконфигурации нам нужно включить оба модуля.

1. Включаем http, для этого в файле http.conf пишем:

[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088

2. Настраиваем автоматиское создание файлов конфигурации телефонов - phoneprov.conf.

Тут у меня вышли некоторые проблемы, т.к. во всех примерах шаблоны файлов конфигураций лежат по адресу /var/lib/asterisk/phoneprov, а у меня /usr/local/share/asterisk/phoneprov. Не знаю, это особенность конкретной установки или FreeBSD.

К сожалению, очень долго осознавал, что тут что-то не так - никаких ошибок от астериска получить не удалось. Даже после включения полного лога, информации там особо не появилось.

[general]
serveraddr=IP_YOU_SERVER
default_profile=provision_default ; Здесь пишем, какой использовать профиль по умолчанию, если он не прописан упользователя.

[panasonic-113]
mime_type => text/html
${TOUPPER(${MAC})}.cfg => panasonic-113-mac.cfg               ; Dynamically generated files.

[provision_default]
mime_type => text/html
${TOUPPER(${MAC})}.cfg => 000000000000.cfg

В оригинальном файле phoneprov.conf есть такая подсказка по доступным переменным:

; Built in variables and the options in users.conf that they come from
;   MAC (macaddress)
;   USERNAME (username)
;   DISPLAY_NAME (fullname)
;   SECRET (secret)
;   LABEL (label)
;   CALLERID (cid_number)
;   VOCIEMAIL_EXTEN (vmexten)
;   EXTENSION_LENGTH (localextenlength)
;   LINE
;   LINEKEYS
; Built-in variables and the options in phoneprov.conf that they come from
;   SERVER (server)
;   SERVER_PORT (serverport)

; Built-in variables for managing timezones and daylight savings time.
;   TZOFFSET
;   DST_ENABLE
;   DST_START_MONTH
;   DST_START_MDAY
;   DST_START_HOUR
;   DST_END_MONTH
;   DST_END_MDAY
;   DST_END_HOUR
;   TIMEZONE

Там, вообще, очень много всего, но я не со всем разбирался.

Подготавливаем файл users.conf:

[panasonic-113](!)
autoprov = yes ;
profile=panasonic-113

[100](panasonic-113)
fullname=Full Name User
secret=NJK7AzdASNmTgdkp
macaddress=111111111110;

Минимальный файл конфигурации (содрано с официального сайта Panasonic, обновлено тут) panasonic-113-mac.cfg у меня выглядит, примерно, так:

# PCC Standard Format File # DO NOT CHANGE THIS LINE!

## SIP Settings
SIP_AUTHID_1="${USERNAME}"
SIP_PASS_1="${SECRET}"
SIP_PRXY_ADDR_1="${SERVER}"
SIP_RGSTR_ADDR_1="${SERVER}"
PHONE_NUMBER_1="CALLERID"

## Provisioning Settings
CFG_STANDARD_FILE_PATH=""

Так же, можно взять файл со всеми параметрами.

Посмотреть состояние http сервера астериска можно по адресу - http://IP_YOU_SERVER:8088/httpstatus

Проверяем из браузера, что файл формируется и доступен - http://IP_YOU_SERVER:8088/phoneprov/111111111110.cfg

Еще полезные команды в консоли астериска:

http show status - показывает, как настроен и работает модуль http

asterisk*CLI> http show status
HTTP Server Status:
Prefix:
Server Enabled and Bound to 0.0.0.0:8088

Enabled URI's:
/httpstatus => Asterisk HTTP General Status
/phoneprov/... => Asterisk HTTP Phone Provisioning Tool
/static/... => Asterisk HTTP Static Delivery
/ws => Asterisk HTTP WebSocket

Enabled Redirects:
  None.

phoneprov show routes - показывает, как настроен, работает и какие файлы готов отдать модуль phoneprov.

asterisk*CLI> phoneprov show routes
Static routes

Relative URI                              Physical location

Dynamic routes

Relative URI                              Template
111111111120.cfg                          000000000000.cfg
111111111111.cfg                          panasonic-113-mac.cfg

Соответственно, телефонам нужно будет скормить адрес файла автонастройки - http://IP_YOU_SERVER:8088/phoneprov/{mac}.cfg

Управление SIP-телефонами из астериска.

Для того, чтобы заставить телефоны обновлять настройки по команде из астериска правим файлик sip_notify.conf:

[panas-check-cfg]
Event=>check-sync

После чего перегружаем астериск (без перезагрузки, похоже, он файл не перечитывает) и выполняем в астериске команду:

sip notify panas-check-cfg ХХХХ

XXXX - номер телефона который мы хотим заставить перечитать конфигурацию.

P.S. На все это подтолкнула статья - Автопровизия (Автонастройка) телефонов Polycom с помощью Asterisk.

Документация по телефонам Panasonic KX-UT1XX.
Разные материалы по SIP телефонам Panasonic.