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

API

Руководство по стандартизованному API для интеграции CRM систем с Корпоративной АТС

Данное руководство описывает основные сценарии работы с API АТС для CRM систем различных вендоров. API предоставляет методы для получения статистической информации, конфигурирования АТС. Вы также можете скачать PDF файл по ссылке

Подключение

Доступ к API организован по протоколу https.

адрес: ats2.t2.ru/crm/openapi

В случае возникновения ошибки проверки подлинности сертификата ats2.t2.ru проверьте, что у вас установлены в доверенные корневой и промежуточный сертификаты. Сертификаты можно скачать по ссылкам:

https://secure.globalsign.net/cacert/Root-R3.crt

https://secure.globalsign.com/cacert/gsrsaovsslca2018.crt

Авторизация

Для авторизации, во всех методах, используется header authorization. В него необходимо передавать Access token, срок его жизни 1 сутки. Получить новый Access token, когда закончилось время жизни старого, можно с помощью метода обновления токена, для этого используется Refresh token. Срок жизни Refresh token составляет 7 суток. Первоначально получить токены можно через веб-интерфейс Корпоративной АТС.

Для того, чтобы получить токены API, необходимо выполнить следующие шаги:

Шаг 1. Зайти в корпоративную АТС под аккаунтом администратора АТС;

Шаг 2. Перейти в настройки профиля, нажав на наименование организации в правом верхнем углу экрана;

Шаг 3. Перейти в блок «Токен API»;

Шаг 4. Сгенерировать токены, нажав на кнопку «Сгенерировать токен»;

Шаг 5. В открывшемся окне будут сгенерированы два токена. Напротив каждого токена есть кнопка копирования.

Access token передается на вход при вызове любого API и действителен в течение суток с момента его получения. Через сутки клиент должен вызвать метод для получения нового Access token, используя ранее полученный Refresh token. Если, спустя сутки, клиент попытается использовать API с недействительным Access token, то получит ошибку 403 вместо данных.

Если клиент более 7 дней подряд не использовал API, то получить новый Access token через ранее выданный ему Refresh token он уже не сможет. Для возобновления доступа клиент должен снова пройти в Личный кабинет и нажать «Сгенерировать токен» для получения новой пары Access token/Refresh token.

Обратите внимание: при повторной генерации предыдущие токены становятся недействительными.

Шаг 6. Полученный Access token вы можете использовать для работы с методами. Пример авторизованного доступа:

curl
-header \'Authorization: {Access token}\'
-X GET
'https://ats2.t2.ru/crm/openapi/monitoring/calls'

Полученный Refresh token вы можете использовать для получения нового Access token после окончания срока его жизни. Пример запроса:

curl 
-header 'Authorization: {Refresh token} ' 
-X PUT 
'https://ats2.t2.ru/crm/openapi/authorization/refresh/token'

Методы

Необходимо учесть, что при создании запроса все зарезервированные символы должны быть закодированы согласно спецификации http.

Обновление токена

PUT /authorization/refresh/token

Запрос позволяет обновить пару токенов Access token, Refresh token.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Refresh token String
Пример запроса
curl -X PUT --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/authorization/refresh/token'
Пример ответа
{
    "accessToken": "eyJhbGciOiJIUzUxMiJ9.eyJVc2VyRGV0YWlsc0ltcGwiOnsiY29tcGFueUlkIjozOTEsInVzZXJJZCI6NTk3NiwibG9naW4iOiJwZ190ZXN0In0sImV4cCI6MTY2MzEzMDg5Nywic3ViIjoiQUNDRVNTX09QRU5BUElfVE9LRU4ifQ.BxX0hy9YF_TSDGJ2mZ1S8mjmNH2VNeNKtMjdTTZ4ToReVmhugZxrSceVHfbfzVvKkTzhfpmfsLDcryTmL6_R4g",
    "refreshToken": "eyJhbGciOiJIUzUxMiJ9.eyJVc2VyRGV0YWlsc0ltcGwiOnsiY29tcGFueUlkIjozOTEsInVzZXJJZCI6NTk3NiwibG9naW4iOiJwZ190ZXN0In0sImV4cCI6MTY2MzY0OTI5Nywic3ViIjoiUkVGUkVTSF9PUEVOQVBJX1RPS0VOIn0.Q5p15LHbSryyXjPk-kcx6U7AINkXywBz7W0by8I_4czc02eRdxO5slKmrJRwPg__nQGBO60tTo1q0468Ggzr1A"
}

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

