Блог Горошко Андрея Bitrix24 Добавить новый ресурс booking.v1.resource.add

Добавить новый ресурс booking.v1.resource.add

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Добавить новый ресурс booking.v1.resource.add», проанализируем лучшие практики и покажем, как правильно использовать booking.v1.resource.add в реальных задачах.

Добавить новый ресурс booking.v1.resource.add

> Scope: booking
>
> Кто может выполнять метод: любой пользователь

Метод booking.v1.resource.add добавляет новый ресурс.

Параметры метода

Название
тип
Описание
fields
object
Объект, содержащий значения полей для создания ресурса (подробное описание)

Параметр fields {#fields}

Название
тип
Описание
name
string
Название ресурса
description
string
Описание ресурса.

По умолчанию пустая строка

typeId*
integer
Идентификатор типа ресурса.

Список доступных типов можно узнать с помощью метода booking.v1.resourceType.list

isMain
string
Как показывать ресурс. Возможные значения:
— Y — в колонках расписания
— N — при пересечении ресурсов

По умолчанию Y

isInfoNotificationOn
string
Сообщение клиенту о записи. Возможные значения:
— Y — включено
— N — выключено

По умолчанию Y

templateTypeInfo
string
Тип шаблона сообщения о записи. Возможные значения:
— inanimate — шаблон для бронирования оборудования и помещений
— animate — шаблон для записи к специалистам

По умолчанию inanimate

isConfirmationNotificationOn
string
Автоматическое подтверждение записи. Возможные значения:
— Y — включено
— N — выключено

По умолчанию Y

templateTypeConfirmation
string
Тип шаблона сообщения о подтверждении записи. Возможные значения:
— inanimate — шаблон для бронирования оборудования и помещений
— animate — шаблон для записи к специалистам

По умолчанию inanimate

isReminderNotificationOn
string
Напоминание о записи. Возможные значения:
— Y — включено
— N — выключено

По умолчанию Y

templateTypeReminder
string
Тип шаблона сообщения для напоминания. Возможные значения: base
isFeedbackNotificationOn
string
Запрос обратной связи. Возможные значения:
— Y — включено
— N — выключено

По умолчанию Y

templateTypeFeedback
string
Тип шаблона сообщения для запроса обратной связи. Возможные значения:
— inanimate — шаблон для бронирования оборудования и помещений
— animate — шаблон для записи к специалистам

По умолчанию inanimate

isDelayedNotificationOn
string
Напоминание, когда клиент опаздывает. Возможные значения:
— Y — включено
— N — выключено

По умолчанию Y

templateTypeDelayed
string
Тип шаблона сообщения об опоздании. Возможные значения:
— inanimate — шаблон для бронирования оборудования и помещений
— animate — шаблон для записи к специалистам

По умолчанию inanimate

infoDelay
integer
Задержка, после которой клиенту приходит сообщение о записи. Указывается в секундах.

По умолчанию 300

reminderDelay
integer
Время до записи, за которое клиенту приходит напоминание о записи. Указывается в секундах.

По умолчанию -1, утром в день записи

delayedDelay
integer
Время, через сколько отправить клиенту сообщение об опоздании. Указывается в секундах.

По умолчанию 300

delayedCounterDelay
integer
Время, через сколько включить счетчик в календаре. Указывается в секундах.

По умолчанию 7200

confirmationDelay
integer
Время до записи, когда клиенту приходит первое сообщение для подтверждения записи. Указывается в секундах.

По умолчанию 86400

confirmationRepetitions
integer
Количество сообщений, которые приходят клиенту для подтверждения записи, не учитывая первого.

По умолчанию 0

confirmationRepetitionsInterval
integer
Интервал между сообщениями о подтверждении записи. Указывается в секундах.

По умолчанию 0

confirmationCounterDelay
integer
Время до записи, после которого загорается счетчик не подтвержденной записи. Указывается в секундах.

По умолчанию 7200

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"name":"Название","description":"Описание","typeId":1,"isMain":"N","isInfoNotificationOn":"Y","templateTypeInfo":"inanimate","isConfirmationNotificationOn":"Y","templateTypeConfirmation":"animate","isReminderNotificationOn":"N","templateTypeReminder":"base","isFeedbackNotificationOn":"Y","templateTypeFeedback":"inanimate","isDelayedNotificationOn":"Y","templateTypeDelayed":"inanimate","infoDelay":60,"reminderDelay":-1,"delayedDelay":300,"delayedCounterDelay":7200,"confirmationDelay":86400,"confirmationRepetitions":1,"confirmationRepetitionsInterval":3600,"confirmationCounterDelay":7200}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/booking.v1.resource.add
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"name":"Название","description":"Описание","typeId":1,"isMain":"N","isInfoNotificationOn":"Y","templateTypeInfo":"inanimate","isConfirmationNotificationOn":"Y","templateTypeConfirmation":"animate","isReminderNotificationOn":"N","templateTypeReminder":"base","isFeedbackNotificationOn":"Y","templateTypeFeedback":"inanimate","isDelayedNotificationOn":"Y","templateTypeDelayed":"inanimate","infoDelay":60,"reminderDelay":-1,"delayedDelay":300,"delayedCounterDelay":7200,"confirmationDelay":86400,"confirmationRepetitions":1,"confirmationRepetitionsInterval":3600,"confirmationCounterDelay":7200},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/booking.v1.resource.add
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'booking.v1.resource.add',
    		{
    			fields: {
    				name: 'Название',
    				description: 'Описание',
    				typeId: 1,
    				isMain: 'N',
    				isInfoNotificationOn: 'Y',
    				templateTypeInfo: 'inanimate',
    				isConfirmationNotificationOn: 'Y',
    				templateTypeConfirmation: 'animate',
    				isReminderNotificationOn: 'N',
    				templateTypeReminder: 'base',
    				isFeedbackNotificationOn: 'Y',
    				templateTypeFeedback: 'inanimate',
    				isDelayedNotificationOn: 'Y',
    				templateTypeDelayed: 'inanimate',
    				infoDelay: 60,
    				reminderDelay: -1,
    				delayedDelay: 300,
    				delayedCounterDelay: 7200,
    				confirmationDelay: 86400,
    				confirmationRepetitions: 1,
    				confirmationRepetitionsInterval: 3600,
    				confirmationCounterDelay: 7200
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	if (result.error())
    	{
    		console.error(result.error());
    	}
    	else
    	{
    		console.dir(result);
    	}
    }
    catch( error )
    {
    	console.error('Error:', error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'booking.v1.resource.add',
                [
                    'fields' => [
                        'name' => 'Название',
                        'description' => 'Описание',
                        'typeId' => 1,
                        'isMain' => 'N',
                        'isInfoNotificationOn' => 'Y',
                        'templateTypeInfo' => 'inanimate',
                        'isConfirmationNotificationOn' => 'Y',
                        'templateTypeConfirmation' => 'animate',
                        'isReminderNotificationOn' => 'N',
                        'templateTypeReminder' => 'base',
                        'isFeedbackNotificationOn' => 'Y',
                        'templateTypeFeedback' => 'inanimate',
                        'isDelayedNotificationOn' => 'Y',
                        'templateTypeDelayed' => 'inanimate',
                        'infoDelay' => 60,
                        'reminderDelay' => -1,
                        'delayedDelay' => 300,
                        'delayedCounterDelay' => 7200,
                        'confirmationDelay' => 86400,
                        'confirmationRepetitions' => 1,
                        'confirmationRepetitionsInterval' => 3600,
                        'confirmationCounterDelay' => 7200,
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
        // Нужная вам логика обработки данных
        processData($result);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding resource: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        "booking.v1.resource.add",
        {
            fields: {
                name: "Название",
                description: "Описание",
                typeId: 1,
                isMain: "N",
                isInfoNotificationOn: "Y",
                templateTypeInfo: "inanimate",
                isConfirmationNotificationOn: "Y",
                templateTypeConfirmation: "animate",
                isReminderNotificationOn: "N",
                templateTypeReminder: "base",
                isFeedbackNotificationOn: "Y",
                templateTypeFeedback: "inanimate",
                isDelayedNotificationOn: "Y",
                templateTypeDelayed: "inanimate",
                infoDelay: 60,
                reminderDelay: -1,
                delayedDelay: 300,
                delayedCounterDelay: 7200,
                confirmationDelay: 86400,
                confirmationRepetitions: 1,
                confirmationRepetitionsInterval: 3600,
                confirmationCounterDelay: 7200
            }
        },
        result => {
            if (result.error())
                console.error(result.error());
            else
                console.dir(result.data());
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'booking.v1.resource.add',
        [
            'fields' => [
                'name' => 'Название',
                'description' => 'Описание',
                'typeId' => 1,
                'isMain' => 'N',
                'isInfoNotificationOn' => 'Y',
                'templateTypeInfo' => 'inanimate',
                'isConfirmationNotificationOn' => 'Y',
                'templateTypeConfirmation' => 'animate',
                'isReminderNotificationOn' => 'N',
                'templateTypeReminder' => 'base',
                'isFeedbackNotificationOn' => 'Y',
                'templateTypeFeedback' => 'inanimate',
                'isDelayedNotificationOn' => 'Y',
                'templateTypeDelayed' => 'inanimate',
                'infoDelay' => 60,
                'reminderDelay' => -1,
                'delayedDelay' => 300,
                'delayedCounterDelay' => 7200,
                'confirmationDelay' => 86400,
                'confirmationRepetitions' => 1,
                'confirmationRepetitionsInterval' => 3600,
                'confirmationCounterDelay' => 7200
            ]
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

Обработка ответа

HTTP-статус: 200

{
    "result": {
        "id": 1823
    },
    "time": {
        "start": 1724068028.331234,
        "finish": 1724068028.726591,
        "duration": 0.3953571319580078,
        "processing": 0.13033390045166016,
        "date_start": "2025-01-21T13:47:08+02:00",
        "date_finish": "2025-01-21T13:47:08+02:00",
        "operating": 0
    }
}

Возвращаемые данные

Название
тип
Описание
result
object
Корневой элемент ответа, содержит идентификатор созданного ресурса
time
time
Информация о времени выполнения запроса

Обработка ошибок

HTTP-статус: 400

{
    "error": 1013,
    "error_description": "Resource type with id 17 does not exist"
}

Возможные коды ошибок

КодОписаниеЗначение
0Required fields: nameНе передан обязательный параметр внутри fields
100Could not find value for parameter {fields}Не передан обязательный параметр fields
1006ResourceType not foundНе указан typeId
1013Resource type with id does not existУказан несуществующий typeId
422Invalid value of the fieldНеверное значение поля
  • [](./resource-type/index)
  • [](./booking-v1-resource-get)
  • [](./booking-v1-resource-update)
  • [](./booking-v1-resource-delete)
  • [](./booking-v1-resource-list)

💡 Экспертное мнение и рекомендации

Ключевые выводы по теме «Добавить новый ресурс booking.v1.resource.add»:

Использование современных стандартов D7 при работе с booking.v1.resource.add позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Как использовать метод SDK crm.address.update в Битрикс24Как использовать метод SDK crm.address.update в Битрикс24

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Как использовать метод SDK crm.address.update в Битрикс24», разберем

Как использовать метод SDK crm.quote.userfield.get в Битрикс24Как использовать метод SDK crm.quote.userfield.get в Битрикс24

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Как использовать метод SDK crm.quote.userfield.get в Битрикс24», разберем

Получить связи бронирования booking.v1.booking.externalData.listПолучить связи бронирования booking.v1.booking.externalData.list

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Получить связи бронирования booking.v1.booking.externalData.list», проанализируем лучшие практики и