Введение
Стандарт разметки уведомлений Open Mail Format позволяет разметить уведомления так, чтобы автоматизированные обработчики могли понимать их содержание и на основе этой информации генерировать различные представления для пользователей.
OMF основан на принципах микроформатов, что позволяет соединить человеко-читаемое и машино-читаемое представление в одном тексте.
OMF может использоваться для выделения смысловой части email’а, как это делает почта Mail.Ru, или для разметки любых других сообщений и страниц с целью их последующей группировки, фильтрации и т.д.
Описание формата
Корневой элемент должен иметь класс notification.
Типы уведомлений
Корневой элемент микроформата должен иметь класс, соответствующий типу действия (о типах см. ниже). Все остальные элементы микроформата должны содержаться внутри элемента с этим классом.
Тип может быть не указан для случаев, когда для уведомления нет соответствующего по смыслу типа.
Общие свойства
При разборе микроформата принимаются следующие свойства:
- actor (бывший from) – генератор; сущность, которая производит действие, о котором сообщается в уведомлении; по-умолчанию человек, если не указан явно – получатель уведомления
- object – сущность, над которой совершается действие; по-умолчанию человек, если не указан явно – получатель уведомления
- text – человеко-читаемый короткий текст с сутью уведомления
- action-link – ссылка действия, в уведомлении может быть несколько, применимо только к элементу <a>
- attachment – картинка, связанная с действием, о котором уведомление. обратите внимание, что фотографию отправителя сообщения лучше определить в свойстве actor с помощью микроформата hCard, применимо только к элементу <img>
Все эти свойства опциональны, более полная информация обеспечивает лучшее отображение. Конкретное значение свойств определяется в зависимости от типа уведомления.
Свойства содержат только текст.
Классы action-link’ов
Ссылки могут иметь дополнительные классы, которые предают им семантический смысл. Это может использоваться, например, в условии ограниченного пространства (list view) где остается только один, самый важный action link. Они не обязательны для указания, но могут улучшить представление и user expirience. Если дополнительные классы не указаны, то основной считается первая по тексту ссылка.
Модель уведомления
В этой спецификации подразумевается, что уведомление рассказывает о каком-либо действии. Одно уведомление содержит одно действие. Действие описывается следующими полями: тип действия, генератор (см. типы сущностей), объект действия (см. типы сущностей), ссылки, время действия (время генерации уведомления), источник (сервис, который сгенерировал уведомление).
Типы сущностей
Возможные значения объекта действия и его генератора определяются типом действия из списка действий.
Человек
Определяется с помощью микроформата hCard.
Пример
Компания
Определяется с помощью микроформата hCard.
Пример
Событие
Любое событие, такое как концерт, выставка, день рождения или акция со скидками. Определяется с помощью микроформата hCalendar.
Пример
Группа
Группа или сообщество на сайте.
Родительский класс – group; если не содержит вложенных элементов, то содержимое обозначает название.
Дополнительные элементы
| класс | описание | источник данных | |
| name | название | ||
| url | адрес | href | |
| photo | url | логотипа | img src, href |
| icon | url | иконки | img src, href |
Простой пример
Расширенный пример
Сервис
Веб-сервис, сайт, блог, социальное приложение или подобная сущность.
Родительский класс – service; если не содержит вложенных элементов, то содержимое обозначает название.
Дополнительные элементы
| класс | описание | источник данных |
| name | название | |
| url | адрес | href |
| photo | url логотипа | img src, href |
| icon | url иконки | img src, href |
Простой пример
Расширенный пример
Продукт
Коммерческий продукт или услуга.
Родительский класс – product; если не содержит вложенных элементов, то содержимое обозначает название.
Дополнительные элементы
| класс | описание | источник данных |
| name | название | |
| url | адрес | href |
| photo | url картинки | img src, href |
Простой пример
Расширенный пример
Статья
Блог пост, новостная статья или подобная сущность.
Родительский класс – article; если не содержит вложенных элементов, то содержимое обозначает название.
Дополнительные элементы
| класс | описание | источник данных |
| name | название | |
| summary | краткое содержание | |
| url | адрес | href | photo | url сопутствующей картинки | img src, href |
Простой пример
Расширенный пример
Аудио
Аудиофайл: музыка, подкаст, аудиокнига...
Родительский класс – audio; если не содержит вложенных элементов, то содержимое обозначает название.
Дополнительные элементы
| класс | описание | источник данных |
| name | название | |
| description | описание | |
| url | адрес файла, потока или страницы с плеером | href |
Простой пример
Расширенный пример
Видео
Родительский класс – video; если не содержит вложенных элементов, то содержимое обозначает название.
Дополнительные элементы
| класс | описание | источник данных |
| name | название | |
| description | описание | |
| photo | картинка-превью | img src, href |
| url | адрес файла, потока или страницы с плеером | href |
Простой пример
Расширенный пример
Фото
Родительский класс – photo; если не содержит вложенных элементов, то содержимое обозначает название.
Дополнительные элементы
| класс | описание | источник данных |
| name | название | |
| description | описание | |
| photo | картинка-превью | img src, href |
| url | адрес полной картинки или страницы с ней | href |
Простой пример
Расширенный пример
Типы действий
Новое личное сообщение
Класс – new-message. Возможные типы генератора: person. Возможные типы объекта действия: person.
Дополнительные классы для action-link’ов:
- read-link: ссылка, по которой можно прочитать сообщение
- reply-link: ссылка, по которой можно ответить на сообщение
Базовый пример письма
Более развернутый пример (с использованием hCard для обозначения отправителя)
Обратите внимание, как from и vcard совмещены в одном элементе. А так же, что, хотя url и fn в одном элементе, url получается из href ссылки, а fn из ее текста.
Предложение дружбы
Предложение о дружбе, которое ожидает принятия.
Класс – friendship-request. Возможные типы генератора: person. Возможные типы объекта действия: person.
Дополнительные классы для action-link’ов:
- accept-link: ссылка, по которой можно принять предложение
- reject-link: ссылка, по которой можно отказаться от предложения
Базовый пример письма
Приглашение
Приглашение в группу, приложение, на сайт или событие.
Класс – invitation. Возможные типы генератора: person, group, service, company. Возможные типы объекта действия: service, group, event.
Дополнительные классы для action-link’ов:
- accept-link: ссылка, по которой можно принять приглашение
Минимальный пример письма
Новый контент
Новый контент: блог посты, фотографии, видео, товары в магазине и т. п.
Класс – post. Возможные типы генератора: person, group, service, company. Возможные типы объекта действия: service, group, event, product, article, audio, video, photo, person, company.
Новая оценка
Новая оценка какого-то контента, отмечание как любимое.
Класс – new_mark. Возможные типы генератора: person. Возможные типы объекта действия: service, group, event, product, article, audio, video, photo, person, company.
Покупка
Уведомление о покупке какого-либо товара.
Класс – purchase. Без генератора. Возможные типы объекта действия: product.
Истечение срока действия
Уведомление об истечении срока действия услуги.
Класс – expiration. Без генератора. Возможные типы объекта действия: product.
Подтверждение
Уведомление о действии, требующем подтверждения пользователя: регистрация, заказ товара, подписка.
Класс – verification. Возможные типы генератора: service, group. Без объекта действия.
Дополнительные классы для action-link’ов:
- accept-link: ссылка, по которой можно пройти подтверждение
Минимальный пример письма