Описание

Данный сервис позволяет поддерживать удаленную книгу 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
CODE

Проверка сервиса

Для проверки работоспособности сервиса необходимо обратиться к его 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>
CODE

Если информация по запрашиваемому номеру существует, должен придти код 200, а в теле ответа должна быть телефонная книга.

Дополнительная настройка сервиса

Параметры сервиса

Сервис можно временно сконфигурировать через файл/usr/lib/ecss/ecss-restfs/conf/address-book/card-settings.json. Изменив параметры в файле необходимо перезагрузить сервис ecss-restfs.

$ sudo systemctl restart ecss-restfs
CODE

Однако настройки, выставленные в этом файле будут сброшены после обновления пакета 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
CODE

Если шаблон не обнаружен, то возвращается адресная книга по стандартному шаблону.

В директориях /usr/lib/ecss/ecss-restfs/template/(ssw|carddav) находятся служебные шаблоны. Изменение или удаление этих файлов  может повлечь за собой прекращение работы сервиса.

Использование сервиса

API сервиса

Запрос адресной книги

http://<IP>:9990/<service>?host=book&<Параметр_1>&<Параметр_2>' -v
CODE
  • <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
CODE
  • <IP> - ip адреса сервера, где установлен пакет ecss-restfs;
  • <service> -  сервис используемый для получения телефонной книги (mysql/ldap/ssw).

Запрос по протоколу CardDAV

http://<IP>:9990/<service>?host=book&user_agent=vcard&<Параметр_1>&<Параметр_2>' -v
CODE
  • <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&
CODE
  • <IP> - ip адреса сервера, где установлен пакет ecss-restfs