Перейти к содержанию

Обновление Заказа

Обновление данных Заказа в Лайнере.


Адрес и метод

POST /v2/order/update/{orderId}/

orderId int
Идентификатор Заказа в Лайнере. Значение > 0.


Параметры (Body)

Передавайте только те поля, которые нужно обновить.

code string необязательный
Код заказа в Лайнере.

serviceTitle string необязательный
Внутреннее название заказа.

title string необязательный
Отображаемое название заказа.

callSchedule array необязательный
Список, каждый элемент которого содержит время начала и конца рабочего дня.

callHolidayOverrides array необязательный
Список праздничных дней.

autoDialingEnabled bool необязательный
Разрешены ли звонки в заказе.

predictiveModeEnabled bool необязательный
Разрешены ли звонки в предиктивном режиме.

aiModeEnabled bool необязательный
Разрешен ли ИИ звонок.

standaloneAiModeEnabled bool необязательный
ИИ-обработка без онлайн агентов.

aiModePrompt string необязательный
Базовый промпт для ИИ бота.

aiModeFirstPhrase string необязательный
Первая фраза для ИИ бота.

aiDefaultLanguage string необязательный
Язык по-умолчанию для ИИ. Доступные значения: ru, gb.

amdDetectionEnabled bool необязательный
Включено ли распознавание автоответчиков.

callRecordRule string необязательный
Когда начинать запись разговора. Доступные значения: client_is_connected, agent_is_connected.

callCenterPhone string необязательный
Основной номер телефона КЦ.

additionalCallCenterPhones array необязательный
Дополнительные номера телефона КЦ.

sipEndpointUsageScheme string необязательный
Схема использования номеров. Доступные значения: random_default, random_without_repetition, even_loaded, even_loaded_daily.

agentUserIds array необязательный
Идентификаторы агентов, которые могут работать в этом заказе.

agentGroupIds array необязательный
Идентификаторы групп агентов, которые могут работать в этом заказе.

showLeadContactsToAgent bool необязательный
Могут ли агенты видеть контакты лидов.

callAttemptsGroupId int необязательный
Идентификатор группы интервалов попыток дозвона.

qualifiedLeadsPerDayLimit int необязательный
Максимальное количество целевых лидов в день.

callScenarioId int необязательный
Идентификатор сценария разговора.

leadTransformEnabled bool необязательный
Разрешено ли агенту изменять тип лида.

leadsPriority int необязательный
Приоритет Лидов в заказе.

status string необязательный
Статус заказа. Доступные значения: success, secondary, info.

speechRecognitionEnabled bool необязательный
Включено ли распознавание звонков.

ignoreLeadTimezone bool необязательный
Игнорировать ли часовой пояс клиента.

sipEndpointIds array необязательный
Список идентификаторов виртуальных номеров.

customValues object необязательный
Словарь значений пользовательских полей: ключ — ID пользовательского поля, значение — сохраняемое значение этого поля.


Пример запроса

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}},
    "aiModeEnabled": {{aiModeEnabled}},
    "standaloneAiModeEnabled": {{standaloneAiModeEnabled}},
    "aiModePrompt": "{{aiModePrompt}}",
    "aiModeFirstPhrase": "{{aiModeFirstPhrase}}",
    "aiDefaultLanguage": "{{aiDefaultLanguage}}",
    "amdDetectionEnabled": {{amdDetectionEnabled}},
    "callRecordRule": "{{callRecordRule}}",
    "callCenterPhone": "{{callCenterPhone}}",
    "additionalCallCenterPhones": ["{{additionalCallCenterPhone}}", ...],
    "sipEndpointUsageScheme": "{{sipEndpointUsageScheme}}",
    "agentUserIds": [{{agentUserId}}, ...],
    "agentGroupIds": [{{agentGroupId}}, ...],
    "showLeadContactsToAgent": {{showLeadContactsToAgent}},
    "callAttemptsGroupId": {{callAttemptsGroupId}},
    "qualifiedLeadsPerDayLimit": {{qualifiedLeadsPerDayLimit}},
    "callScenarioId": {{callScenarioId}},
    "leadTransformEnabled": {{leadTransformEnabled}},
    "leadsPriority": {{leadsPriority}},
    "speechRecognitionEnabled": {{speechRecognitionEnabled}},
    "ignoreLeadTimezone": {{ignoreLeadTimezone}},
    "customValues": {
      "{{customFieldId}}": "{{customFieldValue}}"
    }
  }'