Параметр строки запроса Описание Тип данных
accessToken токен для доступа, срок действия 1 сутки (применяется во всех методах, описанных далее) String
refreshToken токен для обновления, срок действия 7 суток применяется в текущем методе для получения нового accessToken String

Получение информации о текущих звонках

GET /monitoring/calls

Запрос позволяет получить информацию о текущих звонках.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String
Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/monitoring/calls'
Пример ответа
[
    {
        "callType": "INTERNAL",
        "callerNumberShort": "0001",
        "callerNumberFull": "79535548834",
        "calledNumberShort": "0002",
        "calledNumberFull": "79527745939"
    }
]

Метод возвращает:

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

Параметр Описание Тип данных
callType тип вызова, может принимать значения: MULTI_CHANNEL - вызов на многоканальный номер; INTERNAL - вызов между номерами АТС; SINGLE_CHANNEL - одноканальный, вызов на конкретный номер абонента; CONFERENCE – конференция -
callerNumberShort короткий номер вызывающего абонента, если существует String
callerNumberFull полный номер вызывающего абонента String
calledNumberShort короткий номер вызываемого абонента, если существует String
calledNumberFull полный номер вызываемого абонента String

calledNumberShort и calledNumberFull могут отсутствовать, если вызывающий абонент еще не был направлен на номер Б.

Получение списка абонентов в очереди

GET /monitoring/calls/pending

Запрос позволяет получить список абонентов в очереди.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String
Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/monitoring/calls/pending'
Пример ответа
[
    {
        "queueName": "1",
        "calls": [
            "79527648162",
            "79527648163"
        ]
    }
]

Метод возвращает

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

Параметр строки запроса Описание Тип данных
queueName название КЦ String
calls список номеров в очереди String

Получение списка сотрудников компании

GET /employees

Запрос позволяет получить список сотрудников компании.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String
Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/employees'

Пример ответа
[
    {
        "employeeId": 433,
        "name": "Артем",
        "fullNumber": "79081560008",
        "email": "asd@asd.ru"
    },
    {
        "employeeId": 5412
    },
    {
        "employeeId": 5521,
        "name": "Asd",
        "fullNumber": "74534534454"
    }
]
Метод возвращает:

  • HTTP 200 OK

В случае успеха метод возвращает список JSON объектов «Сотрудники».

Сlick 2 call (вызов через АТС)

POST /call/outgoing{?destination,source}

Запрос позволяет совершить вызов через АТС.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
destination required Номер телефона клиента String
source required Номер телефона сотрудника String
Пример запроса
curl -X POST --header 'Content-Type: application/json' --header 'Accept: */*' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/call/outgoing?destination=79533933557&source=79026840778'

Метод возвращает:

Объект не найден
{
    "details": "Employee not found by source number",
    "message": "Object not found"
}

Статистика

Получение общей статистики

GET /statistics/common{?end,start}

Запрос позволяет получить статистику звонков в заданный период времени по заданным номерам.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
end required Дата окончания периода Date-time
start required Дата начала периода Date-time

Параметры path

Параметр строки запроса Обязательность Описание Тип данных
subscriberNumber optional АТС (в формате 7ХХХХХХХХХХ) String
Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/statistics/common?start=2022-07-24T10%3A15%3A30%2B03%3A00&end=2022-07-26T10%3A15%3A30%2B03%3A00'

Пример ответа
{
    "allCallCount": 22,
    "successCallCount": 8,
    "outgoingCallCount": 0,
    "lostCallCount": 5,
    "commonCallDuration": 178,
    "averageCallDuration": 10,
    "maxCallDuration": 72,
    "callCountPerDay": 4.333333333333333,
    "callCountPerHour": 0.18055555555555555,
    "mnAvgCallDuration": 22,
    "mnMaxCallDuration": 72,
    "averageCallCountPerHour": 0,
    "transferCallCount": 0,
    "transferCallDuration": 0,
    "averageTransferCallDuration": 0,
    "hangupACallCount": 1,
    "hangupBCallCount": 2,
    "uniqueCallCount": 2,
    "redialCount": 6,
    "internalCallCount": 9,
    "internalCallDuration": 717,
    "averageInternalCallDuration": 79
}
Если необязательный параметр subscriberNumber указан, API ищет статистику по номеру, если не указан -- статистику по компании.

Метод возвращает:

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

Параметр Описание Тип данных
allCallCount общее количество вызовов integer
callCountPerDay количество вызовов в день number
callCountPerHour количество вызовов в час number
mnAvgCallDuration средняя длительность звонка integer
mnMaxCallDuration максимальная длительность звонка integer
outgoingCallCount количество исходящих вызовов integer
successCallCount количество отвеченных вызовов integer
commonCallDuration общая длительность вызовов, в секундах integer
lostCallCount кол-во неотвеченных вызовов integer
averageCallDuration средняя продолжительность вызова, в секундах integer
averageCallCountPerHour среднее кол-во вызовов в час integer
maxCallDuration кол-во трансферов integer
transferCallDuration общая длительность трансферных вызовов integer
averageTransferCallDuration средняя длительность трансферных вызовов integer
hangupACallCount кол-во отбоев со стороны инициатора вызова integer
hangupBCallCount кол-во отбоев со стороны сотрудника integer
uniqueCallCount общее кол-во уникальных вызовов integer
redialCount общее кол-во повторных вызовов integer
internalCallCount общее кол-во вызовов внутри компании integer
internalCallDuration общая длительность вызовов внутри компании integer
averageInternalCallDuration средняя длительность вызовов внутри компании integer

Получение статистики по конкретному номеру

GET /statistics/journal{?end,number,start}

Запрос позволяет получить статистику звонков в заданный период времени по заданному номеру.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
end required Дата окончания периода Date-time
start required Дата начала периода Date-time
number optional Номер, для которого нужно собрать статистику (в формате 7ХХХХХХХХХХ) String
Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/statistics/journal?end=2023-03-23T10%3A15%3A30%2B03%3A00&number=79535548834&start=2023-03-21T10%3A15%3A30%2B03%3A00'

Пример ответа
{
    "number": "7XXXXXXXXXX",
    "startTimestamp": 1486975130,
    "endTimestamp": 1487061531,
    "numberOfCalls": 6,
    "numberOfSuccessCalls": 3
}
Метод возвращает:

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

Параметр строки запроса Описание Тип данных
endTimestamp Конец временного отрезка integer
number Номер string
numberOfCalls Количество вызовов integer
numberOfSuccessCalls Количество успешных вызовов integer
startTimestamp Начало временного отрезка integer

Получение статистики по пропущенным звонкам на МКН

GET /statistics/missing{?end,start,mcn_numbers[],page,size,sort}

Запрос позволяет получить статистику по пропущенным звонкам на многоканальные номера в заданном временном интервале.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
end required Дата окончания периода в формате ISO OFFSET DATE TIME. Пример: 2023-08-23T13:54:21.699+00:00 Date-time
start required Дата начала периода в формате ISO OFFSET DATE TIME. Пример: 2023-08-23T13:54:21.699+00:00 Date-time
mcn_numbers[] optional Массив многоканальных номеров, для которых нужно собрать статистику (в формате 7ХХХХХХХХХХ). При отсутствии данного параметра в запросе будут выданы результаты по всем номерам Array[String]
pageable optional Параметры постраничного ответа, по умолчанию будут выданы данные со следующими параметрами: page = 0, size = 100, sort = "startDate" Объект Pageable
Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/statistics/missing?start=2023-08-01T13%3A54%3A21.699%2B00%3A00&end=2023-08-23T13%3A54%3A21.699%2B00%3A00&mcn_numbers=79779117670&page=3&size=100&sort=startDate'
Пример ответа
[ {
"id": 31495476,
"startDate": "2023-08-28T15:03:19.68+03:00",
"waitDuration": 1,
"callerNumber": "79365113627",
"destinationNumber": "79779117670",
"calleeCompanyId": 559,
"calleeNumber": "79779117670",
"calleeName": " "
}, {
"id": 31458969,
"startDate": "2023-08-28T09:43:18.221+03:00",
"waitDuration": 1,
"callerNumber": "79993388398",
"destinationNumber": "79779117670",
"calleeCompanyId": 559,
"calleeNumber": "79779117670",
"calleeName": " "
}
]

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

