API выдачи талонов V2 на центральном сервере СУО Энтер⚓
Доступно в СУО версии 4.0.5.0 и выше
Общие сведения⚓
API работает по протоколу HTTP на порту, сконфигурированом для службы центрального сервера СУО (по умолчанию 82).
Запросы к API выполняются через HTTP-методы GET/POST.
Тело ответа имеет формат JSON, кодировку UTF-8.
Доступ к API возможен при соблюдении следующих условий:
- Запрос выполняется с HTTP-заголовком Token, в котором указывается токен вашей системы, выданный вам администратором центрального сервера СУО. Если токен некорректный, сервер вернет ответ с HTTP-статусом 401 Unauthorized.
- Внешней системе, Token которой указывается в заголовке, разрешено работать с данным API в настройках в разделе "Интеграция". Если такого разрешения нет, то сервер вернет ответ с HTTP-статусом 403 Forbidden.
- Оператор, который авторизуется через данное API, имеет право на доступ к колл-центру (встроенная роль "Оператор колл-центра"). Если у пользователя прав нет, то сервер вернет ответ с HTTP-статусом 500 Inetrnal Server Error.
- Количество одновроменно работающих операторов колл-центра не превышает заданное лицензией ограничение. Если лицензионное ограничение нарушено, то сервер вернет ответ с HTTP-статусом 500 Inetrnal Server Error.
Формат ответа об ошибке⚓
Ответ об ошибке приходит с HTTP-статусом 4xx или 5xx. В теле ответа приходит объект ErrorResponse.
- Ответ с HTTP-статусом 4xx означает, что вероятно проблема на стороне интегратора, или клиента.
- Ответ с HTTP-статусом 5xx означает, что проблема произошла не по вине клиента и не по вине интегратора, нужно обратится к владельцам системы с текстом ошибки.
Примечание
Если приходит UserMessage, то его обязательно нужно показать клиенту, если его нет, можно сказать общим планом, что что-то пошло не так.
Если приходит Message, значит интегратору нужно обратить на него внимание, если его нет, то никак не нужно реагировать
"ErrorResponse": {
"UserMessage": "string", //Сообщение для пользователя
"Message": "string" //Сообщение для интеграторов
}
Пример ответа на непринятый запрос⚓
// POST /api/1/callcenter/login HTTP/1.1
// Token: a0adba90-b8a7-4fcd-9f73-787ae2eed727
// Content-Length: 0
// Host: center.suo.club:82
// HTTP/1.1 401 Unauthorized
// Content-Length: 138
// Content-Type: application/json; charset=utf-8
// Server: Microsoft-HTTPAPI/2.0
// Access-Control-Allow-Origin: *
// Date: Fri, 07 Jun 2019 10:01:21 GMT
{
"UserMessage":null,
"Message":"Внешняя система с токеном a0adba90-b8a7-4fcd-9f73-787ae2eed727 не найдена."
}
Общий порядок работы⚓
Основное отличие данного API от версии 1 (V1) в том, что версия 2 (V2) позволяет обеспечить атомарность выполнения каких-либо операций с талонами в рамках сессий. В рамках одной сессии может быть выполнено сколько угодно изменений.
Примерный алгоритм работы
- Открываем сессию (клиент хочет записаться на приём)
- Создаём талон
- Подтверждаем изменения. Сессия закрывается.
- Открываем новую сессию (клиент хочет перенести запись)
- Создаём копию старого талона
- Отменяем старый талон
- Отменяем изменения. Сессия закрывается. (клиент в последний момент отказался от переноса записи
Важно
В случае бездействия сессия истекает через 30 минут. При этом если имеется открытая транзакция, то она автоматически закрывается с отменой всех действий с талонами. Например, если начали создание талона и остановились, то через 30 минут резерв будет отменён, и слот предварительной записи освободится.