Название |
Тип |
Обязательный |
Допустимые значения |
Описание |
access_token |
string |
да |
|
Ключ сессии аутентификации |
user_id |
number |
нет |
|
Уникальный идентификатор пользователя клиента агента от имени которого делается запрос
Является обязательным для агента Для получения списка пользователей клиента необходимо использовать метод "get.customer_users"
|
calls |
array |
да |
|
Список звонков. Максимально 500 |
ext_id |
string |
да |
|
Уникальный идентификатор звонка в вашей системе.
Если в системе уже есть успешно загруженный звонок или уже есть 3 попытки ошибочной загрузки звонка с данным ext_id, то данный звонок будет игнорирован.
|
direction |
enum |
нет |
in - входящий звонок
out - исходящий звонок
|
Направление звонка
Значение по умолчанию 'in'
|
calling_phone_number |
string |
да |
E164. Если direction = in может быть ""
|
Номер звонящего |
called_phone_number |
string |
да |
E164. Если direction = out может быть ""
|
Номер куда звонили |
start_time |
iso8601 |
да |
YYYY-MM-DD hh:mm:ss
|
Дата и время начала сессии звонка
|
finish_time |
iso8601 |
да |
YYYY-MM-DD hh:mm:ss
|
Время окончания сессии звонка. Не может быть меньше чем start_time
|
is_lost |
boolean |
да |
|
Признак, что звонок потерянный или успешный |
is_transfer |
boolean |
нет |
|
Значение по умолчанию `false`. Признак, был ли трансфер в сессии звонка
Порядок разговора сотрудников определяется в параметрах wav_records и mp3_records
|
wait_duration |
number |
нет |
|
Длительность ожидания абонента до первого разговора с сотрудником. Значение в секундах. |
talk_duration |
number |
нет |
|
Длительность разговора - от момента первого разговора абонента с сотрудником до окончания разговора с последним сотрудником. Значение в секундах |
visitor_session_id |
number |
нет |
|
Уникальный идентификатор сессии посетителя полученной из CoMagic. Параметр нужен, если требуется аналитика рекламных кампаний. |
campaign_id |
number |
нет |
|
Уникальный идентификатор рекламной кампании в CoMagic.
Параметр игнорируется, если заполнен visitor_session_id
|
source_id |
number |
нет |
|
Уникальный идентификатор источника. Возможно передать только неудаленный источник в разрезе клиента. Если передан visitor_session_id , то определим source_id по параметрам сессии.
|
site_id |
number |
нет |
|
Уникальный идентификатор сайта в CoMagic Параметр игнорируется, если заполнен visitor_session_id или called_phone_number принадлежит другому сайту.
|
comment |
string |
нет |
|
Комментарий к звонку. Можно указывать название сервиса или формы, которые сгенерировали звонок. |
Уведомление об обработке звонка |
callback |
object |
нет |
|
Уведомление об обработке звонка
Формат уведомления JSON
|
url |
string |
да |
|
http/https адрес на которые будет отправлено уведомление об успешной обработке звонка.
|
events |
array |
да |
processed - переданный звонок обработан успешно
in_process - звонок в процессе обработки
error - ошибка обработки звонка
|
Какие уведомления об обработке звонка получать
|
Теги звонка |
tags |
array |
нет |
|
Теги звонка |
tag_id |
number |
нет |
|
Уникальный идентификатор тега в системе CoMagic |
tag_name |
string |
да |
|
Название тега. Ищем по названию тег в нашей системе, если не нашли, то создаем и ставим его на звонок. Если нашли, то ставим найденный тег на звонок. Поиск чувствительный к регистру. Для простановки тега "Продажа" необходимо использовать метод "set.tag_sales"Игнорируется, если заполнен tag_id
|
Файлы разговора для речевой аналитики |
wav_records |
array |
нет |
|
Файлы разговора для речевой аналитики
Возможно передать только если подключен компонент "Речевая аналитика звонков".
Из wav-файлов автоматически создаются mp3-записи для прослушивания в личном кабинете
|
employee_id |
number |
нет |
|
Уникальный идентификатор сотрудника в системе CoMagic |
employee_name |
string |
да |
|
Название сотрудника (ФИО) Ищем сотрудника по названию (ФИО) в нашей системе, если не нашли, то создаем и связываем его со звонком. Если нашли, то связываем его со звонком. Поиск не чувствительный к регистру. Игнорируется, если заполнен employee_id
|
employee_channel |
enum |
да |
left - левый канал
right - правый канал
|
Указывает в каком канале находится сотрудник
Значения только left или right
|
record_url |
string |
да |
|
Адрес по которому можно скачать файл разговора. Ожидаем только https. |
Файлы разговора для прослушивания в личном кабинете |
mp3_records |
array |
нет |
|
Файлы разговора для прослушивания в личном кабинете.
Запрещено передавать, если заполнен параметр wav_records
|
employee_name |
string |
нет |
|
Название сотрудника (ФИО)Ищем сотрудника по названию (ФИО) в нашей системе, если не нашли, то создаем и связываем его со звонком. Если нашли, то связываем его со звонком. Поиск не чувствительный к регистру. Игнорируется, если заполнен employee_id
|
employee_id |
number |
нет |
|
Уникальный идентификатор сотрудника в системе CoMagic |
record_url |
string |
да |
|
Адрес по которому можно скачать файл разговора |
Копировать
{
"jsonrpc": "2.0",
"id": "number",
"method": "upload.calls",
"params": {
"access_token": "string",
"user_id": "number",
"calls": [
{
"callback": {
"url": "string",
"events": [
]
},
"ext_id": "string",
"direction": "enum",
"calling_phone_number": "string",
"called_phone_number": "string",
"start_time": "iso8601",
"finish_time": "iso8601",
"is_lost": "boolean",
"is_transfer": "boolean",
"visitor_session_id": "number",
"site_id": "number",
"campaign_id": "number",
"source_id": "number",
"wait_duration": "number",
"talk_duration": "number",
"comment": "string",
"tags": [
{
"tag_id": "number",
"tag_name": "string"
}
],
"wav_records": [
{
"employee_channel": "enum",
"employee_name": "string",
"employee_id": "number",
"record_url": "string"
}
],
"mp3_records": [
{
"employee_name": "string",
"employee_id": "number",
"record_url": "string"
}
]
}
]
}
}
### JSON структура ответа
Копировать
{
"jsonrpc": "2.0",
"id": "number",
"result": {
"data": {
"success": "true"
}
}
}
### JSON структура о статусе обработки
Копировать
{
"ext_id": "string",
"call_session_id": "number",
"status": "enum",
"timestamp": "number",
"error_message": "string",
"error_code": "enum"
}
### Пример для речевой аналитики, загрузка звонка абонента с несколькими сотрудниками одним wav-файлом
Клиент загружает звонок в котором был трансфер и разговор абонент с несколькими сотрудниками.
Копировать
{
"jsonrpc": "2.0",
"id": "number",
"method": "upload.calls",
"params": {
"access_token": "string",
"calls": [
{
"ext_id": "test1",
"direction": "in",
"calling_phone_number": "89262444397",
"called_phone_number": "84955140576",
"start_time": "2019-07-01 12:00:00",
"finish_time": "2019-07-01 12:00:30",
"is_lost": false,
"is_transfer": true,
"wait_duration": 10,
"talk_duration": 20,
"tags": [
{
"tag_name": "Целевой"
},
{
"tag_name": "Тест"
}
],
"wav_records": [
{
"employee_channel": "left",
"employee_name": "Иван Васильевич",
"record_url": "https://test.ru/shhgad-adjjsdf-ytrh"
},
{
"employee_channel": "right",
"employee_name": "Александр Васильевич",
"record_url": "https://test.ru/shhgad-adjjsdf"
}
]
}
]
}
}
### Пример для речевой аналитики, загрузка звонка абонента с сотрудником одним wav-файлом
Клиент загружает звонок, в котором разговаривал абонент с одним сотрудником.
Копировать
{
"jsonrpc": "2.0",
"id": "number",
"method": "upload.calls",
"params": {
"access_token": "string",
"calls": [
{
"ext_id": "test1",
"direction": "in",
"calling_phone_number": "89262444397",
"called_phone_number": "84955140576",
"start_time": "2019-07-01 12:00:00",
"finish_time": "2019-07-01 12:00:30",
"is_lost": false,
"wait_duration": 10,
"talk_duration": 20,
"tags": [
{
"tag_name": "Целевой"
},
{
"tag_name": "Тест"
}
],
"wav_records": [
{
"employee_channel": "left",
"employee_name": "Иван Васильевич",
"record_url": "https://test.ru/shhgad-adjjsdf-xxxx"
}
]
}
]
}
}
### Пример для сквозной аналитики, загрузка звонков от стороннего коллтрекинга
Копировать
{
"jsonrpc": "2.0",
"id": "number",
"method": "upload.calls",
"params": {
"access_token": "string",
"calls": [
{
"ext_id": "test1",
"direction": "in",
"calling_phone_number": "89262444397",
"called_phone_number": "84955140576",
"start_time": "2019-07-01 12:00:00",
"finish_time": "2019-07-01 12:00:30",
"is_lost": false,
"campaign_id": 435,
"source_id": -1,
"site_id": 24,
"tags": [
{
"tag_name": "Целевой"
},
{
"tag_name": "Тест"
}
],
"mp3_records": [
{
"record_url": "https://test.ru/shhgad-adjjsdf-xxxx"
}
]
}
]
}
}
### Пример для сквозной аналитики, загрузка звонков от формы обратного звонка
Копировать
{
"jsonrpc": "2.0",
"id": "number",
"method": "upload.calls",
"params": {
"access_token": "string",
"calls": [
{
"ext_id": "test1",
"direction": "in",
"calling_phone_number": "89262444397",
"called_phone_number": "84955140576",
"start_time": "2019-07-01 12:00:00",
"finish_time": "2019-07-01 12:00:30",
"is_lost": false,
"visitor_session_id": 435,
"tags": [
{
"tag_name": "Целевой"
},
{
"tag_name": "Тест"
}
],
"mp3_records": [
{
"record_url": "https://test.ru/shhgad-adjjsdf-xxxx"
}
]
}
]
}
}
### Пример уведомления о статусе обработки звонка
Копировать
{
"ext_id": "test1",
"call_session_id": "1564545",
"status": "processed",
"timestamp": "1562156217"
}
### Список возвращаемых ошибок
| Параметр | Значение |
| :------------ | :------------- |
| max_file_size_download_error | Превышен максимальный размер файла. На текущий момент - 50 Мб. |
| decode_error |Не смогли открыть файл разговора, отсутствуют первые байты в файлах mp3 - ID3 и wav - RIFF или при процессе декодирования возникла ошибка. |
| wav_min_duration_processing_error | Скаченный wav-файл короче 16 секунд. |
| wav_channels_processing_error | Скаченный wav-файл не содержит 2 канала.|
| wav_processing_error | Ошибка при обработке wav-файла при кодирования файла к нужным параметрам.|
| connection_download_error | Ошибка при подключении к серверу. Проблема с сетью.|
| http_status_download_error | Сервер с которого скачиваем файл ответил не 200.|
| http_content_type_download_error | Content-Type не соответствует спецификации.|
| timeout_download_error | Очень долго скачивался файл или очень долго происходило соединение с сервером. Максимальное время - 30 секунд|
Смотрим раздел ["Список ошибок для методов с глаголом create"](../index.md#_changeErrors)