Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Создать оповещения по транспортной заявке sale.delivery.request.sendmessage». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции.
Создать оповещения по транспортной заявке sale.delivery.request.sendmessage
> Scope: sale, delivery
>
> Кто может выполнять метод: администратор
Метод создает оповещения по транспортной заявке.
Параметры метода
Названиетип | Описание |
|---|---|
DELIVERY_IDsale_delivery_service.ID | Идентификатор службы доставки, к которой относится транспортная заявка. Получить идентификаторы |
REQUEST_IDstring | Идентификатор транспортной заявки. Идентификатор назначается внешней системой в ответе вебхука на создание заказа на доставку (подробнее в описании вебхука Создание заказа на доставку) |
ADDRESSEEstring | Адресат сообщения. Возможные значения: |
MESSAGEobject | Сообщение (подробное описание приведено ниже) |
Параметр MESSAGE {#parametr-message}
Названиетип | Описание |
|---|---|
SUBJECTstring | Заголовок сообщения. Обязательно нужно заполнить хотя бы одно из следующих полей: |
BODYstring | Тело сообщения. В теле сообщения возможно использование макросов для замены времени и денежных значений. Обязательно нужно заполнить хотя бы одно из следующих полей: |
STATUSobject | Статус сообщения (подробное описание приведено ниже) |
MONEY_VALUESobject | Объект в формате ключ => значение.Используется для замены денежных значений в теле сообщения (смотрите пример ниже) |
Параметр STATUS {#parametr-status}
Названиетип | Описание |
|---|---|
MESSAGEstring | Текстовое название статуса сообщения |
SEMANTICstring | Значение семантики статуса. Возможные значения: |
Примеры кода
- cURL (Webhook)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"DELIVERY_ID":225,"REQUEST_ID":"4757aca4931a4f029f49c0db4374d13d","ADDRESSEE":"MANAGER","MESSAGE":{"SUBJECT":"Your order is on its way","BODY":"Estimated delivery price: #MONEY#","MONEY_VALUES":{"#MONEY#":351.2},"STATUS":{"MESSAGE":"Success","SEMANTIC":"success"}}}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/sale.delivery.request.sendmessage- cURL (OAuth)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"DELIVERY_ID":225,"REQUEST_ID":"4757aca4931a4f029f49c0db4374d13d","ADDRESSEE":"MANAGER","MESSAGE":{"SUBJECT":"Your order is on its way","BODY":"Estimated delivery price: #MONEY#","MONEY_VALUES":{"#MONEY#":351.2},"STATUS":{"MESSAGE":"Success","SEMANTIC":"success"}},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/sale.delivery.request.sendmessage- JS
try
{
const response = await $b24.callMethod(
'sale.delivery.request.sendmessage', {
DELIVERY_ID: 225,
REQUEST_ID: "4757aca4931a4f029f49c0db4374d13d",
ADDRESSEE: "MANAGER",
MESSAGE: {
SUBJECT: "Your order is on its way",
BODY: "Estimated delivery price: #MONEY#",
MONEY_VALUES: {
"#MONEY#": 351.2,
},
STATUS: {
MESSAGE: "Success",
SEMANTIC: "success",
},
},
}
);
const result = response.getData().result;
if (result.error()) {
console.error(result.error());
} else {
console.info(result);
}
}
catch( error )
{
console.error(error);
}- PHP
try {
$response = $b24Service
->core
->call(
'sale.delivery.request.sendmessage',
[
'DELIVERY_ID' => 225,
'REQUEST_ID' => "4757aca4931a4f029f49c0db4374d13d",
'ADDRESSEE' => "MANAGER",
'MESSAGE' => [
'SUBJECT' => "Your order is on its way",
'BODY' => "Estimated delivery price: #MONEY#",
'MONEY_VALUES' => [
"#MONEY#" => 351.2,
],
'STATUS' => [
'MESSAGE' => "Success",
'SEMANTIC' => "success",
],
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error sending delivery message: ' . $e->getMessage();
}- BX24.js
BX24.callMethod(
'sale.delivery.request.sendmessage', {
DELIVERY_ID: 225,
REQUEST_ID: "4757aca4931a4f029f49c0db4374d13d",
ADDRESSEE: "MANAGER",
MESSAGE: {
SUBJECT: "Your order is on its way",
BODY: "Estimated delivery price: #MONEY#",
MONEY_VALUES: {
"#MONEY#": 351.2,
},
STATUS: {
MESSAGE: "Success",
SEMANTIC: "success",
},
},
},
function(result) {
if (result.error()) {
console.error(result.error());
} else {
console.info(result.data());
}
}
);- PHP CRest
require_once('crest.php');
$result = CRest::call(
'sale.delivery.request.sendmessage',
[
'DELIVERY_ID' => 225,
'REQUEST_ID' => "4757aca4931a4f029f49c0db4374d13d",
'ADDRESSEE' => "MANAGER",
'MESSAGE' => [
'SUBJECT' => "Your order is on its way",
'BODY' => "Estimated delivery price: #MONEY#",
'MONEY_VALUES' => [
"#MONEY#" => 351.2,
],
'STATUS' => [
'MESSAGE' => "Success",
'SEMANTIC' => "success",
],
],
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';Обработка ответа
HTTP-статус: 200
{
"result":true,
"time":{
"start":1714561617.200821,
"finish":1714561617.526123,
"duration":0.3253021240234375,
"processing":0.1471860408782959,
"date_start":"2024-05-01T14:06:57+03:00",
"date_finish":"2024-05-01T14:06:57+03:00"
}
}Возвращаемые данные
Названиетип | Описание |
|---|---|
resultboolean | Результат отправки сообщения по транспортной заявке |
timetime | Информация о времени выполнения запроса |
Обработка ошибок
HTTP-статус: 400, 403
{
"error":"DELIVERY_NOT_FOUND",
"error_description":"Delivery service has not been found"
}Возможные коды ошибок
| Код | Описание | Статус |
|---|---|---|
DELIVERY_ID_NOT_SPECIFIED | Не указан идентификатор службы доставки | 400 |
DELIVERY_NOT_FOUND | Служба доставки не найдена | 400 |
REQUEST_ID_NOT_SPECIFIED | Не указан идентификатор транспортной заявки | 400 |
REQUEST_NOT_FOUND | Транспортная заявка не найдена | 400 |
ADDRESSEE_IS_NOT_SPECIFIED | Не указан получатель сообщения | 400 |
ADDRESSEE_UNEXPECTED_VALUE | Неизвестный получатель сообщения. Допустимые значения: | 400 |
MESSAGE_NOT_SPECIFIED | Не указано сообщение. Либо заголовок, либо тело сообщения должны быть указаны обязательно | 400 |
MESSAGE_STATUS_NOT_SPECIFIED | Не указан статус сообщения | 400 |
MESSAGE_STATUS_SEMANTIC_NOT_SPECIFIED | Не указана семантика статуса сообщения | 400 |
UNEXPECTED_MESSAGE_STATUS_SEMANTIC | Неизвестная семантика статуса сообщения | 400 |
REQUEST_SHIPMENT_NOT_FOUND | Не найдены отгрузки, привязанные к указанной транспортной заявке | 400 |
ACCESS_DENIED | Недостаточно прав для добавления службы доставки | 403 |
- [](./sale-delivery-request-update)
- [](./sale-delivery-request-delete)
💡 Экспертное мнение и рекомендации
Ключевые выводы по теме «Создать оповещения по транспортной заявке sale.delivery.request.sendmessage»:
Использование современных стандартов D7 при работе с sale.delivery.request.sendmessage позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru