Данный раздел необязателен, если необходима лишь работа с персональными адресными книгами или планируется импортировать адресную книгу CSV-формата.
Для того, чтобы импортировать данные из Active Directory (служба каталогов корпорации Microsoft для операционных систем семейства Windows Server), необходимо:
2. При необходимости поменяйте настройки маппинга, указав их в секции mappers. Данная настройка отвечает за сопоставление атрибутов Active Directory с полями Address Book при импорте.
# ============================
# КОНФИГУРАЦИЯ МАППИНГА
# ============================
# Конфигурация мапперов для трансформации данных из внешних источников в структуру контакта Address Book
#
# Доступные поля контакта: domain, external_id, birthday, common_name, first_name,
# last_name, middle_name, nickname, org, title, full_name, position, gender, avatar, addresses, emails, messengers,
# phones, additional_info
#
# Структура маппера:
# <источник>:
# <поле_контакта>: [<путь_к_данным_в_источнике>, <тип_данных>]
# <поле_контакта>: [[<вложенный_путь>, <тип_данных>]]
# additional_info:
# <подполе>: [<путь_к_данным>, <тип_данных>]
#
# Поддерживаемые типы данных:
# - string: строковые значения
# - url: тип аватара; означает, что аватар хранится в виде пути
# - jpeg: тип аватара; бинарные данные изображений
# - email: адреса электронной почты
# - phone: номера телефонов
# - date: даты
#
# Особенности:
# - Поле 'kind' автоматически устанавливается сервисом ('contact' или 'group')
# - Поле 'additional_info' поддерживает только одноуровневую вложенность
# - Вложенные структуры в 'additional_info' отбрасываются с записью в лог
# - Для полей emails, phones, avatar поддерживается множественное отображение
mappers:
ad:
common_name: ["name", "string"]
full_name: ["cn", "string"]
first_name: ["givenName", "string"]
last_name: ["sn", "string"]
middle_name: ["initials", "string"]
org: ["company", "string"]
emails: ["mail", "email"]
phones:
[
[["telephoneNumber"], ["phone", "work"]],
[["othertelephoneNumber"], ["phone", "work"]],
[["ipPhone"], ["phone", "work"]],
[["homePhone"], ["phone", "home"]],
[["mobile"], ["phone", "cell"]],
[["otherMobile"], ["phone", "cell"]],
]
avatar: [["jpegPhoto", "jpeg"], ["thumbnailPhoto", "url"]]
Все атрибуты, кроме phones и avatar, записываются в виде:
В Active Directory у импортируемого пользователя в атрибуте givenName хранится значение «Kuzma».
В таком случае указанная строка ["first_name", ["givenName", "string"]] при импорте обработается следующим образом: из атрибута givenName будет взято значение имени «Kuzma» с типом «string» и произведена запись этого значения в поле «first_name» сервиса Address Book.
Поля «phones», «avatar» работают иначе.
Поле «phones» содержит несколько значений, каждое из которых записано в виде:
В Active Directory у импортируемого пользователя в атрибуте «telephoneNumber» записано значение внутреннего телефонного номера абонента равное 700.
В таком случае указанная строка [["telephoneNumber"], ["phone", "work"]] при импорте обработается следующим образом: из атрибута «telephoneNumber» будет взято значение 700 и добавлено в поле «phones» в виде списка словарей.
Список словарей нужен, так как телефонов у пользователя может быть несколько (мобильный, рабочий, домашний).
Атрибут avatar импортируется аналогичным образом и служит для последующего отображения изображения (аватара) контакта в клиенте Elph. Аватар может быть задан в бинарном виде (jpeg) либо в текстовом (url). На рисунке ниже пример отдельно созданного для этих целей атрибута с именем «avatar». Можно использовать любое встроенное текстовое поле карточки пользователя, правильно сопоставив его при импорте.
4. Выполните импорт, последовательно вводя указанные ниже команды:
Для выхода из iex нажмите Ctrl+C дважды. Затем введите exit.
При импорте выполняются дополнительные проверки:
1. Если у контакта заполнено хотя бы одно поле (фамилия, имя, отчество) и телефон, такой контакт импортируется в БД Address Book. В противном случае импорт не осуществляется;
2. Так же происходит удаление дублирующихся номеров по следующему принципу:
Если у контакта заполнено несколько идентичных номеров в одной категории (например 2 одинаковых рабочих (work) номера), то дубли удаляются;
Если дубли встречаются в категории «рабочий (work)» и в одной или обеих категориях «мобильный (cell)», «домашний (home)», то в приоритете дублирующийся номер сохранится в категории «рабочий (work)»;
Если дубли встречаются в категориях «мобильный (cell)», «домашний (home)», то в приоритете дублирующийся номер сохранится в категории «мобильный (cell)».
Таким образом в базу данных Address Book попадают только уникальные номера каждого контакта.