0% нашли этот документ полезным (0 голосов)
87 просмотров40 страниц

Skorozvon API

Документ описывает REST API для работы с аккаунтами, лидами, звонками и отчетами в системе Скорозвон. Он включает информацию о методах авторизации, форматах запросов и ответов, а также структуре данных для различных ресурсов. Также представлены примеры использования API и параметры для работы с настраиваемыми полями и сценариями.

Загружено:

pomiro2000
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
87 просмотров40 страниц

Skorozvon API

Документ описывает REST API для работы с аккаунтами, лидами, звонками и отчетами в системе Скорозвон. Он включает информацию о методах авторизации, форматах запросов и ответов, а также структуре данных для различных ресурсов. Также представлены примеры использования API и параметры для работы с настраиваемыми полями и сценариями.

Загружено:

pomiro2000
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
Вы находитесь на странице: 1/ 40

Содержание

REST API
● Авторизация
● Формат ответа
● Аккаунт
● Лиды
● Результаты работы
● Звонки
● Настраиваемые поля
● Сценарии
● Результаты сценариев
● Список проектов
● Статистика по проекту
Отчеты
● Параметры запроса
○ Описание объекта Filter
● Пример тела запроса
● Структура ответа
○ Структура записи
○ Описание записи
■ Описание объекта Durations
■ Описание объекта User
■ Описание объекта Organization
■ Описание объекта Lead
■ Описание объекта Scenario
■ Описание объекта ScenarioResultGroup
■ Описание объекта MainLead
■ Описание объекта Event
■ Описание объекта СallProject
■ Описание объекта Responsible
● Пример запроса с помощью утилиты CURL
● Пример ответа
Webhooks
Виджет
REST API
REST API позволяет получать информацию о вашем аккаунте, лидах (контактах), звонках
и записях разговоров.
API доступно по протоколу HTTPS по url
https://app.skorozvon.ru/api/v2

Авторизация
Для авторизации запросов используется протокол OAuth 2.0.
При взаимодействии сервер-сервер, ключ авторизации можно получить с помощью
режима “Password Credentials”.
Необходимые реквизиты для авторизации можно получить на странице
https://app.skorozvon.ru/#settings/integration/api.

Пример запроса ключа авторизации с использованием утилиты curl


curl https://app.skorozvon.ru/oauth/token \
-X POST \
-F grant_type="password" \
-F username="e-mail пользователя" \
-F api_key="API-ключ" \
-F client_id="ID приложения" \
-F client_secret="Ключ приложения"

В ответ на запрос придет JSON-документ. Необходимо извлечь из него access_token.


Полученный access_token необходимо подставлять в запросы, в заголовок Authorization
или в качестве параметра access_token.
Использовать access_token в качестве параметра можно только для запросов методами
GET и DELETE. Для запросов POST, PUT и PATCH возможна авторизация только через
заголовок Authorization.

Пример с заголовком
curl https://app.skorozvon.ru/api/v2/leads \
-H "Authorization: Bearer {access_token}"

Пример с параметром
curl
https://app.skorozvon.ru/api/v2/leads?access_token={access_token}

access_token действителен 2 часа. Если взаимодействие предусматривает


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

Пример
curl https://app.skorozvon.ru/oauth/token \
-X POST \
-F grant_type="refresh_token" \
-F refresh_token="{refresh_token}" \
-F client_id="ID приложения" \
-F client_secret="Ключ приложения" \
-H "Authorization: Bearer {access_token}"

Авторизация по постоянному ключу

Данный токен может быть получен через службу поддержки. На текущий момент
применяется только для отчетов .

Для получения данных по конкретному отчету нужно отправить POST запрос с


использованием токена.

Пример
curl https://app.skorozvon.ru/api/reports/calls_total.json \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Key #{endless_token}'

Формат ответа
REST API возвращает ответы на запросы в формате JSON.
Информация о ресурсе содержится в элементе с ключом data

