Событие при обновлении задачи OnTaskUpdate
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Scope:
taskКто может подписаться: любой пользователь
Событие ONTASKUPDATE срабатывает после обновления задачи.
События не будут отправляться в приложение, пока установка не завершена. Проверьте установку приложения
Что получает обработчик
Данные передаются в виде POST-запроса
{
"event": "ONTASKUPDATE",
"data": {
"FIELDS_BEFORE": {
"ID": 123
},
"FIELDS_AFTER": {
"ID": 123
},
"IS_ACCESSIBLE_BEFORE": "undefined",
"IS_ACCESSIBLE_AFTER": "undefined"
},
"ts": "1466439714",
"auth": {
"access_token": "s6p6eclrvim6da22ft9ch94ekreb52lv",
"expires_in": "3600",
"scope": "task",
"domain": "some-domain.bitrix24.com",
"server_endpoint": "https://oauth.bitrix24.tech/rest/",
"status": "F",
"client_endpoint": "https://some-domain.bitrix24.com/rest/",
"member_id": "a223c6b3710f85df22e9377d6c4f7553",
"refresh_token": "4s386p3q0tr8dy89xvmt96234v3dljg8",
"application_token": "51856fefc120afa4b628cc82d3935cce"
}
}
Обязательные параметры отмечены *
|
Параметр |
Описание |
|
event* |
Символьный код события. В данном случае — |
|
data* |
Объект, содержащий данные о событии обновления задачи. Структура описана ниже |
|
ts* |
Дата и время отправки события из очереди событий |
|
auth* |
Объект, содержащий параметры авторизации и данные о портале, на котором произошло событие. Структура описана ниже |
Параметр data[]
|
Название |
Описание |
|
FIELDS_BEFORE* |
Поля задачи до события (подробное описание приведено ниже). В случае отсутствия доступных полей задачи данное поле будет содержать значение |
|
FIELDS_AFTER* |
Поля задачи после события (подробное описание приведено ниже). В случае отсутствия доступных полей задачи данное поле будет содержать значение |
|
IS_ACCESSIBLE_BEFORE* |
Была ли доступна задача на чтение до события (подробное описание приведено ниже) |
|
IS_ACCESSIBLE_AFTER* |
Стала ли доступна задача на чтение после события (подробное описание приведено ниже) |
Поле FIELDS_BEFORE
|
Название |
Описание |
|
ID* |
Идентификатор обновленной задачи |
Поле FIELDS_AFTER
|
Название |
Описание |
|
ID* |
Идентификатор обновленной задачи |
Поле IS_ACCESSIBLE_BEFORE
|
Название |
Описание |
|
IS_ACCESSIBLE_BEFORE* |
Возможные значения:
|
Поле IS_ACCESSIBLE_AFTER
|
Название |
Описание |
|
IS_ACCESSIBLE_AFTER* |
Возможные значения:
|
Параметр auth
Обязательные параметры отмечены *
|
Название |
Описание |
|
access_token |
Токен авторизации OAuth 2.0 |
|
expires_in |
Время в секундах до истечения срока действия токена |
|
scope* |
Скоуп, в рамках которого произошло событие |
|
domain* |
Адрес Битрикс24, на котором произошло событие |
|
server_endpoint* |
Адрес сервера авторизации Битрикс24, необходимый для обновления токенов OAuth 2.0 |
|
status* |
Статус приложения, подписавшегося на это событие:
|
|
client_endpoint* |
Общий путь для вызовов методов REST API для Битрикс24, на котором произошло событие |
|
member_id* |
Идентификатор Битрикс24, на котором произошло событие |
|
refresh_token |
Токен продления авторизации OAuth 2.0 |
|
application_token* |
Токен для безопасной обработки событий |
Токены авторизации не всегда передаются в обработчик события. Если хит, инициировавший событие, не удалось привязать к конкретному пользователю Битрикс24, токены не передаются. Обязательно проверяйте содержимое ключа auth в коде.
Рекомендуем хранить токены, полученные ранее при установке приложения. Используйте их при работе с интерфейсом приложения в виде встроек, виджетов и так далее.
Примеры кода
Как использовать примеры в документации
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (event.bind returns true on success)
type EventBindResult = boolean
try {
const response = await $b24.actions.v2.call.make<EventBindResult>({
method: 'event.bind',
params: {
event: 'onTaskUpdate',
handler: 'https://example.com/handler.php',
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Event bound successfully:', result)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function bindTaskUpdateEvent() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'event.bind',
params: {
event: 'onTaskUpdate',
handler: 'https://example.com/handler.php',
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Event bound successfully:', result)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', bindTaskUpdateEvent)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.event.bind(
event='onTaskUpdate',
handler="https://example.com/handler.php",
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service
->core
->call(
'event.bind',
[
'event' => 'onTaskUpdate',
'handler' => 'https://example.com/handler.php',
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
// Нужная вам логика обработки данных
processData($result);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error binding event: ' . $e->getMessage();
}
BX24.callMethod(
'event.bind',
{
"event": "onTaskUpdate",
"handler": "https://example.com/handler.php"
},
function(result) {
if (result.error()) {
console.error(result.error());
} else {
console.info(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'event.bind',
[
'event' => 'onTaskUpdate',
'handler' => 'https://example.com/handler.php'
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';