Параметр строки запроса Описание Тип данных
id id звонка integer
startDate Начало звонка в формате ISO OFFSET DATE TIME. Пример: 2022-08-14T09:00:00+03:00 date-time
waitDuration Время ожидания в секундах integer
callerNumber Номер абонента, который звонил на многоканальный номер string
destinationNumber Многоканальный номер, на который пришел звонок string
callerCompanyId id компании integer
calleeNumber Номер абонента АТС, которому поступил вызов. Если вызов закончился на многоканальном номере, поле будет пустым string
calleeName Имя абонента АТС, которому поступил вызов. Может быть пустым. string

Запись разговоров

Получение списка записей разговоров

call-records/info{?start,end,caller,callee,is_recorded,page,size,sort}

Запрос позволяет получить список записей разговоров, удовлетворяющих набору параметров.

Для неотвеченных по любой причине звонков параметр recordFileName возвращает пустое значение.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
callee optional Номер абонента, который ответил на звонок, или на котором завершился дозвон String
caller optional Номер абонента, который звонил String
end required конец временного интервала в формате ISO OFFSET DATE TIME. Пример: 2022-08-14T09:00:00+03:00 date-time
is_recorded optional Нужно ли возвращать только те записи, разговор которых был записан. Значение по умолчанию: false. Пример: true Boolean
Size optional Количество записей на странице. Значение по умолчанию: 10. Пример: 50 integer
page optional Номер страницы. Значение по умолчанию: 0. Пример: 3 integer
sort optional Правила сортировки. Значение по умолчанию: date,ASC. Пример: date,DESC. Можно сортировать по любому полю из ответа: date, callType и т.д.. Порядок сортировки указывается после через запятую: ASC - по возрастанию, DESC - по убыванию. integer
start required начало временного интервала в формате ISO OFFSET DATE TIME. Пример: 2022-08-14T09:00:00+03:00 date-time
Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/call-records/info?callee=89056678798&is_recorded=true&start=2022-07-24T10%3A15%3A30%2B03%3A00&end=2022-07-26T10%3A15%3A30%2B03%3A00'

Пример ответа
{
    "callTimestamp": 2022-07-15T07:27:06.348Z,
    "callType": "SINGLE_CHANNEL",
    "destinationNumber": "79104739472",
    "callerNumber": "79000258890",
    "callerName": "Анастасия Исаева",
    "calleeNumber": "79104739472",
    "calleeName": "Оля Заплаткина",
    "callDuration": 25,
    "callStatus": "NOT_ANSWERED_COMMON",
    "recordFileName": "2022-08-12/mo_166030706109315379"
},
{
    "callTimestamp": 2022-07-15T07:27:06.348Z,
    "callType": "SINGLE_CHANNEL",
    "destinationNumber": "79104739472",
    "callerNumber": "79000258890",
    "callerName": "Анастасия Исаева",
    "calleeNumber": "79104739472",
    "calleeName": "Оля Заплаткина",
    "callDuration": 20,
    "conversationDuration": 6,
    "callStatus": "ANSWERED_BY_ORIGINAL_CLIENT",
    "recordFileName": "2022-08-12/mo_166030684915821522"
}
Запрос работает для всех вариаций. Если указаны и А и Б номер, API выдаст запись только между этими номерами.

Возможные значения callType:

  • SINGLE_CHANNEL,
  • MULTI_CHANNEL,
  • UNKNOWN_CALL,
  • INTERNAL,
  • HIMSELF,
  • INTERNAL_QUEUE,
  • CRM_OUTGOING,
  • VOICEMAIL,
  • CONFERENCE,
  • CALLBACK,
  • PICKUP_CALL,
  • FAX,
  • OUTGOING,
  • CRM_CALLBACK

