Установить набор дополнительных контентных блоков в запись таймлайна
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 должно быть заполнено. |
Также метод отдает ошибки, связанные с неправильной структурой набора контентных блоков. Подробности можно узнать в тексте ошибки.