Данный сервис позволяет поддерживать удаленную книгу Yealink, GrandStream, которую возможно получать либо из базы абонентов SSW (по http), либо по протоколу ldap, либо с адресной книги ECSS-10 (используя mysql).
На текущий момент:
Заранее нужно определиться из какого источника будет осуществляться получение данных абонентов.
При установке пакета ecss-restfs необходимо указать следующие ответы:
Если на момент настройки сервиса пакет ecss-restfs уже был установлен, используйте команду переконфигурирования сервиса:
|
Для проверки работоспособности сервиса необходимо обратиться к его api:
$ curl 'http://<IP>:9990/<service>?host=book&domain=<domain>' -v
<Curl/7.58.0IPPhoneDirectory>
<Title>Restfs address book</Title>
<Prompt>Prompt text.</Prompt>
<DirectoryEntry>
<Name>User Test</Name>
<Telephone>100</Telephone>
</DirectoryEntry>
</Curl/7.58.0IPPhoneDirectory> |
Если информация по запрашиваемому номеру существует, должен придти код 200, а в теле ответа должна быть телефонная книга.
Сервис можно временно сконфигурировать через файл/usr/lib/ecss/ecss-restfs/conf/address-book/card-settings.json. Изменив параметры в файле необходимо перезагрузить сервис ecss-restfs.
$ sudo systemctl restart ecss-restfs |
Однако настройки, выставленные в этом файле будут сброшены после обновления пакета ecss-restfs. Верная схема настройки сервиса через установку или реконфигурирование пакета ecss-restfs.
Шаблоны находятся по пути /etc/ecss/ecss-restfs/template.
Каждый шаблон должен соответствовать следующему виду: -<tempate_name>.xml
Чтобы телефон мог воспользоваться заданным шаблоном, необходимо, чтобы запрос выглядел следующим образом:
$ curl 'http://<IP>:9990/<service>?host=book&domain=<domain>user_agent=<tempate_name>' -v |
Если шаблон не обнаружен, то возвращается адресная книга по стандартному шаблону.
В директориях /usr/lib/ecss/ecss-restfs/template/(ssw|carddav) находятся служебные шаблоны. Изменение или удаление этих файлов может повлечь за собой прекращение работы сервиса. |
http://<IP>:9990/<service>?host=book&<Параметр_1>&<Параметр_2>' -v |
http://<IP>:9990/update/<service>?host=book' -v |
http://<IP>:9990/book/<service>?host=book&<Параметр_1>&<Параметр_2>' -v |
Для настройки удаленной книги cisco нужно в конфигурацию (SEPxxxxxxxxxx.cnf.xml или XMLDefault.xnf.xml) автопровижена добавить следующее:
88хх
<phoneServices>
...
<phoneService type="1" category="0">
<name>Офис</name>
<url>http://<IP>:9990/<service>?host=book&user_agent=cisco</url>
<vendor></vendor>
<version></version>
</phoneService>
</phoneServices> |
79хх
SIPDefault.cnf:
directory_url: "http://<IP>:9990/<service>?host=book&user_agent=cisco"; URL for external Directory location |
Формат шаблона телефонной книги в restfs, c названием файла cisco.xml:
<CiscoIPPhoneDirectory>
<Title>Restfs address book</Title>
<Prompt>Prompt text.</Prompt>
{% for id, person in ipairs(context) do %}
<DirectoryEntry>
<Name>{{person.name}}</Name>
{% for tag, val in pairs(person.phone) do %}
<Telephone>{{val}}</Telephone>
{% end %}
</DirectoryEntry>
{% end %}
</CiscoIPPhoneDirectory> |
После чего в контактах телефона появится записная книга со всеми контактами содержащимися в базе указанного сервиса.
Общая информация по автоконфигурированию (Autoprovisioning) SIP-телефонов с помощью XML телефонной книги и конфигурационных файлов.
Исходные данные: имя и телефон (или несколько телефонов), которые добавляются на сервер, чтобы телефоны могли получить данную информацию по сети. Это могут быть конфигурации, но в данной инструкции не рассматриваются.
Необходимо реализовать схему, которая приведена на рисунке 1.
Аппаратная часть – сервер (ECSS-10, Softswith), SIP-телефон (snom320) и TFTP-сервер, на котором хранятся телефонные номера.
Также базу телефонной книги можно хранить на сервере Softswith.