<?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,
    'aiModeEnabled' => isset($aiModeEnabled) ? (bool)$aiModeEnabled : null,
    'standaloneAiModeEnabled' => isset($standaloneAiModeEnabled) ? (bool)$standaloneAiModeEnabled : null,
    'aiModePrompt' => $aiModePrompt ?? null,
    'aiModeFirstPhrase' => $aiModeFirstPhrase ?? null,
    'aiDefaultLanguage' => $aiDefaultLanguage ?? null,
    'amdDetectionEnabled' => isset($amdDetectionEnabled) ? (bool)$amdDetectionEnabled : null,
    'callRecordRule' => $callRecordRule ?? null,
    'callCenterPhone' => $callCenterPhone ?? null,
    'additionalCallCenterPhones' => $additionalCallCenterPhones ?? null,
    'sipEndpointUsageScheme' => $sipEndpointUsageScheme ?? null,
    'agentUserIds' => $agentUserIds ?? null,
    'agentGroupIds' => $agentGroupIds ?? null,
    'showLeadContactsToAgent' => isset($showLeadContactsToAgent) ? (bool)$showLeadContactsToAgent : null,
    'callAttemptsGroupId' => isset($callAttemptsGroupId) ? (int)$callAttemptsGroupId : null,
    'qualifiedLeadsPerDayLimit' => isset($qualifiedLeadsPerDayLimit) ? (int)$qualifiedLeadsPerDayLimit : null,
    'callScenarioId' => isset($callScenarioId) ? (int)$callScenarioId : null,
    'leadTransformEnabled' => isset($leadTransformEnabled) ? (bool)$leadTransformEnabled : null,
    'leadsPriority' => isset($leadsPriority) ? (int)$leadsPriority : null,
    'speechRecognitionEnabled' => isset($speechRecognitionEnabled) ? (bool)$speechRecognitionEnabled : null,
    'ignoreLeadTimezone' => isset($ignoreLeadTimezone) ? (bool)$ignoreLeadTimezone : null,
    'customValues' => [
        $customFieldId => isset($customFieldValue) ? $customFieldValue : 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,
  aiModeEnabled: aiModeEnabled != null ? Boolean(aiModeEnabled) : undefined,
  standaloneAiModeEnabled: standaloneAiModeEnabled != null ? Boolean(standaloneAiModeEnabled) : undefined,
  aiModePrompt: aiModePrompt ?? undefined,
  aiModeFirstPhrase: aiModeFirstPhrase ?? undefined,
  aiDefaultLanguage: aiDefaultLanguage ?? undefined,
  amdDetectionEnabled: amdDetectionEnabled != null ? Boolean(amdDetectionEnabled) : undefined,
  callRecordRule: callRecordRule ?? undefined,
  callCenterPhone: callCenterPhone ?? undefined,
  additionalCallCenterPhones: additionalCallCenterPhones ?? undefined,
  sipEndpointUsageScheme: sipEndpointUsageScheme ?? undefined,
  agentUserIds: agentUserIds ?? undefined,
  agentGroupIds: agentGroupIds ?? undefined,
  showLeadContactsToAgent: showLeadContactsToAgent != null ? Boolean(showLeadContactsToAgent) : undefined,
  callAttemptsGroupId: callAttemptsGroupId != null ? Number(callAttemptsGroupId) : undefined,
  qualifiedLeadsPerDayLimit: qualifiedLeadsPerDayLimit != null ? Number(qualifiedLeadsPerDayLimit) : undefined,
  callScenarioId: callScenarioId != null ? Number(callScenarioId) : undefined,
  leadTransformEnabled: leadTransformEnabled != null ? Boolean(leadTransformEnabled) : undefined,
  leadsPriority: leadsPriority != null ? Number(leadsPriority) : undefined,
  speechRecognitionEnabled: speechRecognitionEnabled != null ? Boolean(speechRecognitionEnabled) : undefined,
  ignoreLeadTimezone: ignoreLeadTimezone != null ? Boolean(ignoreLeadTimezone) : undefined,
  customValues: {
    [customFieldId]: customFieldValue != null ? customFieldValue : 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);

Пример ответа

{
  "success": true,
  "message": "",
  "data": []
}

Примечание

Выше описана структура поля data. Общий формат ответа API см. в разделе Схема запросов