Установить набор дополнительных контентных блоков в запись таймлайна
Scope: crm Права на выполнение: REST Приложение
Описание и параметры
Метод crm.timeline.layout.blocks.set позволяет REST приложениям устанавливать набор дополнительных контентных блоков в запись таймлайна.
Установка нового набора дополнительных контентных блоков в запись таймлайна будет стирать ранее добавленный набор в рамках одного приложения.
Установка набора дополнительных контентных блоков не может быть применена к записям таймлайна относящимся к:
- Делам (смотрите Добавление набора дополнительных контентных блоков в дело)
- Лог-записям таймлайна
- Устаревшим записям таймлайна
Параметры
Обязательные параметры отмечены *
Параметртип |
Описание |
---|---|
entityTypeId*integer |
Идентификатор объекта CRM, к которому привязана запись таймлайна |
entityId*integer |
Идентификатор объекта CRM, к которому привязана запись таймлайна |
activityId*integer |
Идентификатор записи таймлайна |
layout*RestAppLayoutDto |
Объект, описывающий набор дополнительных контентных блоков |
Примеры кода
В запись таймлайна с id = 8
, привязанного к сделке с id = 4
установим следующий набор дополнительных контентных блоков:
- Текст
- Длинный многострочный текст
- Ссылка
- Блок с заголовком
- cURL (Webhook)
curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"entityTypeId":2,"entityId":4,"timelineId":8,"layout":{"blocks":{"block_1":{"type":"text","properties":{"value":"Здравствуйте!\nМы начинаем.","multiline":true,"bold":true,"color":"base_90"}},"block_2":{"type":"largeText","properties":{"value":"Здравствуйте!\nМы начинаем.\nМы продолжаем.\nМы все еще работаем над этим.\nМы продолжаем.\nМы близки к результату.\nДо свидания."}},"block_3":{"type":"link","properties":{"text":"Открыть сделку","bold":true,"action":{"type":"redirect","uri":"/crm/deal/details/123/"}}},"block_4":{"type":"withTitle","properties":{"title":"Заголовок","block":{"type":"text","properties":{"value":"Какое-то значение"}}}}}}' \ https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.timeline.layout.blocks.set
- cURL (OAuth)
curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"entityTypeId":2,"entityId":4,"timelineId":8,"layout":{"blocks":{"block_1":{"type":"text","properties":{"value":"Здравствуйте!\nМы начинаем.","multiline":true,"bold":true,"color":"base_90"}},"block_2":{"type":"largeText","properties":{"value":"Здравствуйте!\nМы начинаем.\nМы продолжаем.\nМы все еще работаем над этим.\nМы продолжаем.\nМы близки к результату.\nДо свидания."}},"block_3":{"type":"link","properties":{"text":"Открыть сделку","bold":true,"action":{"type":"redirect","uri":"/crm/deal/details/123/"}}},"block_4":{"type":"withTitle","properties":{"title":"Заголовок","block":{"type":"text","properties":{"value":"Какое-то значение"}}}}}},"auth":"**put_access_token_here**"}' \ https://**put_your_bitrix24_address**/rest/crm.timeline.layout.blocks.set
- JS
const layout = { blocks: { 'block_1': { type: "text", properties: { value: "Здравствуйте!\nМы начинаем.", multiline: true, bold: true, color: "base_90" } }, 'block_2': { type: "largeText", properties: { value: "Здравствуйте!\nМы начинаем.\nМы продолжаем.\nМы все еще работаем над этим.\nМы продолжаем.\nМы близки к результату.\nДо свидания." } }, 'block_3': { type: "link", properties: { text: "Открыть сделку", bold: true, action: { type: "redirect", uri: "/crm/deal/details/123/" } } }, 'block_4': { type: "withTitle", properties: { title: "Заголовок", block: { type: "text", properties: { value: "Какое-то значение" } } } } } }; BX24.callMethod( 'crm.timeline.layout.blocks.set', { entityTypeId: 2, // Сделка entityId: 4, // ID Сделки timelineId: 8, // ID Записи таймлайна привязанного к данной сделке layout: layout, // Объект, описывающий набор дополнительных контентных блоков }, (result) => { if (result.error()) { console.error(result.error()); } else { console.info(result.data()); } }, );
- PHP
require_once('crest.php'); $result = CRest::call( 'crm.timeline.layout.blocks.set', [ 'entityTypeId' => 2, 'entityId' => 4, 'timelineId' => 8, 'layout' => [ 'blocks' => [ 'block_1' => [ 'type' => "text", 'properties' => [ 'value' => "Здравствуйте!\nМы начинаем.", 'multiline' => true, 'bold' => true, 'color' => "base_90" ] ], 'block_2' => [ 'type' => "largeText", 'properties' => [ 'value' => "Здравствуйте!\nМы начинаем.\nМы продолжаем.\nМы все еще работаем над этим.\nМы продолжаем.\nМы близки к результату.\nДо свидания." ] ], 'block_3' => [ 'type' => "link", 'properties' => [ 'text' => "Открыть сделку", 'bold' => true, 'action' => [ 'type' => "redirect", 'uri' => "/crm/deal/details/123/" ] ] ], 'block_4' => [ 'type' => "withTitle", 'properties' => [ 'title' => "Заголовок", 'block' => [ 'type' => "text", 'properties' => [ 'value' => "Какое-то значение" ] ] ] ] ] ] ] ); echo '
'; print_r($result); echo '
';
Внешний вид
Результатом примера выше будет запись:
Если запись таймлайна содержит более одного набора дополнительных контентных блоков, то они будут выводиться в порядке их добавления.
В html верстке с помощью data-атрибутов явно выделено то, каким REST приложением был добавлен набор дополнительных контентных блоков:
data-app-name
: название REST приложенияdata-rest-client-id
: идентификатор REST приложения
Обработка ответа и ошибок
HTTP-статус: 200
Возвращает { success: true }
в случае успешной записи набора дополнительных контентных блоков, иначе null
.
{ "success": true }
Возможные коды ошибок
Код | Описание |
---|---|
ERROR_WRONG_CONTEXT | Вызов метода возможен только в контексте rest приложения |
OWNER_NOT_FOUND | Сущность, к которой привязана запись таймлайна, не найдена |
NOT_FOUND | Запись таймлайна не найдена |
ACCESS_DENIED | Доступ запрещен |
UNSUITABLE_TIMELINE_ITEM | Тип записи таймлайна не подходит для добавления набора дополнительных контентных блоков |
FIELD_IS_REQUIRED | Поле blocks в RestAppLayoutDto должно быть заполнено. |
Также метод отдает ошибки, связанные с неправильной структурой набора контентных блоков. Подробности можно узнать в тексте ошибки.
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.