Импорт звонков
О методах
Существует 2 метода импорта звонков.
- Пакетный импорт со сторонних площадок;
- Импорт звонков (с привязкой источника по номеру телефона и дате звонка).
Изучите их отличия, чтобы выбрать необходимый для ваших задач.
Первый метод:
- Будет полезен, если звонки проходят не через сайт, а через сторонние площадки, которые самостоятельно фиксируют источник звонка и номера не используются в подмене на сайте;
- Можно передавать кастомные источники звонка без сессии, не привязанные к каким-либо номерам из настроенных пулов в личном кабинете Calltouch;
- Можно передавать звонки пачками;
- Не нужно заранее заводить номера в пулы в личный кабинет Calltouch.
Второй метод:
- Если используете собственные телефонные номера, настроенные в Вашей АТС, для отслеживания источников звонков на сайте, их необходимо завести в наш личный кабинет Calltouch;
- Кастомные источники звонков будут взяты из названия пула, настроенного в личном кабинете Calltouch;
- Один запрос — один звонок.
Пакетный импорт со сторонних площадок
Запрос на импорт
После отправки запроса на импорт звонков, они ставятся в очередь и импортируются в порядке очереди. В ответ на запрос импорта вы получите ID лога очереди импорта, по которому отдельным запросом можно будет узнать результат импорта.
POST:
https://api.calltouch.ru/lead-service/v1/api/call/import
HTTP-заголовки:
- Access-Token — API-ключ
- SiteId — ID ЛК Calltouch
Пример тела запроса
Тело запроса в формате JSON.
{
"calls": [
// Звонок 1
{
"referenceId": "Уникальный ID звонка", "sipCallId": "Уникальный ID звонка из АТС",
"clientPhoneNumber": "Номер телефона клиента",
"callCenterPhoneNumber": "Номер телефона, на который звонит клиент",
"callStartTime": "Дата звонка в формате yyyy-mm-dd hh:mm:ss",
"duration": 120,
"waitingTime": 10,
"status": "successful",
"recordUrl": "Ссылка на запись звонка в формате mp3",
"comment": {
"text": "Комментарий"
},
"addTags": [
{
"tag": "Тег 1"
}
], "manager": "Менеджер",
"customSources": {
"source": "Произвольный источник",
"medium": "Произвольный канал",
"campaign": "Произвольная кампания",
"content": "Произвольное объявление",
"term": "Произвольная ключевая фраза"
}, "customFields": [ {"field": "name", "value": "Вася"}, {"field": "birthday", "value": "1990-01-01"} ],
"sessionId": "ID сессии Calltouch"
},
// Звонок N
...
]
}
Параметры запроса
Параметр | Формат | Обязательный | Описание |
calls | array | Да | Массив звонков. Можно перечислить до 100 звонков за 1 запрос. После отправки запроса на импорт звонков, они ставятся в очередь и импортируются в порядке очереди. В ответ на запрос импорта вы получите ID лога очереди импорта, по которому отдельным запросом можно будет узнать результат импорта. Обязательно. |
calls.referenceId | string | Да |
Уникальный ID звонка. Любые символы, максимум 100.
Необходимо использовать всегда уникальный referenceId для разных запросов. Нельзя повторно загружать звонки с повторным referenceId, даже если ранее загруженный звонок был удален.
|
calls. sipCallId |
string | Нет |
Уникальный ID звонка из АТС. Любые символы, максимум 45.
Необходимо использовать всегда уникальный sipCallId для разных запросов. Нельзя повторно загружать звонки с повторным sipCallId, даже если ранее загруженный звонок был удален.
|
calls. clientPhoneNumber |
string | Да | Номер телефона клиента в 11-значном формате 7xxxxxxxxxx. |
calls. callCenterPhoneNumber |
string | Да | Номер телефона, на который звонит клиент |
calls.callStartTime | string | Да | Дата звонка в формате yyyy-mm-dd hh:mm:ss, например 2020-10-01 02:10:00", |
calls.duration | integer | Да |
Полная длительность звонка в секундах включая ожидание. Обратите внимание, что в ЛК длительность будет показываться, как разница duraton - waitingTime. |
calls.waitingTime | integer | Да | Ожидание в секундах. |
calls.status | string | Да |
Статус звонка. Возможные значения:
|
calls.recordUrl | string | Нет | Ссылка на запись звонка в формате mp3 |
calls.comment.text | string | Нет | Комментарий к звонку. Любые символы, максимум 1000. |
calls.addTags | array | Нет |
Добавление тегов к звонку. Если такие теги уже есть в ЛК, новые не создаются, а используются существующие. Любые символы, максимум 100 в каждом теги. Максимум 100 тегов. Формат: "addTags": [ |
calls.manager | string | Нет | Менеджер, принявший звонок. Любые символы, максимум 50. |
calls.customSources | object | Нет | Произвольные источники звонка. Используются только когда не указан sessionId. Необязательно. Если не указан ни sessionId ни произвольные источники, то звонок создается без источника. |
calls.customSources. source |
string | Да, если указан customSources. | Произвольный источник |
calls.customSources. medium |
string | Да, если указан customSources. | Произвольный канал |
calls.customSources. campaign |
string | Да, если указан customSources. | Произвольная кампания |
calls.customSources. content |
string | Нет | Произвольное объявление |
calls.customSources. term |
string | Нет | Произвольная ключевая фраза |
calls.sessionId | string | Нет |
ID сессии Calltouch. Любые символы, максимум 100. Если не указано, то заявки будет присвоен произвольный источник customSources. Подробнее о получении sessionId в статье: Получение id сессии Calltouch |
calls.customFields | string | Нет |
Данные по пользовательским полям в звонке. Для использования, пользовательские поля необходимо заранее добавить в настройках API ЛК Calltouch. Подробнее в статье. Пользовательские поля могут быть разных типов. Допустимое содержимое для полей каждого типа указано в статье. Формат: "customFields": [ В field передается название пользовательского поля в API, в value передается значение пользовательского поля.
Максимум 20 пользовательских полей. |
Ответ на импорт
Пример ответа
Если валидация всех параметров прошла успешно, то запускается процесс импорта звонков и в ответ отдается ID лога очереди импорта, по которому отдельным запросом можно будет узнать результат импорта.
{
"meta": [],
"data": {
"logId": 471
}
}
Типовые ошибки
Если API-токен не указан, то импорт звонков не выполняется и выводится ошибка:
{
"meta": [],
"data": {
"message": "Ошибка доступа"
}
}
Если API-токен указан не верно, то импорт звонков не выполняется и выводится ошибка:
{
"meta": [],
"data": {
"message": "Ошибка доступа"
}
}
Если в запросе обнаруживаются ошибки валидации, то импорт звонков не выполняется и выводится ошибка:
{
"meta": [],
"data": {
"type": "validationError",
"apiErrorData": null,
"validationErrorData": {
"violations": [
{
"fieldPath": "calls[0].clientPhoneNumber",
"message": "Значение должно быть равно 11 символам."
}
]
}
}
}
Запрос на лог импорта
POST:
https://api.calltouch.ru/lead-service/v1/api/call/import/log?logId={ID лога}
- Access-Token — API-ключ
- SiteId — ID ЛК Calltouch
GET-параметры:
- lodId — ID лога импорта звонков
Пример ответа на лог импорта
{
"meta": [],
"data": {
"calls": [
{
"imported": true,
"referenceId": "5lBNQaPvlR8IKP71", "sipCallId": "asdf-1234-ghk-1234",
"callId": 2319960
}
]
}
}
Параметры ответа
Параметр | Формат | Описание |
data.calls.imported | boolean | Флаг импортирован ли звонок или нет |
data.calls.referenceId | string | ID звонка из API-метода импорта звонков |
data.calls.sipCallId | string | ID звонка из АТС из API-метода импорта звонков |
data.calls.callId | string | ID звонка в Calltouch, может быть null |
Импорт звонков (с привязкой источника по номеру телефона и дате звонка)
Как это работает
Если вы желаете использовать собственные телефонные номера, настроенные в Вашей АТС, для отслеживания источников звонков, Calltouch может с легкостью интегрироваться с ней.
Для настройки интеграции вам необходимо отправить заявку вашему личному аккаунт-менеджеру Calltouch либо на почту info@calltouch.net. Укажите в заявке, что вам необходимо получить логин и токен к АТС Calltouch, чтобы импортировать в нее звонки из своей АТС. Далее мы произведем необходимые настройки с нашей стороны и вышлем вам авторизационные данные (логин и токен), по которым вы сможете отправлять http-запросы в нашу АТС и создавать звонки в статистики.
Таким образом, после завершения звонка на ваш номер, ваша АТС будет должна отправлять http-запрос в наш сервис, содержащий всю информацию о поступившем звонке, а Calltouch на своей стороне будет склеивать эту информацию со своими данными о посетителе на сайте, которому был выделен в этот момент времени номер, на который поступил звонок. Таким образом Calltouch установит источник звонка.
Отправка запроса на импорт звонка в Calltouch
HTTP-запрос
https://ats.calltouch.ru/event-service/platform/{ATS_CODE}/inbound-call
где, {ATS_CODE} - логин АТС в Calltouch, предоставляется по заявке вашему личному аккаунт-менеджеру Calltouch либо на почту info@calltouch.net.
Поддерживаемые методы отправки: GET.
Параметры запроса
Параметр | Описание | Формат / Значение | Обязательный |
model |
Модель обработки вызова. telemirfact — будет произведена попытка найти источник звонка по дате/времени и номеру телефона, который выделялся в этот момент времени для пользователя из заранее настроенного пула. sessionfact — будет произведен поиск источника по переданному ID сессии в API-методе |
telemirfact, sessionfact | Да |
apikey |
API ключ, предоставляется по заявке вашему личному аккаунт-менеджеру Calltouch либо на почту info@calltouch.net.
Это не тот же самый API-ключ, который вы можете получить в настройках API личного кабинета Calltouch.
|
— |
Да |
callid |
Уникальный идентификатор звонка в вашей АТС.
Переданный вами ID звонка из вашей АТС можно впоследствии использовать в параметре callreferenceId API-метода выгрузки звонков.
|
— |
Да |
callerid | Номер вызывающего абонента (АОН). |
— |
Да |
ctSessionId |
ID сессии Calltouch. Пользователь, отправляющий данный запрос, должен заранее получить ID сессии с сайта, для этого используется JS-функция calltracking_params. Подробнее о получении sessionId в статье: Получение id сессии Calltouch |
Целое число | Да, если model=sessionfact |
siteId | ID сайта в Calltouch. | Целое число | Да, если model=sessionfact |
service | В этом параметре вы можете передать то, что будет отображаться в Журнале звонков в качестве номера, на который звонил клиент (или заказывал обратный звонок). | Любые символы, максимум 20. | Да, если model=sessionfact |
phonenumber |
Отслеживаемый номер, на который позвонили (номер, подключенный к Calltouch). Необходимо указывать в международном формате: 7ХХХХХХХХХХ |
— |
Да, если model=telemirfact |
destphonenumber |
Отслеживаемый номер, на который позвонили (номер, подключенный к Calltouch). Это тот же самый номер, который вы отправили в phonenumber выше. Особенности АТС — просто отправляйте его еще раз в этом параметре :) Необходимо указывать в международном формате: 7ХХХХХХХХХХ |
— | Да, если model=telemirfact |
date | Дата/время вызова. | YYYY-MM-DD HH:MI:SS | Да |
duration | Полная длительность вызова, в секундах. |
— |
Да |
waitingtime | Время ожидания ответа оператора, в секундах. | — | Да |
status | Статус завершения вызова. | successful, unsuccessful | Да |
clientdtmf | Тоновые dtmf-сигналы со стороны клиента. Могут быть использованы для тегирования звонков в ЛК. | — | Нет |
operatordtmf | Тоновые dtmf-сигналы со стороны оператора. Могут быть использованы для тегирования звонков в ЛК. |
— |
Нет |
callrecordurl | Ссылка на запись разговора в формате mp3. | http url | Нет |
Создание звонка по номеру телефона клиента и дате/времени звонка
Вы можете создавать звонки в Calltouch по номеру телефона клиента и дате/времени звонка. Для этого используйте параметр model=telemirfact и передавайте соответствующие значения.
Пример заполненных параметров
- model=telemirfact
- apikey=dL9juaKJnm4kSNzDhHIxtgeb9ZCxRoDE
- callid=dfjhvbskdjfvlsdkfjb1233443
- callerid=74955550101
- phonenumber=78126007428
- destphonenumber=78126007428
- date=2019-02-27%2012:03:00
- duration=30
- waitingtime=10
- status=successful
- clientdtmf=567,789
- operatordtmf=123,456
- callrecordurl=https://test.ru/calltouch/mp3/dialup.mp3
Пример HTTP-запроса
https://ats.calltouch.ru/event-service/platform/{ATS_CODE}/inbound-call?model=telemirfact&apikey=dL9juaKJnm4kSNzDhHIxtgeb9ZCxRoDE&callid=dfjhvbskdjfvlsdkfjb1233443&callerid=74955550101&phonenumber=78126007428&destphonenumber=78126007428&date=2019-02-27%2012:03:00&duration=30&waitingtime=10&status=successful&clientdtmf=567,789&operatordtmf=123,456&callrecordurl=https://test.ru/calltouch/mp3/dialup.mp3
Пример JSON-ответа на успешный HTTP-запрос:
При импорте звонков с параметром model=telemirfact
61924734
где числовое значение - это идентификатор HTTP-запроса на стороне АТС Calltouch (техническая информация, вам она не пригодится).
Создание звонка по id сессии
Вы можете создавать звонки в Calltouch по id сессии. Для этого используйте параметр model=sessionfact и передавайте соответствующие значения.
Пример заполненных параметров
- model=sessionfact
- apikey=dL9juaKJnm4kSNzDhHIdfkvj
- callid=dfjh21234245vbskdj245fvdfvdfsv
- callerid=74955550101
- ctSessionID=12312424234
- siteId=6969
- date=2019-02-27%2012:03:00
- duration=30
- waitingtime=10
- status=successful
- clientdtmf=567,789
- operatordtmf=7
- callrecordurl=https://test.ru/calltouch/mp3/dialup.mp3
Пример HTTP-запроса
https://ats.calltouch.ru/event-service/platform/{ATS_CODE}/inbound-call?model=sessionfact&apikey=dL9juaKJnm4kSNzDhHIdfkvj&callid=dfjh21234245vbskdj245fvdfvdfsv&callerid=74955550101&ctSessionId=12312424234&siteId=6969&date=2019-02-27%2012:03:00&duration=30&waitingtime=10&status=successful&clientdtmf=567,789&operatordtmf=7&callrecordurl=https://alftest.ru/calltouch/mp3/dialup.mp3
Пример JSON-ответа на успешный HTTP-запрос:
При импорте звонков с параметром model=sessionfact
{
"success": true,
"eventId": 61924734
}
где, значение true параметра success означает успешное выполнение HTTP-запроса, а в параметре eventId содержится идентификатор HTTP-запроса на стороне АТС Calltouch (техническая информация, вам она не пригодится).
Возможные ошибки HTTP-запроса
1. Не указан токен apikey или указан некорректно.HTTP-код ответа: 403 Forbidden
Тело ответа HTML:
<html>
<head>
<title>Error</title>
</head>
<body>Access Denied</body>
</html>
HTTP-код ответа: 400 Bad Request
Пример тела ответа JSON:
{ "timestamp":1721140404417, "code":"PhoneNotFound", "message":"Номер телефона 7XXXXXXXXXX не найден" }
HTTP-код ответа: 400 Bad Request
Пример тела ответа JSON:
{
"success": false,
"errors": {
"duration": [
"Wrong format"
],
"waitingtime": [
"Missing data for required field"
]
}
}
HTTP-код ответа: 500 Internal Server Error
{
"success": false
}
5. Не найден ID сайта или ID сессии, звонок в котором необходимо создать.
Статус: 400 Bad Request
Тело ответа JSON:
{
"success": false,
"errors": {
"ctSessionId": [
"Сессия 191834719834 не найдена"
], "siteId": [ "Сайт 1223 не найден" ]
}
}
Система баллов API Calltouch
Система баллов API — механизм, регулирующий нагрузку на сервера Calltouch. Для каждого проекта выдается индивидуальное суточное количество баллов За каждый успешно выполненный запрос списываются баллы. Подробнее читайте в статье: Система баллов API Calltouch.
Количество запросов в секунду к API Calltouch ограничено — не более 5 запросов в секунду с одного IP-адреса. Например, если в 1 секунду с одного IP-адреса поступит 11 API-запросов, то 5 выполнятся сразу, а остальные API-запросы завершатся с ошибкой c кодом 429 (Too Many Requests).
- A/B тестирование (раздел «Подключение»)
- Email-трекинг (раздел «Подключение»)
- Отслеживание офлайн конверсии (раздел «Подключение»)
- Подключение к отслеживанию дополнительных доменов (раздел «Подключение»)
- Подмена номеров на AMP-страницах Google (раздел «Подключение»)