Возможные значения callStatus:

  • ANSWERED_COMMON,
  • ANSWERED_BY_ORIGINAL_CLIENT,
  • ANSWERED_BY_BUSY_FORWARD_CLIENT,
  • ANSWERED_BY_NO_ANSWER_FORWARD_CLIENT,
  • NOT_ANSWERED_COMMON,
  • CANCELLED_BY_CALLER,
  • DENIED_DUE_TO_MAX_SESSION,
  • DENIED_DUE_TO_INCOMING_CALLS_BLOCKED,
  • DENIED_DUE_TO_OUTGOING_CALLS_BLOCKED,
  • DENIED_DUE_TO_ONLY_INTERNAL_CALLS_ENABLED,
  • DENIED_DUE_TO_BLACK_LISTED,
  • DENIED_NOT_IN_WHITE_LIST,
  • DENIED_DUE_TO_NOT_WORK_TIME,
  • DENIED_DUE_TO_UNKNOWN_NUMBER,
  • DESTINATION_BUSY,
  • CANCELLED_BY_PICKUP

Метод возвращает:

Получение файла записи разговора

GET /call-records/file{?filename}

Запрос позволяет получить файл записи разговора.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
filename required Имя файла записи разговора String

Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/call-records/file?filename=2022-07-15%2F165787002922476116'
В случае успеха скачивается файл формата .mp3

Метод возвращает:

Объект не найден
    "details": "Record not found by filename",
    "message": "Object not found"

Получение транкрибированного текста записей разговоров

GET /call-records/file/stt{?filename}

Запрос позволяет получить текст транскрибации записи разговоров.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
filename required Имя файла записи разговора String

Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/call-records/file/stt?filename=2022-08-19%252F166243421852679930'
Пример ответа
[ {
"channel": "B",
"startTime": 0.3,
"endTime": 1.07998,
"word": "информируем"
}, {
"channel": "B",
"startTime": 1.08,
"endTime": 1.26,
"word": "что"
}, {
"channel": "B",
"startTime": 1.26,
"endTime": 1.68,
"word": "разговор"
}, {
"channel": "A",
"startTime": 4.77,
"endTime": 5.29985,
"word": "двенадцать"
}, {
"channel": "A",
"startTime": 5.4,
"endTime": 5.64,
"word": "лет"
}
]

Метод возвращает:

Объект не найден
{
    "details": "Transcribation not found for filename",
    "message": "Object not found"
}

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

Параметр строки запроса Описание Тип данных
channel Автор фразы: вызывающий или принимающий вызов абонент String enum: “A”, “B”
startTime Время начала фразы Number
endTime Время окончания фразы Number
word Фраза String

Автоматическая переадресация звонков на персонального менеджера (выделенного сотрудника)

Получение списка менеджеров

GET /managers

Запрос позволяет получить список менеджеров компании.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String
Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https:/ats2.t2.ru/crm/openapi/managers'
Пример ответа
[
    {
        "id": 26,
        "employeeId": 440,
        "companyId": 391,
        "name": "r",
        "customers": [
            {
                "id": 92,
                "realNumber": "79081581621",
                "companyName": "мммм",
                "info": "специалист",
                "isVip": false
            },
            {
                "id": 73,
                "realNumber": "79518045856",
                "companyName": "P&G",
                "isVip": false
            },
            {
                "id": 449,
                "realNumber": "string",
                "companyName": "string",
                "info": "string",
                "isVip": true
            }
        ],
        "handleAllCustomers": false
    }
]

Запрос возвращает список JSON объектов «Менеджер».

Метод возвращает:

Получение менеджера по ID

GET / managers/{id}

Запрос позволяет получить данные о менеджере компании по id.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
id required ID менеджера long
Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/managers/26'
Пример ответа
{
    "id": 26,
    "employeeId": 440,
    "companyId": 391,
    "name": "r",
    "customers": [
        {
            "id": 92,
            "realNumber": "79081581621",
            "companyName": "мммм",
            "info": "специалист",
            "isVip": false
        },
        {
            "id": 73,
            "realNumber": "79518045856",
            "companyName": "P&G",
            "isVip": false
        },
        {
            "id": 449,
            "realNumber": "string",
            "companyName": "string",
            "info": "string",
            "isVip": true
        }
    ],
    "handleAllCustomers": false
}

