Хочу рассказать вам как сделать ваши уведомления и сообщения богаче используя новый инструмент "Вложения"
Я несколько раз анонсировал эту возможность и скорее всего вы уже начали думать о том, как использовать её у себя в модулях
Сейчас я вам расскажу как это сделать, на самом деле это достаточно просто (приготовьтесь, пост длинный с картинками)
[spoiler]
Вложения, можно применять к
Для персонализированных уведомлений
Для системных уведомлений
Для уведомлений требующих подтверждения
Как их использовать
Вы создаете объект "Вложение" и передаете его (это может быть массив таких объектов или один объект) в конструктор отправки уведомления используя ключ ATTACH
CModule::IncludeModule('im'); $attach = new CIMMessageParamAttach(null, "#95c255"); $attach->AddLink(Array( "NAME" => "Тикет #12345: новое API для модуля \"Веб-мессенджер\"", "DESC" => "Необходимо реализовать к релизу!", "LINK" => "https://api.bitrix24.com/" )); $attach->AddImages(Array( Array( "NAME" => "Пример реализации", "LINK" => "http://dev.1c-bitrix.ru/bitrix/templates/1c-bitrix-new/images/logo.png", ) )); $arMessageFields = array( "TO_USER_ID" => 1, "FROM_USER_ID" => 2, "NOTIFY_TYPE" => IM_NOTIFY_SYSTEM, "MESSAGE" => "Уведомление из баг-трекера", "MESSAGE_OUT" => "Уведомление из баг-трекера. Тикет #12345: новое API для модуля \"Веб-мессенджер\" https://api.bitrix24.com/", "ATTACH" => Array($attach) ); $mess = CIMNotify::Add($arMessageFields); |
Обратите внимание: из-за сложности структуры, вложения автоматически не добавляются при отправке в XMPP, почту или в виде PUSH-уведомления на телефон.
Вы сами должны дописать необходимые данные в нужные поля (MESSAGE_OUT для XMPP, MAIL) если это необходимо.
Вложения, коллекция блоков
Цвет вложения
По умолчанию, цвет вложения назначается случайным образом, но вы можете контролировать его, передав вторым параметром hex-цвет или одну из заготовленных констант:
CIMMessageParamAttach::NORMAL - зеленый
CIMMessageParamAttach::ATTENTION - оранжевый
CIMMessageParamAttach::PROBLEM - красный
CIMMessageParamAttach::CHAT - цвет чата или если это уведомление, цвет пользователя
$attach = new CIMMessageParamAttach(null, "#95c255"); |
Блок пользователя
Вывод блока с аватаром и имя пользователя. Аватар и ссылка не являются обязательным полем.
$attach->addUser(Array( "NAME" => "Евгений Шеленков", "AVATAR" => "https://cp.bitrix.ru/upload/resize_cache/main/765/58_58_2/shelenkov.png", "LINK" => "https://cp.bitrix.ru/company/personal/user/274/", )); |
Блок ссылки
Вывод блока с ссылкой на ресурс, описанием и картинкой пояснением. Описание и картинка не являются обязательными полями.
$attach->AddLink(Array( "NAME" => "Тикет #12345: новое API для модуля \"Веб-мессенджер\"", "DESC" => "Необходимо реализовать к релизу!", "LINK" => "https://api.bitrix24.com/", "PREVIEW" => "http://dev.1c-bitrix.ru/bitrix/templates/1c-bitrix-new/images/logo.png" )); |
Блок текста
Вывод простого текста без форматирования. (доступен тег <br> или текстовый аналог # BR # (без пробелов) для переноса строки)
$attach->AddMessage("API будет доступно в обновлении im 16.0.0"); |
Блок разделитель
Вывод разделителя, можно задать цвет и размер. Цвет и размер не являются обязательными полями.
$attach->AddDelimiter(Array( 'SIZE' => 200, 'COLOR' => "#c6c6c6" )); |
Блок для построения строк и колонок
Существует 3 представления строк - блочный, строчный и в виде 2х колонок.
Блочный, данные идут друг под другом.
Доступен ключ WIDTH для указания ширины блока.
$attach->AddGrid(Array( Array( "NAME" => "Описание", "VALUE" => "Требуется реализовать возможность добавлять структурированные сущности в сообщения и уведомления мессенджера.", "DISPLAY" => "BLOCK" ), Array( "NAME" => "Категория", "VALUE" => "Пожелания", "DISPLAY" => "BLOCK" ), )); |
Строчный, каждый блок идет друг за другом пока не кончится доступное место, после чего переносится на новую строку.
Доступен ключ WIDTH для указания ширины блока.
$attach->AddGrid(Array( Array( "NAME" => "Приоритет", "VALUE" => "Высокий", "COLOR" => "#ff0000", "DISPLAY" => "LINE" ), Array( "NAME" => "Категория", "VALUE" => "Пожелания", "DISPLAY" => "LINE" ), )); |
В виде 2х колонок.
Доступен ключ WIDTH для указания ширины первой колонки.
$attach->AddGrid(Array( Array( "NAME" => "Приоритет", "VALUE" => "Высокий", "DISPLAY" => "COLUMN" ), Array( "NAME" => "Категория", "VALUE" => "Пожелания", "DISPLAY" => "COLUMN" ), )); |
Для всех видов блоков доступны дополнительные ключи:
COLOR - цвет значения
CHAT_ID - значение станет ссылкой на чат в веб-мессенджере
USER_ID - значение станет ссылкой на пользователя в веб-мессенджере
LINK - значение станет ссылкой
Блок изображений
Блок с изображениями, рекомендуется заполнять поле PREVIEW с указанием уменьшенной копии изображения, если поле не заполнено используется LINK. Поля NAME и PREVIEW не являются обязательными.
$attach->AddImages(Array( Array( "NAME" => "Это Mantis", "LINK" => "https://s3.amazonaws.com/rapgenius/Mantis_Mantis.jpg", "PREVIEW" => "https://s3.amazonaws.com/rapgenius/Mantis_Mantis.jpg" ) )); |
Блок с файлами
Отображает форматированную ссылку для загрузки файла. Размер файла необходимо указывать в байтах. Поля NAME, SIZE - не являются обязательными.
$attach->AddFiles(Array( Array( "NAME" => "important.docx", "LINK" => "https://s3.amazonaws.com/rapgenius/Mantis_Mantis.jpg", "SIZE" => "1500000" ) )); |
Это конструктор
И теперь о самом главном, объект "Вложение" является конструктором, вы можете "собрать" его так, как вам требуется, использую доступные блоки.
Порядок добавления блоков имеет значение, именно в таком виде они будет представлены в итоговом варианте.
Пример баг-трекер
CModule::IncludeModule('im'); $attach = new CIMMessageParamAttach(); $attach->addUser(Array( "NAME" => "Уведомления Mantis", "AVATAR" => "https://cp.bitrix.ru/upload/resize_cache/main/8bd/58_58_2/maintis.jpg", "LINK" => "http://jabber.bx/view.php?id=66751", )); $attach->AddLink(Array( "NAME" => "Открыть Mantis из внешней сети", "LINK" => "https://bugs.bitrix24.ru/view.php?id=66751", )); $attach->AddDelimiter(Array( 'SIZE' => 200, 'COLOR' => "#c6c6c6" )); $attach->AddGrid(Array( Array( "NAME" => "Проект", "VALUE" => "BUGS", "DISPLAY" => "LINE", "WIDTH" => 100 ), Array( "NAME" => "Категория", "VALUE" => "im", "DISPLAY" => "LINE", "WIDTH" => 100 ), Array( "NAME" => "Сводка", "VALUE" => "Требуется реализовать возможность добавлять структурированные сущности в сообщения и уведомления мессенджера.", "DISPLAY" => "BLOCK" ), )); $attach->AddDelimiter(Array( 'SIZE' => 200, 'COLOR' => "#c6c6c6" )); $attach->AddGrid(Array( Array( "NAME" => "Новое обращение", "VALUE" => "", "DISPLAY" => "ROW", "WIDTH" => 100 ), Array( "NAME" => "Назначено", "VALUE" => "Шеленков Евгений", "DISPLAY" => "ROW", "WIDTH" => 100 ), Array( "NAME" => "Дедлайн", "VALUE" => "04.11.2015 17:50:43", "DISPLAY" => "ROW", "WIDTH" => 100 ), )); $arMessageFields = array( "TO_USER_ID" => 1, "FROM_USER_ID" => 2, "NOTIFY_TYPE" => IM_NOTIFY_SYSTEM, "MESSAGE" => "Уведомление из баг-трекера", "MESSAGE_OUT" => "Уведомление из баг-трекера. Тикет #12345: новое API для модуля \"Веб-мессенджер\" https://api.bitrix24.com/", "ATTACH" => $attach ); CIMNotify::Add($arMessageFields); |
Пример информационный листок
CModule::IncludeModule('im'); $attach = new CIMMessageParamAttach(); $attach->addMessage("Коллеги, обновление im 16.0.0 проверено и готово к выгрузке.<br> Необходимо поставить тег.<br> В обновление больше не подкладываем."); $attach->AddImages(Array( Array( "LINK" => "http://img.anews.com/media/posts/images/20150422/21822325.jpg", ) )); $arMessageFields = array( "TO_USER_ID" => 1, "FROM_USER_ID" => 2, "NOTIFY_TYPE" => IM_NOTIFY_SYSTEM, "MESSAGE" => "Уведомление из системы обновления", "MESSAGE_OUT" => "Коллеги, обновление im 16.0.0 проверено и готово к выгрузке.", "ATTACH" => $attach ); CIMNotify::Add($arMessageFields); |
Приятным бонусом, является тот факт, что вложения можно использовать не только в уведомлениях, но и сообщениях в чат.
Как добавить в чат, я писал совсем недавно
Создавайте богатые уведомления!
Обязательно покажите свои, если у вас получится интересное уведомление
Например в чат отправляют ссылку на товар, и тут на основе "микроверстки" формируется карточка товара, его наименование, картинка, компания поставщик, Регион поставки!?
Если это ссылка из CRM (на этом же портале) то будет показана карточка товара, как в живой ленте, но пока в мессенджере это не реализовано в планах на первый квартал 2016.