Скачайте полное описание API «Сервер-клиент» (pdf)
Скачать
API Сервер-клиент. Описание
Мы рекомендуем использовать это дополнительное АПИ в ситуации, когда основное API Виртуальной АТС использовать невозможно. API «Сервер-клиент» позволяет внешним приложениям взаимодействовать с Виртуальной АТС отдельным пользователям, независимо от других пользователей. Если Вам потребуются услуги по доработке API «Сервер-клиент», обращайтесь по адресу integration@mangotele.com.
## 1 Принципы интеграции и обработка ошибок
1.1 Назначение
API «Сервер-клиент» (далее по тексту — Сервис) позволяет внешним приложениям:
- взаимодействовать с Виртуальной АТС MANGO OFFICE (далее по тексту — ВАТС) отдельным пользователям, независимо от других пользователей, т. е. каждое клиентское приложение получает информацию только о звонках данного пользователя;
- сохраняет информацию о звонках и событиях пользователя, если пользователь недоступен (к примеру, клиентское приложение недоступно);
- и предоставляет сохраненную информацию для обработки клиентскому приложению.
Сервис позволяет реализовывать решения, построенные по принципу «сервер-клиент» (в отличие от API ВАТС для внешних приложений, которое построено по принципу «сервер-сервер»).
1.2 Требования совместимости и список поддерживаемых протоколов
Чтобы взаимодействовать с Сервисом, внешняя система должна обеспечивать:
- Подключение выполнено через API коннектор;
- Использование метода POST и GET для HTTP-запросов;
- Поддержка протокола SSL (https).
1.3 Доступ к функциям
Сервис доступен по ссылке:
https://api-client.mango-office.ru/api
Для того чтобы получить доступ к Сервису, внешняя система должна соответствовать требованиям совместимости, а также необходимо получить ключ доступа (token).
Сервис предоставляет внешней системе доступ к своим функциям без ограничений. Если внешней системе требуется разграничение доступа на уровне пользователей внешней системы, то это разграничение обеспечивает сама внешняя система.
1.4 Обработка ошибок
В случае некорректных данных или при возникновении ошибок обработки данных любой из методов Сервиса возвращает один из следующих ответов:
- 200 — успешное выполнение
- 4хх — неверный запрос или отсутствие в ответе данных
- 500 — ошибка сервера
Возможные коды ошибок Сервиса являются подмножеством кодов результатов (см. «Список кодов результатов»).
2 Описание примеров использования Сервиса
2.1 Последовательность подключения Сервиса
-
создать интеграцию, выполнив запрос создания интеграции (/integration/create), при этом получить ключ интеграции (token);
-
для каждого пользователя внешней системы, для которого необходимо предоставить интеграцию, выполнить создать пользователя в интеграции, выполнив запрос создания пользователя в интеграции (/users/create). Потребуется указать внутренний номер из ВАТС.
Важно! Только после этого сервис интеграций начнет обрабатывать звонки для данного пользователя.
-
когда внешней системе для конкретного пользователя необходимо начать взаимодействовать с Сервисом, тогда для этого пользователя необходимо получить ссылку на вебсокет, выполнив запрос «Получить вебсокет» (/channel/);
-
после успешного создания/открытия вебсокета, нужно, по полученному URL вебсокета, зарегистрировать пользователя в сессии вебсокета, выполнив запрос «Начать сессию вебсокета» (/session/register/).
Важно! После успешной регистрации пользователя, начнется передача Push-сообщений по звонкам пользователя по вебсокету, не сохраняясь в пропущенных событиях.
-
в любой момент времени проверить доступность к серверу интеграции можно выполнив запрос «Проверка статуса сервера» (/session/ping);
-
если необходимо выполнять звонки со стороны внешней системы, то следует использовать запрос инициации звонка (/callback);
-
если необходимо маршрутизировать звонки со стороны внешней системы, то следует использовать запрос «Перевести на сотрудника» (/route/async/), при этом результат выполнения отслеживать по событиям /route_result;
-
для получения записей разговоров следует использовать запрос на получение записи разговора (/record);
-
для отслеживания состояния звонков следует отслеживать события телефонии (/call);
-
для отслеживания наличия записей разговоров в звонках следует отслеживать события записи (/record);
-
для выполнения переводов звонка следует использовать запрос на перевод звонка (/transfer).
Важно! Завершение звонка выполняется на оконечном оборудовании/программном телефоне, и недоступно со стороны API.
2.2 Корректное завершение работы приложения пользователя
-
клиентское приложение завершает вебсокет сессию (вкладка браузера закрывается, выход из приложения);
-
клиентское приложение отправляет запрос завершения сессии вебсокета (/v1/session/unregister/) для конкретного пользователя ВАТС
-
Сервис накапливает события о вызовах для конкретного пользователя ВАТС;
-
внешнее приложение сможет в дальнейшем обработать накапливаемые события согласно разделу «Порядок получения пропущенных событий».
2.3 Порядок получения пропущенных событий
-
пользователь не залогинен в websocket-сессии;
-
все события, проходящие через систему, записываются для пользователя как пропущенные;
Важно! Речь идет именно о событиях, необработанных («пропущенных») внешним приложением, а не о статусе «пропущен» того или иного вызова.
- после успешного создания вебсокет-соединения и выполнения запроса «Начать сессию вебсокета» (/v1/session/register) пользователем:
а) выполнить запрос /v1/session/register циклически, пока Result[code]=0. Если больше пропущенных событий нет, то Result[code]=109;
б) параметр LIMIT можно варьировать. Таймаут на запрос к Сервиса равен 1 минуте;
- пропущенные события хранятся 2 недели до удаления из истории.
2.4 Порядок инициирования звонка callback
-
у пользователя открыт софтфон или иное настроенное средство приема;
-
выполняется запрос инициации звонка (/v1/callback);
-
на средстве приема (открытого на шаге 1) появляется входящий звонок (с номера, указанного в DESTINATION_NUMBER);
-
пользователь принимает звонок;
-
система инициирует дозвон на указанный номер, начинают приходить события по звонку.
2.5 Порядок проигрывания записи
-
осуществляется запись звонка более 6 секунд;
-
после получения события записи (/record) со статусом AVAILABLE можно сохранить значение url для скачивания данной записи разговора;
-
ВАТС формирует запись разговора, доступность записи может занимать время — более 5 минут в часы нагрузки;
-
рекомендуется хранить ссылку на запись, а не саму запись;
-
пользователь пытается прослушать запись — надо выполнить запрос по сохраненной ссылке.
2.6 Порядок перевода на ответственного сотрудника
-
при получении входящего звонка на ВАТС Сервис отправляет событие телефонии (/ivr) в статусе APPEARED случайному пользователю, находящемуся в сессии вебсокет;
-
получено событие с routeKey="/ivr";
-
внешнее приложение осуществляет поиск ответственного по номеру телефона в своей системе хранения данных;
-
если ответственный найден, то отправляется запрос «Перевести на сотрудника» (/v1/route) на внутренний номер ответственного;
-
асинхронно по вебсокету приходит событие результата выполнения ВАТС перевода вызова (/route_result).
2.7 Звонки на группу
-
происходит звонок на группу в ВАТС;
-
один из сотрудников группы поднял трубку;
-
остальные сотрудники получат событие телефонии (/call) с состоянием DISONNECTED и признаком is_group_disconnect=true
Получение события DISONNECTED c признаком is_group_disconnect=true означает, что звонок сотрудника был завершен по причине ответа на звонок другим сотрудником группы и не обрабатывать такой DISCONNECT, например, как статистику или пропущенный вызов.