# API запрос для добавления звонков

Звонок создается через API endpoint, который вы можете найти в настройках интеграции приложения. Вам нужно сделать POST запрос на этот API endpoint в документе JSON и передать Authorization Token в headers. Authorization Token также можно найти в диалоге настройки интеграции.

**Пример запроса с помощью утилиты curl**

```json

# значение AUTHORIZATION_TOKEN берется из модального диалога интеграции (Токен интеграции)
export AUTHORIZATION_TOKEN="0b23ffc3e579f863288f4462c8..."
# значение INTEGRATION_URL берется из модального диалога интеграции (URL интегрируемого приложения)                                       
export INTEGRATION_URL="https://api.prod1.qolio.ru/api/v1/integrations/c34f637a-..../phone_calls"  

curl --header "Content-Type: application/json" \
     --request POST \
     --header "Authorization: $AUTHORIZATION_TOKEN" \
     --data '{
         "operator_id": "operator@email.com",
         "started_at": "2020-06-21T09:51:13.588Z+03",
         "direction": "incoming",
         "duration": 410.1,
         "client_phone_number": "+375332222453",
         "media_url": "https://file-examples.com/wp-content/uploads/2017/11/file_example_WAV_1MG.wav",
         "uid": "7b2331ca-adcb-4f15-811b-6b6cfddb2baf",
         "client": {
            "id": "client@email.com",
            "company_name": "Test Company",
            "first_name": "John",
            "last_name": "Doe"
         },
         "custom_fields": {
           "opened_at": "2020-06-21T09:51:13.588Z",
           "reopen_count": 5,
           "topic": "Поддержка",
           "sub-topic": "Возобновление доступа"
         }
     }' \
     $INTEGRATION_URL
```

## Описание полей JSON документа

<table><thead><tr><th>Поле</th><th width="213.33333333333331">Тип</th><th>Описание</th></tr></thead><tbody><tr><td>operator_id</td><td>(required) string</td><td>Идентификатор оператора в системе, с которым связан звонок (это может быть email оператора, ID в ActiveDirectory или что-то другое). Звонок добавляется в тот же отдел, к которому относится оператор. Если оператор не определен, звонок не записывается.</td></tr><tr><td>uid</td><td>string</td><td>id звонка в системе. если звонок с таким id уже существует он будет обновлен</td></tr><tr><td>client_phone_number</td><td>string</td><td>Телефонный номер клиента (независимо от direction он будет отображаться как номер клиента)</td></tr><tr><td>direction</td><td>string (incoming / outcoming)</td><td>Направление вызова ("в" или "из" организации)</td></tr><tr><td>duration</td><td>float</td><td>Продолжительность звонка в секундах</td></tr><tr><td>started_at</td><td>(required) string (date-time in iso8601 format)</td><td>Время начала звонка в iso 8601 формате. Параметр является обязательным.</td></tr><tr><td>media_url</td><td>(required) string (url)</td><td>Ссылка, по которой можно получить доступ к записи разговора. Эта ссылка будет передаваться в плеер сервиса DealApp.</td></tr><tr><td>phone_call_chain_uid</td><td>string</td><td>ID цепочки звонков, к которой принадлежит данный вызов</td></tr><tr><td>client</td><td>hash (object)</td><td>Объект, который описывает клиента, с которым совершается звонок</td></tr><tr><td>client.id</td><td>string</td><td>Идентификатор клиента. Объект клиента не создается снова, если у нас уже есть клиент с таким id.</td></tr><tr><td>client.company_name</td><td>string</td><td>Название компании клиента</td></tr><tr><td>client.first_name</td><td>string</td><td>Имя клиента</td></tr><tr><td>client.last_name</td><td>string</td><td>Фамилия клиента</td></tr><tr><td>custom_fields (бывшее metacontent)</td><td>hash (object)</td><td>Поля, которые не входят в стандартную схему Qolio. Поля передаются в виде простого соотношения ключ-значение, где у ключа и значения простой тип (string, integer, date iso8601)</td></tr><tr><td>nps</td><td>float</td><td>Значение NPS коммуникации</td></tr></tbody></table>

## Возможные типы custom-fields

| Тип           | Пример                                                                                      | Описание                                                                 |
| ------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| string        | “city”: “Минск”                                                                             | Используется для строковых значений                                      |
| number        | “index”: 220010                                                                             | Используется для числовых значений (int, float)                          |
| string\_array | “languages”: \[”ru”, “by”, “kz”]                                                            | Используется для массива строковых значений                              |
| string\_url   | “logo\_link”: “<https://static.tildacdn.com/tild3631-3732-4432-b964-653935636664/\\_4.png”> | Используется для ссылок (не выпущено), записывается строковым значением. |
| number\_array | “cars\_index”: \[175, 998, 556]                                                             | Используется для массива числовых значений int, float.                   |
| datetime      | “discount\_started\_at”: “2020-06-21T09:51:13.588Z”                                         | Используется для записи информации о дате.                               |
| boolean       | “is\_active\_discount”: “true”                                                              | Используется для записи значений true false                              |
| duration      | “answer\_time”: 120                                                                         | Используется для записи значений продолжительности в секундах            |

**Вещи, на которые следует обратить внимание:**

* Данные должны передаваться в формате JSON и тип запроса должен быть POST для этого выставьте Header "Content-Type: application/json".
* Данные о времени совершения звонка передаются через поле started\_at, время должно быть в формате ISO 8601 с указанием временной зоны (пример: 2019-08-09T18:31:42\*\*+03\*\* для Москвы или Минска).
* Duration это продолжительность звонка в секундах в формате float.
* Звонок присваивается оператору, значение "ID в интегрируемой системе" (на странице управления сотрудниками) у которого совпадает с полем operator\_id. Звонки для ненастроенных или неактивных пользователей не будут попадать в систему.
