Документация для разработчиков
Темная тема

Установить набор дополнительных контентных блоков в запись таймлайна

Scope: crm Права на выполнение: REST Приложение

Описание и параметры


Метод crm.timeline.layout.blocks.set позволяет REST приложениям устанавливать набор дополнительных контентных блоков в запись таймлайна.


Установка нового набора дополнительных контентных блоков в запись таймлайна будет стирать ранее добавленный набор в рамках одного приложения.


Установка набора дополнительных контентных блоков не может быть применена к записям таймлайна относящимся к:


Параметры

Обязательные параметры отмечены *

Параметр
тип
Описание
entityTypeId*
integer
Идентификатор объекта CRM, к которому привязана запись таймлайна
entityId*
integer
Идентификатор объекта CRM, к которому привязана запись таймлайна
activityId*
integer
Идентификатор записи таймлайна
layout*
RestAppLayoutDto
Объект, описывающий набор дополнительных контентных блоков

Примеры кода


В запись таймлайна с id = 8, привязанного к сделке с id = 4 установим следующий набор дополнительных контентных блоков:

  1. Текст
  2. Длинный многострочный текст
  3. Ссылка
  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 должно быть заполнено.

Также метод отдает ошибки, связанные с неправильной структурой набора контентных блоков. Подробности можно узнать в тексте ошибки.



© «Битрикс», 2001-2024, «1С-Битрикс», 2024