Метод возвращает:

  • HTTP 200 OK

Запрос возвращает JSON объект «Менеджер».

Менеджер не найден по ID
{
    "details": "Object not found",
    "message": "Object not found"
}

Создание менеджера

POST /managers

Запрос позволяет добавить менеджера компании.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
manager required Объект класса "Менеджер" Менеджер
Пример запроса
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: QwErTy' -d '{ \ 
   "companyId": 1, \ 
   "customers": [ \ 
     { \ 
       "clientId": 1, \ 
       "companyId": 1, \ 
       "companyName": "test", \ 
       "id": 1, \ 
       "info": "test", \ 
       "isVip": true, \ 
       "name": "Ivanov", \ 
       "realNumber": "8809889666" \
        } \
    ], \ 
   "employeeId": 2, \ 
   "handleAllCustomers": true, \ 
   "id": 45, \ 
   "name": "Petrov" \
}' 'https://ats2.t2.ru/crm/openapi/managers' 

Метод возвращает результат сохранения:

  • SUCCESS - успешно;

  • MANAGER_HANDLING_ALL_CUSTOMERS_ALREADY_EXISTS - менеджер с флагом handleAllCustomers=true уже есть в системе;

  • *CUSTOMER_ALREADY_ASSIGNED - абонент(ы) уже обрабатываются другим менеджером.

Редактирование менеджера

PUT /managers

Запрос позволяет изменить данные о менеджере.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
manager required Объект класса "Менеджер" Менеджер
Пример запроса
curl -X PUT --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: QwErTy' -d '{ \ 
   "companyId": 0, \ 
   "customers": [ \ 
     { \ 
       "clientId": 0, \ 
       "companyId": 0, \ 
       "companyName": "string", \ 
       "id": 0, \ 
       "info": "string", \ 
       "isVip": true, \ 
       "name": "string", \ 
       "realNumber": "string" \
        } \
    ], \ 
   "employeeId": 0, \ 
   "handleAllCustomers": true, \ 
   "id": 0, \ 
   "name": "string" \
}' 'https://ats2.t2.ru/crm/openapi/managers' 

Метод возвращает результат сохранения:

  • SUCCESS - успешно;

  • MANAGER_HANDLING_ALL_CUSTOMERS_ALREADY_EXISTS - менеджер с флагом handleAllCustomers=true уже есть в системе;

  • CUSTOMER_ALREADY_ASSIGNED - абонент(ы) уже обрабатываются другим менеджером;

Коды ответа:

В случае если менеджер не найден по ID или EmployeeId (details не приходит от pbx)
{
    "details": "Object not found",
    "message": "Object not found"
}

Удаление менеджера

DELETE /managers/{id}

Запрос позволяет удалить менеджера по id.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
id required ID менеджера для удаления long

Пример запроса
curl -X DELETE --header 'Accept: */*' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/managers/26'
Метод возвращает:

В случае если менеджер не найден
{
    "details": "Object not found",
    "message": "Object not found"
}

Черный список

Занесение номера в черный список

POST /blacklist

Запрос позволяет занести номер в черный список.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
msisdn required Номер телефона для занесения в черный список в формате 7XXXXXXXXXX String

Пример запроса
curl -X POST --header 'Content-Type: html/text' --header 'Accept: application/json' --header 'Authorization: QwErTy' -d '79998887766' 'https://ats2.t2.ru/crm/openapi/blacklist'
Метод возвращает:

  • SUCCESS - успешное занесение

  • DUPLICATE_BLACK_LIST_NUMBER - номер уже в списке

Удаление номера из черного списка

DELETE /blacklist/by-msisdn/{msisdn}

Запрос позволяет удалить номер из черного списка.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String

Параметры строки запроса

Параметр строки запроса Обязательность Описание Тип данных
msisdn required Номер телефона для удаления из черного списка String
Пример запроса
curl -X DELETE --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/blacklist/by-msisdn/77473370262'

Метод возвращает:

  • SUCCESS - успешное удаление

Удаление всех номеров из черного списка

DELETE /blacklist/all