Постраничная навигация
Некоторые из методов API возвращают список ресурсов с информацией для
постраничной навигации, например список звонков и список лидов. Манипуляции со
списками таких ресурсов производятся единообразно

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

Поле Тип По-умолчанию Описание

page integer 1 Номер страницы,


начиная с 1
length integer 10 Количество
ресурсов на
странице (макс. 100)

with_deleted boolean false Выводить


удаленные ресурсы

start_time float Выводить ресурсы,


созданные\изменен
ные\удаленные
после указанной
даты (unixtime)

end_time float Выводить ресурсы,


созданные\изменен
ные\удаленные до
указанной даты
(unixtime)

Параметры ответа
Информация о постраничной навигации возвращается в теле ответа в элементе с ключом
pagination.

Поле Тип Описание

total integer Общее количество


ресурсов

length integer Количество ресурсов на


странице

page integer Номер страницы

total_pages integer Общее количество страниц

Аккаунт
GET /api/v2/account/balance
Возвращает текущий баланс. Доступен только пользователям с ролью администратора.

Параметры запроса
Отсутствуют

Параметры ответа
Поле Тип Описание

data decimal Текущий баланс аккаунта

Лиды
Атрибуты ресурса

Поле Тип Запись Описание

id bigint нет Идентификатор

created_at datetime нет Дата создания

updated_at datetime нет Дата изменения

deleted_at datetime нет Дата удаления

name string да Наименование

comment string да Описание

post string да Должность

city string да Город

region string да Регион

business string да Сфера


деятельности

homepage string да Сайт

emails array<string> да Email

phones array<string> да Телефоны

inn string да ИНН

kpp string да КПП

address string да Адрес

tags array<string> да Список тегов

parent_lead_id bigint да Идентификатор


родительского лида

responsible_id integer доступен Идентификатор


пользователям с ответственного
ролью пользователя
Администратор и
только при создании
лида

external_id string да Идентификатор


лида во внешней
системе

custom_fields object да Настраиваемые


поля( { FIELD_{id}:
значение}, где id -
идентификатор
поля)

GET /api/v2/leads[?page={page}&length={length}...]
Возвращает список контактов с постраничной навигацией. По-умолчанию возвращаются
первые 10 лидов.

GET /api/v2/leads/{id}
Возвращает атрибуты лида

POST /api/v2/leads
Создание лида
Используются атрибуты, приведенные в таблице. Дополнительно доступны:
● bitrix_lead_id (string) - идентификатор лида в Битрикс24. Используется для связки с
существующими лидами в Битрикс24
● call_project_id (bigint) - идентификатор проекта (диалер), в который будет добавлен
лид

Множественные значения в атрибутах email и phones также могут передаваться в виде


строки с запятой в качестве разделителя.

PUT /api/v2/leads/{id}
Обновление лида

DELETE /api/v2/leads/{id}
Удаление лида
Массовая загрузка

POST /api/v2/leads/import
Массовое создание лидов.
Параметры запроса

Поле Тип Описание

targets array<integer> Список идентификаторов


пользователей, которым
будут распределены лиды

tags array<string> Список тегов, которые


будет назначены
создаваемым лидам

call_project_id bigint Идентификатор проекта

data array Список ресурсов Лид

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

Поле Тип Описание

id bigint Идентификатор

state string Состояние загрузки

total_count integer Количество лидов,


переданных в запросе.
Отображается только в
запросах POST

inserted_count integer Количество созданных


лидов. Отображается
только в запросах GET

invalid_count integer Количество лидов, не


загруженных по причине
некорректности номера
телефона. Отображается
только в запросах GET

GET /api/v2/leads/import/{id}
Получение состояния массового создания лидов.
Возможные состояния загрузки (поле state):
● enqueued - загрузка находится в очереди обработки
● processing - создание лидов
● duplicates - дедупликация
● indexing - построение поискового индекса
● loaded - загрузка завершена