Рисунок 1 - Схема стенда
Содержимое телефонной книги
Телефон snom320 может получать настройки и телефонную книгу по протоколу XCAP (XML Configuration Access Protocol).
Алгоритм работы: когда пользователь подключает телефон к сети, устройство передает мультиадресный запрос SUBSCRIBE с событием event=ua-profile на адрес 224.0.1.75.
SSW проверяет, есть ли запрашивающее устройство в базе (по производителю, модели, версии, MAC-адресу).
Если устройство найдено, то шлет ответ 200, и затем запрос NOTIFY с адресом сервера и путем к файлу конфигурации, рисунок 2.

Рисунок 2 - Алгоритм работы
Создание файла телефонной книги.
У каждого телефона свой формат данных телефонной книги и прочих конфигураций. Для каждого производителя (модели устройства) нужно создать свой файл, который находится на сайте производителя телефона. Например, для телефонов snom 320 XML-файл называется phonebook.xml и имеет следующую структуру (исходя из нашего примера):
<?xml version="1.0" encoding="utf-8"?> <tbook e="2"> <item context="" type="" fav="false" mod="true" index="0"> <number>528002</number> <number_type>sip</number_type> <first_name>home</first_name> </item> <item context="" type="" fav="false" mod="true" index="1"> <number>534303</number> <number_type>sip</number_type> <first_name>friend</first_name> </item> <item context="active" type="" fav="false" mod="true" index="2"> <number>87771234567</number> <number_type>sip</number_type> <first_name>russian president</first_name> </item> </tbook> |
Сохраняем в XML, размещаем на TFTP-сервере.
Настройка на SSW.
Добавляем SIP-телефон в базу ECSS-10 с помощью команды add:
domain/<DOMAIN>/sip/ua-profile/<TYPE>/add <VENDOR> <MODEL> <VERSION> <MAC>
где:
<TYPE> - тип профиля: device, user, local-network;
<VENDOR> - производитель;
<MODEL> - модель (опциональный параметр);
<VERSION> - версия (опциональный параметр);
<MAC> - MAC-адрес определенного устройства (опциональный параметр).
Любой параметр, кроме VENDOR, может заменить символ "*". Можно, например, прописать конфигурацию по версиям без указания определенной модели или MAC-адреса и т.п.
Если введены не все параметры, то значение "*" будет присвоено всем оставшимся параметрам.
При попытке добавления уже существующего описания будет выдана соответствующая ошибка: "This definitions is exists".
Пример:
Определяем MAC-адрес устройства и прописываем его на сервере (ECSS-10):
domain/test.domain/sip/ua-profile/device/add snom * * 000413316E5C |
Указываются ссылки на соответствующие директории с XML-файлами на сервере (ECSS-10) c помощью команды set:
domain/<DOMAIN>/sip/ua-profile/<TYPE>/set <VENDOR> <MODEL> <VERSION> <MAC> [--path <PATH>] [--effective-by <EFFECTIVE-BY>]
где:
<TYPE>, <VENDOR>, <MODEL>, <VERSION>, <MAC> - описание приведено выше;
<PATH> - адрес расположения файла конфигурации или телефонной книги (для SNOM файл должен называться phonebook.xml). Значение по умолчанию: "/TYPE/VENDOR".
<EFFECTIVE-BY> - тайм-аут применения изменений устройством (0 - применить сразу). Значение по умолчанию 0.
Пример:
domain/test.domain/sip/ua-profile/device/set snom * * 000413316E5C --path tftp://192.168.18.16/phonebook.xml |
Для удаления записи используется команда del:
domain/<DOMAIN>/sip/ua-profile/<TYPE>/del <VENDOR> <MODEL> <VERSION> <MAC> [--force]
где:
<TYPE>, <VENDOR>, <MODEL>, <VERSION>, <MAC> - описание приведено выше.
--force - не спрашивать подтверждение.
Удаление "*" - это удаление записей со значением параметра "*".
Если нужно удалить всю группу - параметр не должен быть указан. Например, для удаления всех версий определенной модели ввод команды заканчивается указанием модели.
Проверка параметров на сервере (ECSS-10) с помощью команды info.
Проверка параметров выполняется следующей командой CLI:
domain/<DOMAIN>/sip/ua-profile/<TYPE>/info <VENDOR> <MODEL> <VERSION> <MAC>
где:
<TYPE>, <VENDOR>, <MODEL>, <VERSION>, <MAC> - описание параметров приведено выше. Все параметры опциональны, можно ограничить вывод на любом уровне.
Пример:
elena@[ds1@ecss1]:/$ domain/test.domain/sip/ua-profile/device/info Executed on the sip1@ecss1 --------------------------------------------------------------------------------------------------- | Type | Vendor | Model | Version | MAC addr | Path | Effective-By | |------+--------+-------+---------+-------------+----------------------------------+--------------| |device| snom | * | * |000413316e5c |tftp://192.168.18.16/phonebook.xml|0 | --------------------------------------------------------------------------------------------------- [exec at: 31.03.2015 15:23:16, exec time: 145ms, nodes: sip1@ecss1] |
Проверка работы.
Телефонная книга отображается в меню аппарата или в WEB-интерфейсе телефона во вкладке Operation=>Directory, рисунок 3.

