Удаленная адресная книга (Address-book)
Описание
Данный сервис позволяет поддерживать удаленную книгу Yealink, GrandStream, которую возможно получать либо из базы абонентов SSW (по http), либо по протоколу ldap, либо с адресной книги ECSS-10 (используя mysql).
На текущий момент:
- Из базы абонентов ssw можно получить: имя и номер;
- По протоколу ldap можно получить: имя, номер, почту;
- Используя mysql: имя, номер, почту.
Конфигурация сервиса
Настройка сервиса
Заранее нужно определиться из какого источника будет осуществляться получение данных абонентов.
- Если данные будут получены по ldap, необходимо чтобы на момент настройки был доступ к развернутому ldap серверу (сторонний сервер).
- Если абонентские номера будут получены через mysql, то необходимо иметь доступ до сервера mysql, который используется ECSS-10 (по умолчанию при установке пакета ecss-mysql создается специальный пользователь address_book с доступом до таблицы address_book). При этом, если будет использован другой пользователь mysql, необходимо убедиться, что у него есть доступ до базы address_book.
- Если номера абонентов будут получены через ssw, необходимо иметь доступ до http терминала сервера.
При установке пакета ecss-restfs необходимо указать следующие ответы:
- На вопрос "Необходимо ли настроить телефонную книгу?" ответить положительно ("Да");
- Далее в соответствии с сервисом/сервисами которые будут использоваться для формировании адресной книги заполнить параметры доступа;
Если на момент настройки сервиса пакет ecss-restfs уже был установлен, используйте команду переконфигурирования сервиса:
$ sudo dpkg-reconfigure ecss-restfs
Проверка сервиса
Для проверки работоспособности сервиса необходимо обратиться к его api:
- <IP> — ip-адреса сервера, где установлен пакет ecss-restfs;
- <service> — сервис используемый для получения телефонной книги;
- <domain> — домен для пользователей которого запрашиваются номера.
$ 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
- <tempate_name> — имя шаблона.
Чтобы телефон мог воспользоваться заданным шаблоном, необходимо, чтобы запрос выглядел следующим образом:
- <IP> — ip-адреса сервера, где установлен пакет ecss-restfs;
- <service> — сервис используемый для получения телефонной книги (mysql/ldap/ssw);
- <domain> — домен для пользователей которого запрашиваются номера;
- <tempate_name> — имя шаблона.
- user_agent — аргумент, который позволяет переопределить используемый шаблон, по умолчанию используется первое слово заголовка http-запроса: user-agent.
$ curl 'http://<IP>:9990/<service>?host=book&domain=<domain>user_agent=<tempate_name>' -v
Если шаблон не обнаружен, то возвращается адресная книга по стандартному шаблону.
В директориях /usr/lib/ecss/ecss-restfs/template/(ssw|carddav) находятся служебные шаблоны. Изменение или удаление этих файлов может повлечь за собой прекращение работы сервиса.
Использование сервиса
API сервиса
Запрос адресной книги
http://<IP>:9990/<service>?host=book&<Параметр_1>&<Параметр_2>' -v
- <IP> — ip-адреса сервера, где установлен пакет ecss-restfs;
- <service> — сервис используемый для получения телефонной книги (mysql/ldap/ssw);
- <Параметр> — дополнительные параметры запроса, порядок не имеет значения:
Параметры
- domain — имя домена для которого забирается адресная книга: str;
- name_len — максимальная длина имени: number > 0;
- skip_no_disp — пропускать записи без имени: true|false;
- translit — использовать транслит: true|false;
- user_agent — имя шаблона для адресной книги: str;
- limit — ограничение на количество записей: number > 0.
Сбросить кеш для сервиса телефонной книги
http://<IP>:9990/update/<service>?host=book' -v
- <IP> — ip-адреса сервера, где установлен пакет ecss-restfs;
- <service> — сервис используемый для получения телефонной книги (mysql/ldap/ssw).
Запрос по протоколу CardDAV
http://<IP>:9990/<service>?host=book&user_agent=vcard&<Параметр_1>&<Параметр_2>' -v
- <IP> — ip-адреса сервера, где установлен пакет ecss-restfs;
- <service> — сервис используемый для получения телефонной книги (mysql/ldap/ssw);
- <Параметр> — дополнительные параметры запроса, порядок не имеет значения:
Параметры
- domain — имя домена для которого забирается адресная книга: str;
- skip_no_disp — пропускать записи без имени: true|false;
- translit — использовать транслит: true|false;
Инструкция по синхронизации телефонной книги SIP-телефонов
Для синхронизации адресной книги с телефоном, нужно в соответствующем меню ввести http адрес запроса, который будет отправляться на SSW.
Пример запроса:
http://<IP>:9990/mysql?host=book&domain=eltex&user_agent=yealink&skip_no_disp=true&translit=false&
- <IP> — ip-адреса сервера, где установлен пакет ecss-restfs