GET /api/v2/leads?stored_file_id={id}
Получение списка лидов, созданных через массовую загрузку. По-умолчанию
возвращаются первые 10 лидов. Дополнительно нужно использовать параметры
постраничной навигации.
Чтобы возвращались все загруженные лиды, рекомендуется выполнять запрос, когда
загрузка завершена. Получить состояние загрузки можно методом GET
/api/v2/leads/import/{id}.

Настраиваемые поля

Структура записи LeadField

Поле Тип Описание

id bigint Идентификатор

name string Название поля

lead_type string Тип лида. Доступные


значения: lead, organization

field_type string Тип поля. Доступные


значения: date, multiselect,
select, link, text, textarea,
number, comment

order integer Порядковый номер в списке

system boolean Если true, то поле нельзя


изменять

permissions object<Permission> Настройка прав доступа


для ролей и групп. Если не
установлена, то поле
доступно всем группам и
ролям
options array<LeadFieldOption> Опции для поля. Доступно
для поля с типом
multiselect или select

Permission

Поле Тип Описание

admin object<Setting> Права для администратора

manager object<Setting> Права для менеджера

GROUP_{ID} object<Setting> Права для групп. Групп


может быть несколько, если
есть группы с id, к примеру,
5, 6, то ключи будут
GROUP_5, GROUP_6

Setting

Поле Тип Описание

readonly boolean Если значение true, то поле


доступно для чтения

invisible boolean Если значение true, то поле


не отображается

LeadFieldOption

Поле Тип Описание

label string Название опции

order integer Порядковый номер в списке


Запрос пользовательских полей на аккаунте

GET /api/v2/custom_fields
Возвращает список настраиваемых полей с постраничной навигацией

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

Поле Тип Описание

lead_type string Тип лида. Доступные


значения(см. структуру
LeadField)

field_type string Тип поля. Доступные


значения(см. структуру
LeadField)

Создание настраиваемого поля

POST /api/v2/custom_fields
Возвращает созданное поле

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

Поле Тип Описание

name string Название поля

lead_type string Тип лида. Доступные


значения(см. структуру см.
структуру LeadField)

field_type string Тип поля. Доступные


значения(см. структуру см.
структуру LeadField)

permissions object<Permission> Настройка прав доступа


для ролей и групп. Если не
установлена, то поле
доступно всем группам и
ролям

options array<LeadFieldOption> Доступно для поля с типом


multiselect или select.
Обязательно для
заполнения

Обновление настраиваемого поля

PUT /api/v2/custom_fields/{id}
Возвращает обновленное поле

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

Поле Тип Описание

permissions object<Permission> Настройка прав доступа


для ролей и групп. Если не
установлена, то поле
доступно всем группам и
ролям

options array<LeadFieldOption> Доступно для поля с типом


multiselect или select

Удаление настраиваемого поля

DELETE /api/v2/custom_fields/{id}
Возвращает статус об удалении
Результаты работы
Атрибуты ресурса

Поле Тип Описание

created_at datetime Дата создания

scenario_id bigint Идентификатор сценария

result_id bigint Идентификатор результата

user_id integer Идентификатор


пользователя

call_id bigint Идентификатор звонка

comment string Комментарий

GET /api/v2/leads/{id}/results
Возвращает список результатов работы с постраничной навигацией по лиду,
упорядоченный по убыванию даты создания

POST /api/v2/leads/{id}/results
Добавляет результат работы с лидом

Звонки
Атрибуты ресурса

Поле Тип Описание

id integer Идентификатор

phone string Номер вызываемого


абонента

source string Номер вызывающего


абонента

direction string Направление вызова


(in\out)
params object Пользовательские атрибуты
вызова

lead_id bigint Идентификатор лида

user_id integer Идентификатор


пользователя,
совершившего\принявшего
звонок

started_at datetime Дата\время начала вызова

connected_at datetime Дата\время соединения


вызова

ended_at datetime Дата\время окончания


вызова

reason string Причина завершения


