Обзор
Используйте CallV3.make() для вызова методов REST API версии 3.
Метод возвращает Promise с объектом AjaxResult, содержащим данные ответа, статус и методы обработки ошибок.
// Базовое использование
const response = await $b24.actions.v3.call.make({
method: 'tasks.task.get',
params: {
id: 123
},
requestId: 'unique-request-id'
})
Сигнатура метода
make<T = unknown>(
options: ActionCallV3
): Promise<AjaxResult<T>>
Параметры
Объект options содержит следующие свойства:
Возвращаемое значение
Promise<AjaxResult<T>> — promise, разрешающийся в объект AjaxResult.
Этот объект предоставляет:
.getData(): SuccessPayload<T> | undefined— возвращает success-конверт{ result: T, time: PayloadTime }илиundefined, если запрос провалился. Сначала проверьте.isSuccess..isSuccess: boolean— флаг успешного выполнения запроса..getErrorMessages(): string[]— массив сообщений об ошибках.
Обработка ошибок
SDK не держит клиентский список v3-методов: CallV3.make() отправляет любой переданный метод на v3-endpoint, и решает сервер. Если метод не является v3-методом, сервер отвечает METHODNOTFOUNDEXCEPTION как soft-ошибкой (response.isSuccess === false, сообщение в getErrorMessages()) — предварительного выброса на стороне SDK нет. Используйте CallV2.make() для legacy-методов или проверьте apidocs.bitrix24.ru (либо собственный rest.documentation.openapi портала), что существует в v3.
Для успешных запросов всегда проверяйте isSuccess и обрабатывайте ошибки:
// @check-ignore: top-level return in error-handling illustration
const response = await $b24.actions.v3.call.make({
method: 'some.method',
params: { /* some_params */ },
requestId: 'unique-request-id'
})
if (!response.isSuccess) {
// Обработка ошибки
console.error(new Error(`Error: ${response.getErrorMessages().join('; ')}`))
return
}
// Работа с успешным результатом
const data = response.getData()?.result
Примеры
Получение задачи
Долгие запросы
Неидемпотентные методы, создающие или сохраняющие состояние — например
tasks.task.add — могут превысить axios-таймаут 30 секунд по умолчанию на нагруженном
портале. При таймауте SDK по умолчанию делает повторные запросы, что может создать дубликаты
сущностей на стороне сервера (см. issue #24).
Для любого метода, создающего или сохраняющего состояние, увеличьте axios-таймаут и отключите повторные запросы при транспортных ошибках:
import { ApiVersion, ParamsFactory } from '@bitrix24/b24jssdk'
// const $b24 = ...
$b24.getHttpClient(ApiVersion.v3).ajaxClient.defaults.timeout = 120_000
await $b24.setRestrictionManagerParams({
...ParamsFactory.getDefault(),
retryOnNetworkError: false
})
await $b24.actions.v3.call.make({
method: 'tasks.task.add',
params: {/*…*/}
})
См. Limiters — долгие запросы и неидемпотентные вызовы для полного объяснения и альтернативных конфигураций.