Запрос позволяет удалить все номера из черного списка.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String
Пример запроса
curl -X DELETE --header 'Accept: application/json' --header 'Authorization: 5645645' 'https://ats2.t2.ru/crm/openapi/blacklist/all'

Метод возвращает:

  • SUCCESS - успешное удаление

Получение всего черного списка

GET /blacklist

Запрос позволяет получить все номера из черного списка.

Параметры header

Параметр строки запроса Обязательность Описание Тип данных
Authorization required Access token String
Пример запроса
curl -X GET --header 'Accept: application/json' --header 'Authorization: QwErTy' 'https://ats2.t2.ru/crm/openapi/blacklist'
Пример ответа
[
    {
        "id": 10622,
        "number": "79023581212",
        "sourceType": "MANUAL"
    },
    {
        "id": 10700,
        "number": "79998889988",
        "sourceType": "MANUAL"
    }
]

Метод возвращает:

  • HTTP 200 OK

Метод возвращает список JSON объектов «Элемент черного списка».

Форматы обьектов

Формат JSON объекта "Менеджер"

Пример объекта
{
    "id": 26,
    "employeeId": 440,
    "companyId": 391,
    "name": "r",
    "customers": [
        {
            "id": 92,
            "realNumber": "79081581621",
            "companyName": "мммм",
            "info": "специалист",
            "isVip": false
        },
        {
            "id": 73,
            "realNumber": "79518045856",
            "companyName": "P&G",
            "isVip": false
        },
    ],
    "handleAllCustomers": false
}
Параметр Описание Тип данных
customers Массив клиентов Array[Customer]
companyId ID клиента integer
employeeId  ID номера, зарегистрированного в АТС (параметр берется из ответа на запрос на получение списка сотрудников компании) integer
handleAllCustomers флаг, указывающий, обрабатывает ли менеджер вызовы от всех абонентов (true false)
id ID менеджера integer
name Имя менеджера string

Customer

Параметр Описание Тип данных
сompanyName название компании клиента string
id ID клиента integer
info информация о клиенте string
isVIP признак «VIP-клиент» (true false)
name ФИО клиента string
realNumber номер телефона клиента string

Данный JSON возвращается в GET запросах, а также используется для POST и PUT запросов. В PUT запросе поле \"id\" обязательно, в POST он должен отсутствовать.

Формат JSON объекта "Элемент черного списка"

Пример объекта
    {
        "id": 10622,
        "number": "79023581212",
        "sourceType": "MANUAL"
    }
Параметр Описание Тип данных
id id номера телефона в черном списке integer
Number номер телефона в черном списке integer
sourceType источник добавления, может принимать следующие значения: FILE – если номер был добавлен через интерфейс АТС из файла; MANUAL – если номер был добавлен вручную string

Формат JSON объекта «Сотрудники»

Пример объекта
    {
        "employeeId": 433,
        "name": "Артем",
        "fullNumber": "79081560008",
        "email": "asd@asd.ru"
    }
Параметр Описание Тип данных
email электронная почта string
employeeId ID номера, зарегистрированного в АТС integer
fullNumber федеральный номер string
groupName отдел string
name имя string
shortNumber короткий номер string
surname фамилия string

Коды ответов

HTTP 403. Ошибка авторизации

Отсутствует либо пустой Authorization header
{
    "details": "Authorization header required",
    "message": "Forbidden"
}
Токен не актуален, так как был обновлен ранее
{
    "details": "The token has already been updated",
    "message": "Forbidden"
}
Токен просрочен
{
    "details": "The token is expired",
    "message": "Forbidden"
}
Не удалось распарсить токен
{
    "details": "Bad token",
    "message": "Forbidden"
}
Указан accessToken вместо refreshToken и наоборот
{
    "details": "Invalid token type",
    "message": "Forbidden"
}

HTTP 400. Ошибка в запросе

Задан некорректный параметр
{
    "details": "Bad request",
    "message": "Wrong parameter start"
}
Указанный параметр отсутствует в запросе
{
    "details": "Required request parameter 'name' for method parameter type Type is not present",
    "message": "Some of fields empty"
}
Задан пустой параметр
{
    "details": "Required request parameter 'name' for method parameter type Type is present but converted to null",
    "message": "Some of fields empty"
}