вызова (SIP)

poll_url string URL проверки состояния


вызова

duration integer Длительность вызова, сек

scenario_id bigint Идентификатор сценария в


Скорозвоне

result_id bigint Идентификатор результата


в Скорозвоне

incoming_phone string Входящий номер, на


который поступил вызов

line string Наименование линии


входящего номера

waiting_duration integer Время ожидания


соединения с оператором
при входящем вызове

recording_url string URL получения записи


звонка

call_type string Тип вызова

region string Регион вызываемого


абонента (или
вызывающего абонента при
входящем вызове)

call_project_id bigint Идентификатор проекта


(диалер)

call_project_title string Название проекта

GET /api/v2/calls
Возвращает список вызовов с постраничной навигацией
Для наиболее оптимального времени выполнения запросов рекомендуется фильтровать
вызовы, начиная с заданной даты, используя параметр start_time.

GET /api/v2/calls/{id}
Возвращает атрибуты вызова

GET /api/v2/calls/{id}.mp3
Возвращает запись звонка в формате mp3.
Необходима авторизация с использованием параметра access_token.

Сценарии
Атрибуты ресурса

Поле Тип Описание

id bigint Идентификатор

name string Наименование

system boolean Системный сценарий

GET /api/v2/scenarios
Возвращает список сценариев

POST /api/v2/scenarios
Создание сценария

GET /api/v2/scenarios/{id}
Возвращает атрибуты сценария

PUT /api/v2/scenarios/{id}
Обновление сценария

DELETE /api/v2/scenarios/{id}
Удаление сценария

Результаты сценариев
Атрибуты ресурса

Поле Тип Описание

id integer Идентификатор

name string Наименование

comment string Комментарий

GET /api/v2/scenarios/{id}/results
Список результатов

POST /api/v2/scenarios/{id}/results
Создание результата

GET /api/v2/scenarios/{id}/results/{result_id}
Возвращает атрибуты результата

PUT /api/v2/scenarios/{id}/results/{result_id}
Обновление результата

DELETE /api/v2/scenarios/{id}/results/{result_id}
Удаление результата
Список проектов
Атрибуты ресурса

Поле Тип Описание

id integer Идентификатор

title string Наименование проекта

state string Статус проекта

substate integer Подсостояние проекта

type string Тип:


autoinformer -
автоинформатор
call - стандартный проект

GET /api/v2/call_projects
Список проектов

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

Поле Тип Описание

type string Тип:


autoinformer -
автоинформатор
call - стандартный проект

Статистика по проекту
Атрибуты ресурса

Поле Тип Описание

id integer Идентификатор

title string Наименование проекта

state string Статус проекта


cases_count integer Всего контактов

completed_cases_count integer Количество успешно


обзвоненных контактов

failed_cases_count integer Количество недоступных


контактов

calls_count integer Всего вызовов сделано

users_count integer Количество сотрудников в


проекте

GET /api/v2/call_projects/{id}/statistic
Статистика по проекту
Отчеты

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

Поле Тип По умолчанию Описание

filter object<Filter> {} Фильтрация по


параметрам

selected_fields array<string> Массив колонок для


выгрузки, если не
задан, то
выбираются все
поля

start_time integer Начало интервала в


unixtime, например,
1587636732

end_time integer Конец интервала в


unixtime, например,
1589278332

page integer 1 Номер страницы

length integer 10 Количество


элементов на
странице

Описание объекта Filter

Поле Тип По умолчанию Описание

results_ids array<integer> "all" Массив id


результатов
сценария

scenarios_ids array<integer> "all" Массив id


сценариев
types array<string> "all" Массив типов
звонков, возможные
значения: "outgoing",
"incoming",
"missed", “dialer”,
“all”

users_ids array<integer> "all" Массив id


пользователей

users_emails array<string> "all" Массив emails


пользователей

tags array<string> "all" Массив тегов

Примечание: передать можно либо users_ids, либо users_emails. Если переданы оба
поля, значения выбираются по users_ids
Пример тела запроса