Рисунок 3 – Переданная телефонная книга на SIP-телефоне фирмы snom
| В примере не используется XCAP. |
В данном примере схема не отличается от схемы, приведенной в примере 1, кроме того, что производитель SIP-телефона GRANDSTREAM GXP2000.
Настройка аналогична, но есть некоторые отличия. Аппарат не поддерживает протокол XCAP, но реализована возможность синхронизации телефонной книги XML напрямую c TFTP/HTTP-сервера.
Пример:
Создание телефонной книги.
Для Grandstream файл называется gs_phonebook.xml.
Формат данных XML-файла имеет следующую структуру:
<?xml version="1.0" encoding="UTF-8"?>
<AddressBook>
<Contact>
<LastName>RUSSIAN</LastName>
<FirstName>Home</FirstName>
<Phone>
<phonenumber>528002</phonenumber>
<accountindex>0</accountindex>
</Phone>
</Contact>
<Contact>
<LastName>UKRAINE</LastName>
<FirstName>Friend</FirstName>
<Phone>
<phonenumber>534303</phonenumber>
<accountindex>1</accountindex>
</Phone>
</Contact>
</AddressBook> |
Сохраняем в XML, размещаем его на TFTP-сервере.
Включение и настройка функции получения телефонной книги.
В телефоне необходимо включить и настроить функции получения телефонной книги.
Для телефона GRANDSTREAM нужно зайти во вкладку ADVANCED SETTINGS=> Phonebook XML Download:, рисунок 4.

Рисунок 4 – Настройка функции получения телефонной книги на телефоне GRANDSTREAM
В настройках телефона доступно выставить интервал обновления телефонной книги.
Подключаем телефон к сети, проверяем загрузку телефонной книги, рисунок 5.

Рисунок 5 – Меню загруженной телефонной книги SIP-телефона фирмы GRANDSTREAM
| В примере не используется XCAP. |
Для телефонов Yealink (T22P) есть функция «Удаленная записная книга». При этом XML-файл телефонной книги считывается с HTTP/TFTP-сервера не загружая телефонную книгу на локальную директорию телефона.
Нужно только настроить путь к серверу и подготовить XML-файл, разместив этот файл на сервере.
Структура XML-файла телефонной книги (по примеру 1):
<xxxIPPhoneDirectory>
<DirectoryEntry>
<Name>Home</Name>
<Telephone>528002</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Friend</Name>
<Telephone>534303</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Russian PRESIDENT</Name>
<Telephone>891912345678</Telephone>
</DirectoryEntry>
<SoftKeyItem>
<Name>0</Name>
<URL> tftp://192.168.18.16/1.xml </URL>
</SoftKeyItem>
</xxxIPPhoneDirectory> |
Настройка удаленной телефонной книги на телефоне Yealink приведена на рисунке 6.

Рисунок 6 – Настройка удаленной телефонной книги на телефоне Yealink
Можно выставить интервал обновления телефонной книги, а также входящий/исходящий поиск.
Удаленная телефонная книга будет доступна в меню телефона DIR => Remote Phone Book.
Есть возможность выбирать разные телефонные книги, выбор осуществляется по названию книги, которое задается в колонке (Display Name), рисунок 6.
На рисунке 7 изображено меню переданной телефонной книги SIP-телефона фирмы Yealink.

Рисунок 7 – Меню переданной телефонной книги SIP-телефона фирмы Yealink