Обновление Заказа
Обновление данных Заказа в Лайнере.
Адрес и метод
POST /v2/order/update/{orderId}/
orderIdint
Идентификатор Заказа в Лайнере. Значение> 0.
Параметры (Body)
Передавайте только те поля, которые нужно обновить. Обязательных полей в теле запроса нет.
codestringнеобязательный
Код заказа в Лайнере. Допустимые символы:a-z,0-9,-,_. Должен быть уникальным.
serviceTitlestringнеобязательный
Внутреннее название заказа.
titlestringнеобязательный
Отображаемое название заказа.
callSchedulearrayнеобязательный
Расписание звонков: до 7 элементов, позиция элемента — день недели (Пн → Вс). Элемент —["HH:MM", "HH:MM"](начало и конец рабочего дня) или[]— выходной.
callHolidayOverridesarrayнеобязательный
Список праздничных дней (string). Принимается любой распознаваемый формат даты, хранится и возвращается в форматедд.мм.гггг.
autoDialingEnabledboolнеобязательный
Разрешены ли звонки в заказе.
predictiveModeEnabledboolнеобязательный
Разрешены ли звонки в предиктивном режиме.
aiDefaultLanguagestringнеобязательный
Язык по-умолчанию для ИИ. Код одного из доступных языков, напримерru,gb.
amdDetectionEnabledboolнеобязательный
Включено ли распознавание автоответчиков.
callRecordRulestringнеобязательный
Когда начинать запись разговора. Доступные значения:client_is_connected,agent_is_connected.
sipEndpointUsageSchemestringнеобязательный
Схема использования номеров. Доступные значения:random_default,random_without_repetition,even_loaded,even_loaded_daily.
agentUserIdsarrayнеобязательный
Идентификаторы агентов (int), которые могут работать в этом заказе.
agentGroupIdsarrayнеобязательный
Идентификаторы групп агентов (int), которые могут работать в этом заказе.
showLeadContactsToAgentboolнеобязательный
Могут ли агенты видеть контакты лидов.
callAttemptGroupIdintнеобязательный
Идентификатор группы интервалов попыток дозвона. Значение>= 1.
qualifiedLeadsPerDayLimitintнеобязательный
Максимальное количество целевых лидов в день. Значение>= 1.
callScenarioIdintнеобязательный
Идентификатор сценария разговора. Значение>= 1.
leadTransformEnabledboolнеобязательный
Разрешено ли агенту изменять тип лида.
statusstringнеобязательный
Статус заказа. Доступные значения:success,secondary,info.
speechRecognitionEnabledboolнеобязательный
Включено ли распознавание звонков.
ignoreLeadTimezoneboolнеобязательный
Игнорировать ли часовой пояс клиента.
sipEndpointIdsarrayнеобязательный
Список идентификаторов виртуальных номеров (int). Не может быть пустым.
customValuesarrayнеобязательный
Словарь значений пользовательских полей: ключ — ID пользовательского поля, значение — сохраняемое значение этого поля. Поле должно существовать и относиться к заказам, значение должно соответствовать типу поля (для мультиселекта — строка со значениями через запятую).
transferNumbersarrayнеобязательный
Номера для перевода звонка. Каждый элемент — объект:number(string, обязателен, без пробелов) иnames(object, необязателен: ключ — код языка, значение — название).
autoProcessCallboolнеобязательный
Автоматическая обработка звонка.
agentLeadCreationIsAllowedboolнеобязательный
Разрешено ли агенту создавать лидов.
agentLeadEditModestringнеобязательный
Режим редактирования лида агентом, напримерduring-call.
Примечание
Неизвестные поля в теле запроса игнорируются. Поля createdAt, updatedAt, createdBy, updatedBy задать нельзя.
Пример запроса
curl -X POST "https://YOUR_LINER_API_HOST/v2/order/update/{orderId}/" \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_TOKEN" \
-d '{
"code": "{{code}}",
"serviceTitle": "{{serviceTitle}}",
"title": "{{title}}",
"status": "{{status}}",
"sipEndpointIds": [{{sipEndpointId}}, {{sipEndpointId2}}],
"callSchedule": [["{{start}}", "{{end}}"]],
"callHolidayOverrides": ["{{holiday}}"],
"autoDialingEnabled": {{autoDialingEnabled}},
"predictiveModeEnabled": {{predictiveModeEnabled}},
"aiDefaultLanguage": "{{aiDefaultLanguage}}",
"amdDetectionEnabled": {{amdDetectionEnabled}},
"callRecordRule": "{{callRecordRule}}",
"sipEndpointUsageScheme": "{{sipEndpointUsageScheme}}",
"agentUserIds": [{{agentUserId}}, ...],
"agentGroupIds": [{{agentGroupId}}, ...],
"showLeadContactsToAgent": {{showLeadContactsToAgent}},
"callAttemptGroupId": {{callAttemptGroupId}},
"qualifiedLeadsPerDayLimit": {{qualifiedLeadsPerDayLimit}},
"callScenarioId": {{callScenarioId}},
"leadTransformEnabled": {{leadTransformEnabled}},
"speechRecognitionEnabled": {{speechRecognitionEnabled}},
"ignoreLeadTimezone": {{ignoreLeadTimezone}},
"customValues": {
"{{customFieldId}}": "{{customFieldValue}}"
},
"transferNumbers": [
{
"number": "{{transferNumber}}",
"names": {
"{{langCode}}": "{{transferNumberName}}"
}
}
],
"autoProcessCall": {{autoProcessCall}},
"agentLeadCreationIsAllowed": {{agentLeadCreationIsAllowed}},
"agentLeadEditMode": "{{agentLeadEditMode}}"
}'
<?php
$host = 'https://YOUR_LINER_API_HOST';
$token = 'YOUR_API_TOKEN';
$orderId = (int)$orderId;
// Важно: заполняйте только те поля, которые хотите обновить
$payload = [
'code' => $code ?? null,
'serviceTitle' => $serviceTitle ?? null,
'title' => $title ?? null,
'status' => $status ?? null,
'sipEndpointIds' => $sipEndpointIds ?? null,
'callSchedule' => $callSchedule ?? null,
'callHolidayOverrides' => $callHolidayOverrides ?? null,
'autoDialingEnabled' => isset($autoDialingEnabled) ? (bool)$autoDialingEnabled : null,
'predictiveModeEnabled' => isset($predictiveModeEnabled) ? (bool)$predictiveModeEnabled : null,
'aiDefaultLanguage' => $aiDefaultLanguage ?? null,
'amdDetectionEnabled' => isset($amdDetectionEnabled) ? (bool)$amdDetectionEnabled : null,
'callRecordRule' => $callRecordRule ?? null,
'sipEndpointUsageScheme' => $sipEndpointUsageScheme ?? null,
'agentUserIds' => $agentUserIds ?? null,
'agentGroupIds' => $agentGroupIds ?? null,
'showLeadContactsToAgent' => isset($showLeadContactsToAgent) ? (bool)$showLeadContactsToAgent : null,
'callAttemptGroupId' => isset($callAttemptGroupId) ? (int)$callAttemptGroupId : null,
'qualifiedLeadsPerDayLimit' => isset($qualifiedLeadsPerDayLimit) ? (int)$qualifiedLeadsPerDayLimit : null,
'callScenarioId' => isset($callScenarioId) ? (int)$callScenarioId : null,
'leadTransformEnabled' => isset($leadTransformEnabled) ? (bool)$leadTransformEnabled : null,
'speechRecognitionEnabled' => isset($speechRecognitionEnabled) ? (bool)$speechRecognitionEnabled : null,
'ignoreLeadTimezone' => isset($ignoreLeadTimezone) ? (bool)$ignoreLeadTimezone : null,
'customValues' => [
$customFieldId => isset($customFieldValue) ? $customFieldValue : null,
],
'transferNumbers' => $transferNumbers ?? null,
'autoProcessCall' => isset($autoProcessCall) ? (bool)$autoProcessCall : null,
'agentLeadCreationIsAllowed' => isset($agentLeadCreationIsAllowed) ? (bool)$agentLeadCreationIsAllowed : null,
'agentLeadEditMode' => $agentLeadEditMode ?? null,
];
// Удаляем null-поля, чтобы не затирать значения случайно
$payload = array_filter($payload, fn($v) => $v !== null);
$ch = curl_init($host . '/v2/order/update/' . $orderId . '/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-Api-Key: ' . $token,
],
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
CURLOPT_TIMEOUT => 15,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false) {
throw new RuntimeException('cURL error: ' . curl_error($ch));
}
curl_close($ch);
echo "HTTP {$httpCode}\n";
echo $response;
const host = "https://YOUR_LINER_API_HOST";
const token = "YOUR_API_TOKEN";
const orderId = Number(orderId);
// Важно: добавляйте только те поля, которые хотите обновить
const payload = {
code: code,
serviceTitle: serviceTitle,
title: title,
status: status,
sipEndpointIds: sipEndpointIds,
callSchedule: callSchedule,
callHolidayOverrides: callHolidayOverrides,
autoDialingEnabled: autoDialingEnabled != null ? Boolean(autoDialingEnabled) : undefined,
predictiveModeEnabled: predictiveModeEnabled != null ? Boolean(predictiveModeEnabled) : undefined,
aiDefaultLanguage: aiDefaultLanguage ?? undefined,
amdDetectionEnabled: amdDetectionEnabled != null ? Boolean(amdDetectionEnabled) : undefined,
callRecordRule: callRecordRule ?? undefined,
sipEndpointUsageScheme: sipEndpointUsageScheme ?? undefined,
agentUserIds: agentUserIds ?? undefined,
agentGroupIds: agentGroupIds ?? undefined,
showLeadContactsToAgent: showLeadContactsToAgent != null ? Boolean(showLeadContactsToAgent) : undefined,
callAttemptGroupId: callAttemptGroupId != null ? Number(callAttemptGroupId) : undefined,
qualifiedLeadsPerDayLimit: qualifiedLeadsPerDayLimit != null ? Number(qualifiedLeadsPerDayLimit) : undefined,
callScenarioId: callScenarioId != null ? Number(callScenarioId) : undefined,
leadTransformEnabled: leadTransformEnabled != null ? Boolean(leadTransformEnabled) : undefined,
speechRecognitionEnabled: speechRecognitionEnabled != null ? Boolean(speechRecognitionEnabled) : undefined,
ignoreLeadTimezone: ignoreLeadTimezone != null ? Boolean(ignoreLeadTimezone) : undefined,
customValues: {
[customFieldId]: customFieldValue != null ? customFieldValue : undefined,
},
transferNumbers: transferNumbers ?? undefined,
autoProcessCall: autoProcessCall != null ? Boolean(autoProcessCall) : undefined,
agentLeadCreationIsAllowed: agentLeadCreationIsAllowed != null ? Boolean(agentLeadCreationIsAllowed) : undefined,
agentLeadEditMode: agentLeadEditMode ?? undefined,
};
// Удаляем undefined-поля
Object.keys(payload).forEach((k) => payload[k] === undefined && delete payload[k]);
const res = await fetch(`${host}/v2/order/update/${orderId}/`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": token
},
body: JSON.stringify(payload)
});
const data = await res.json();
console.log("HTTP", res.status, data);
Пример ответа
Примечание
Выше описана структура поля data. Общий формат ответа API см. в разделе Схема запросов