{
'filter' => {
'results_ids' => ,
'scenarios_ids' =>[1,2],
'tags => [ 'tag1', 'tag2'],
'types' => 'all',
'users_ids' => 'all',
}
selected_fields: ["id","organization"]
page: 1
length: 10
start_time: 1586422474
end_time: 1586423103
}

Структура ответа

{
data: [запись_1, запись_2]]
total: число
length: число
page: число
total_pages: число
}

Поле Тип Описание

data array<Object<ReportRecord> Массив записей,


> содержащий записи отчета

total integer Общее количество


ресурсов

length integer Количество ресурсов на


странице

page integer Номер страницы

total_pages integer Общее количество страниц


Структура записи

{
“id”
"started_at"
"region"
"phone"
"call_type"
"duration"
"recording_url"
"source"
"waiting_time"
"waiting_on_line_time"
"terminator"
"cost"
“durations”: {
"without_holding"
"holding"
"billed"
}
"user": {
“id”
"name"
},
"scenario": {
“id”
"name"
},
"organization": {
"id"
"name"
"post"
"business"
"homepage"
"tags"
"inn"
"kpp"
"comment"
"external_id"
"region"
"city"
"address"
},
"lead": {
“id”
"name":
"post"
"phones",
"emails",
"tags"
},
scenario_result: {
“id”
"name"
}
scenario_result_group: {
“id”
"title"
}
main_lead: {
“id”
"name"
"phones"
"responsible": {
“id”
“name”
}
"emails"
},
event: {
“id”, "type", "time", "date", "comment", "responsible", "status"
}
call_project: {
“id”
“title”
}
}
Описание объекта ReportRecord

Поле Тип Описание

id integer id звонка

started_at datetime Дата / время начала вызова

region string Регион вызываемого


абонента (или
вызывающего абонента при
входящем вызове)

call_type string Тип вызова

duration integer Длительность вызова, сек.

recording_url string URL получения записи


звонка

source string Номер вызывающего


абонента

waiting_time integer Время дозвона, сек.

waiting_on_line_time integer Ожидание всего, сек.

terminator string Инициатор завершения


вызова

cost decimal Стоимость

durations object<Durations> Информация о


длительности, сек.

user object<User> Ответственный за звонок

organization object<Organization> Организация

lead object<Lead> Лид

scenario object<Scenario> Сценарий

scenario_result_group object<ScenarioResultGroup Группа сценария


>

main_lead object<MainLead> Главный лид


event object<Event> Событие

call_project object<CallProject> Проект

Описание объекта Durations

Поле Тип Описание

duration_without_holding integer Длит-ть без удержания

holding_duration integer Длит-ть удержания

billed integer Длит-ть (тариф)

Описание объекта User

Поле Тип Описание

id integer id пользователя

name string Имя пользователя

Описание объекта Organization

Поле Тип Описание

id bigint Идентификатор

name string Наименование

post string Должность

business string Сфера


деятельности

homepage string Сайт

tags array<string> Список тегов

inn string ИНН


kpp string КПП

comment string Описание

external_id string Идентификатор


лида во внешней
системе

region string Регион

city string Город

address string Адрес

Описание объекта Lead

Поле Тип Описание

id bigint Идентификатор

name string Наименование

post string Должность

phones array<string> Email

emails array<string> Телефоны

tags array<string> Список тегов

external_id string Идентификатор


лида во внешней
системе

region string Регион

city string Город

address string Адрес

Описание объекта Scenario

Поле Тип Описание

id bigint Идентификатор
name string Наименование

Описание объекта ScenarioResultGroup

Поле Тип Описание

id bigint Идентификатор

name string Наименование

Описание объекта MainLead

Поле Тип Описание

id bigint Идентификатор

name string Наименование

phones array<string> Email

emails array<string> Телефоны

responsible object<Responsible> Ответственный

Описание объекта Event

Поле Тип Описание

id bigint Идентификатор

type string Тип события

time string Время в формате


HH:MM

date string Дата в формате


DD.MM.YYYY

comment string Комментарий

status string Статус

responsible object<Responsible> Ответственный


Описание объекта СallProject

Поле Тип Описание

id bigint Идентификатор

title string Название

Описание объекта Responsible

Поле Тип Описание

id bigint Идентификатор

name string Наименование


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

curl 'https://app.skorozvon.ru/api/reports/calls_total.json'
-H 'Authorization: Bearer #{access_token}'
-H 'Content-Type: application/json' --data-binary '{"length": 5,
"start_time": 1586422474, "end_time": 1586423103, "page": 1,
"selected_fields": "all",
"filter":{"results_ids":"all","scenarios_ids":"all","tags_ids":["tag1","ta
g2"],"types":"all","users_ids":[1,2,3]}}'

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

{
"data":[
{
"id":110,
"started_at":"2020-05-18 13:12:30",
"region":"Свердловская область",
"phone":"+72221113333",
"call_type":"Исходящий",
"duration":4,
"recording_url":"https://app.skorozvon.ru/api/calls/110.mp3",
"source":"+79221413799",
"waiting_time":13,
"waiting_on_line_time":0,
"terminator":"Оператор",
"cost":"0.0",
"durations":{
"without_holding":4,
"holding":0,
"billed":"1.0"
},
"user":{
"id":11356,
"name":"manager1"
},
"organization":{
"id":627307,
"name":"test organization",
"post":"",
"business":"",
"homepage":null,
"tags":"",
"inn":null,
"kpp":null,
"comment":null,
"external_id":null,
"region":"",
"city":"",
"address":""
},
"lead":{
"id":null,
"name":null,
"post":"",
"phones":[

],
"emails":[

],
"tags":"",
"external_id":null,
"region":"",
"city":"",
"address":""
},
"scenario":{
"id":2,
"name":"Стандартный обзвон (лидогенерация)"
},
"scenario_result_group":{
"id":null,
"name":null
},
"main_lead":{
"id":null,
"name":null,
"phones":null,
"responsible":{
"id":null,
"name":null
},
"emails":null
},
"event":{
"id":null,
"type":null,
"time":null,
"date":null,
"comment":null,
"responsible":{
"id":null,
"name":null
},
"status":null
},
"call_project":{
"id":null,
"title":null
}
},
{
"id":111,
"started_at":"2020-05-18 13:12:05",
"region":"Свердловская область",
"phone":"+79990000799",
"call_type":"Исходящий",
"duration":5,
"recording_url":"https://app.skorozvon.ru/api/calls/111.mp3",
"source":"+79990000799",
"waiting_time":15,
"waiting_on_line_time":0,
"terminator":"Оператор",
"cost":"0.0",
"durations":{
"without_holding":5,
"holding":0,
"billed":"1.0"
},
"user":{
"id":11356,
"name":"manager1"
},
"organization":{
"id":627307,
"name":"test orgnanization 2",
"post":"",
"business":"",
"homepage":null,
"tags":"",
"inn":null,
"kpp":null,
"comment":null,
"external_id":null,
"region":"",
"city":"",
"address":""
},
"lead":{
"id":null,
"name":null,
"post":"",
"phones":[

],
"emails":[

],
"tags":"",
"external_id":null,
"region":"",
"city":"",
"address":""
},
"scenario":{
"id":2,
"name":"Стандартный обзвон (лидогенерация)"
},
"scenario_result_group":{
"id":null,
"name":null
},
"main_lead":{
"id":null,
"name":null,
"phones":null,
"responsible":{
"id":null,
"name":null
},
"emails":null
},
"event":{
"id":null,
"type":null,
"time":null,
"date":null,
"comment":null,
"responsible":{
"id":null,
"name":null
},
"status":null
},
"call_project":{
"id":null,
"title":null
}
}
],
"length":2,
"total":2,
"total_pages":1,
"page":1
}
Webhooks

Webhooks - это механизм уведомления внешних систем об изменениях, произошедших в


Скорозвоне. На заданный в системе URL по протоколу HTTP отправляется информация,
связанная с событием.

Отправляются следующие виды событий:


● Сохранение результата звонка (call_result). Содержит информацию о лиде, звонке
и результате звонка
● Сохранение анкеты (form_response). Содержит информацию о лиде, звонке и
заполненных полях анкеты
● Неуспешный обзвон лида по проекту (call_project_case_failed). Содержит
информацию о лиде и проекте

Первая попытка отправки веб-хука происходит сразу после совершения действия.


Если первая попытка не удалась, производятся еще 5 попыток с увеличением интервала:
5 минут, 30 минут, 1 час, 3 часа, 6 часов.
Ошибкой считается любой HTTP-статус ответа на запрос с кодом более 400
(включительно) или таймаут исполнения запроса.

Для корректной обработки повторов на вашей стороне, мы передаем в запросе


HTTP-заголовок Idempotency-Key. Для каждого события он содержит уникальное
значение. Все повторные запросы осуществляются с этим же значением.

Для обеспечения безопасности рекомендуется использовать протокол HTTPS и ключи для


авторизации (могут настраиваться на нашей стороне, например через передачу
HTTP-заголовка Authorization).

Тело запроса представлено в формате JSON.

Атрибуты

Поле Тип Описание

type string Тип события (call_result,


form_response,
call_project_case_failed)

lead object Ресурс Лид

contact object Контактное лицо (ресурс


Лид)
call object Ресурс Звонок

call_result object Результат звонка (при type =


call_result)

form_response object Заполненные поля анкеты


(при type = form_response)

call_project object Атрибуты проекта (при type


= call_project_case_failed)

custom_fields object Настраиваемые поля( {


FIELD_{id}: значение}, где id
- идентификатор поля)

Пример запроса по событию сохранения результата звонка


{
"type": "call_result",
"lead": {
"id": 123456788,
"name": "Организация 1",
"comment": null,
"post": null,
"city": null,
"business": null,
"homepage": null,
"emails": ["[email protected]"],
"inn": null,
"kpp": null,
"created_at": "30.01.2019 09:29:30",
"updated_at": "30.01.2019 10:04:26",
"deleted_at": null,
"parent_lead_id": null,
"tags": [],
"phones": "+7900000000"
},
"contact": {
"id": 123456789,
"name": "Контакт",
"comment": null,
"post": null,
"city": null,
"business": null,
"homepage": null,
"emails": [],
"inn": null,
"kpp": null,
"created_at": "30.01.2019 09:29:31",
"updated_at": "30.01.2019 09:29:31",
"deleted_at": null,
"parent_lead_id": 123456788,
"tags": [],
"address": null,
"phones": "+79000000001"
},
"call": {
"id": 987654321,
"phone": "+7900000000",
"source": "+74997097462",
"direction": "out",
"params": {},
"lead_id": 123456788,
"started_at": "30.01.2019 10:03:50",
"connected_at": "30.01.2019 10:04:27",
"ended_at": "30.01.2019 10:06:08",
"reason": "201 ended by remote side",
"duration": 101,
"scenario_id": 12345,
"result_id": 54321,
"incoming_phone": null,
"recording_url": "https://app.skorozvon.ru/api/calls/987654321.mp3",
"call_type": "outgoing",
"region": "Оренбургская область",
"local_time": "12:52"
},
"call_result": {
"result_id": 54321,
"result_name": "Результат звонка",
"comment": "Комментарий к звонку"
}
}

Пример запроса по событию сохранения анкеты


{
"type": "form_response",
"lead": {
"id": 123456788,
"name": "Организация 1",
"comment": null,
"post": null,
"city": null,
"business": null,
"homepage": null,
"emails": ["[email protected]"],
"inn": null,
"kpp": null,
"created_at": "30.01.2019 09:29:30",
"updated_at": "30.01.2019 10:04:26",
"deleted_at": null,
"parent_lead_id": null,
"tags": [],
"phones": "+7900000000"
},
"contact": {
"id": 123456789,
"name": "Контакт",
"comment": null,
"post": null,
"city": null,
"business": null,
"homepage": null,
"emails": [],
"inn": null,
"kpp": null,
"created_at": "30.01.2019 09:29:31",
"updated_at": "30.01.2019 09:29:31",
"deleted_at": null,
"parent_lead_id": 123456788,
"tags": [],
"address": null,
"phones": "+79000000001"
},
"call": {
"id": 987654321,
"phone": "+7900000000",
"source": "+74997097462",
"direction": "out",
"params": {},
"lead_id": 123456788,
"started_at": "30.01.2019 10:03:50",
"connected_at": "30.01.2019 10:04:27",
"ended_at": "30.01.2019 10:06:08",
"reason": "201 ended by remote side",
"duration": 101,
"scenario_id": 12345,
"result_id": 54321,
"incoming_phone": null,
"recording_url": "https://app.skorozvon.ru/api/calls/987654321.mp3",
"call_type": "outgoing",
"region": "Оренбургская область",
"local_time": "12:52"
},
"form_response": {
"user_id": 12345,
"form_id": 1,
"form_name": "Анкета",
"updated_at": "30.01.2019 10:06:59",
"answers": [
{
"question_id": 1,
"question_name": "Город",
"answer_id": 1,
"answer_values": [
"Екатеринбург"
]
},
{
"question_id": 2,
"question_name": "Адрес",
"answer_id": 2,
"answer_values": [
"г. Екатеринбург, ул. Татищева 49А"
]
}
]
}
}

Пример запроса по событию недозвона по проекту


{
"type": "call_project_case_failed",
"lead": {
"id": 123456788,
"name": "Организация 1",
"comment": null,
"post": null,
"city": null,
"business": null,
"homepage": null,
"emails": ["[email protected]"],
"inn": null,
"kpp": null,
"created_at": "30.01.2019 09:29:30",
"updated_at": "30.01.2019 10:04:26",
"deleted_at": null,
"parent_lead_id": null,
"tags": [],
"phones": "+7900000000"
},
"call_project": {
"id": 123456789,
"title": "Проект обзвона"
}
}
Виджет
Требования к виджету:
Браузер: IE8+, Opera 9+, Firefox *, Safari 4+, Chrome 2+
Adobe Flash Player 11.2+

Пример вставки виджета


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="https://app.skorozvon.ru/assets/widgets/phone.js"></script>
<style>
body {
margin: 0;
padding: 0;
height: auto;
width: auto;
overflow: hidden;
}
</style>
<script type="text/javascript">
Tube.ready = function() {
phoneWidget = new Tube.Widgets.Phone({
el: "#widget"
});
phoneWidget.phoneModel.on('call:started', function(call) {
// обработка события инициализации звонка
});

phoneWidget.phoneModel.on('call:ringing', function(call) {
// обработка события начала дозвона
});

phoneWidget.phoneModel.on('call:connected', function(call) {
// обработка события соединения звонка
});

phoneWidget.phoneModel.on('call:ended', function(call) {
// обработка события завершения звонка
});

/// во всех случаях в аргумент call попадает Backbone-модель


/// объекта звонка. Её атрибуты доступны с помощью метода .get(attr)
/// call.get('lead_external_id') => получить external_id контакта верхнего уровня, которому
совершается звонок
document.getElementById("make_call").addEventListener("click", function() {
phoneWidget.makeCall("+79221234567");
});

phoneWidget.login({
email: "e-mail зарегистрированного пользователя",
api_key: "api-ключ"
});

phoneWidget.show();
}
</script>
</head>
<body>
<div id="widget"></div>
<button id="make_call">Call</button>
</body>
</html>

Вам также может понравиться