У нас есть REST API. Теперь вы можете интегрировать Инфобот с любым сервисом или продуктом.
Для работы с API в первую очередь нужно получить новый токен на этой странице (в разделе "Настройки" -> "Интеграции" -> "Подключение по API").
Все запросы отправляются следующим образом:
https://api.v2.infobot.pro + URL метода + API токен пользователя
Пример:
https://api.v2.infobot.pro/v1/outgoing_messages/?token=SecretToken
Токен авторизации также можно отправлять в HTTP-заголовке Authorization с префиксом
Bearer
(пробел между Bearer и токеном обязателен).
Тело всех запросов ожидается в формате JSON. Не забывайте передавать HTTP-заголовок
Content-type: application/json
.
Метод позволяет отправить вызов на указанный номер телефона. Звонок может быть отправлен моментально после запроса или может быть запланирован на определенное время и дату.
POST /v1/outgoing_messages/
Параметр | Тип | Описание |
---|---|---|
destination | object | Объект в котором передаются данные адресата - номер телефона, ФИО, пол, дата рождения, email, кастомные переменные. |
phone | string | Входит в объект destination. Номер телефона, на который нужно позвонить в формате Е164; Обязательный параметр! |
first_name | string | Входит в объект destination. Имя адресата. |
middle_name | string | Входит в объект destination. Отчество адресата. |
last_name | string | Входит в объект destination. Фамилия адресата. |
sex | string | Входит в объект destination. Пол адресата. |
string | Входит в объект destination. Email адресата. | |
birthdate | string | Входит в объект destination. Дата рождения адресата. |
delayed_until | datetime | Дата и время отложенного запуска в формате YYYY-MM-DD HH:mm:ss |
scenario_id | int | ID сценария звонка из личного кабинета Инфобот (первый столбец в таблице со списком сценариев). Обязательный параметр (если не указан integration_id) |
callerid_id | int | ID АОНа со страницы со списком номеров из личного кабинета Инфобот (первый столбец в таблице со списком номеров). Обязательный параметр (если не передаётся callerid_group_id) |
callback | string | URL для отправки веб-хуков об изменении статуса звонка |
callerid_group_id | int | ID группы АОН'ов со страницы со списком групп номеров из личного кабинета Инфобот (первый столбец в таблице со списком групп номеров). Обязательный параметр (если не передаётся callerid_id) |
integration_id | int | ID приложения со страницы со списком приложений из личного кабинета Инфобот (первый столбец таблицы со списком приложений) Обязательный параметр (если не передаётся scenario_id) |
contact_id | int | ID контакта, на который будет совершён звонок. Обязательный параметр! (если не используется объект destination). |
time_to_send_start | string | Время для старта звонков в формате HH:mm (используется часовой пояс пользователя, заданный в личном кабинете, либо передаваемый через параметр time_zone, либо происходит автоматическое определение по номеру абонента, если передаётся параметр detect_utc_offset=true). По умолчанию — Europe/Moscow (Москва). Если вызов отправлен до этого времени, то он будет поставлен в очередь до наступления времени указанного в параметре. Данный параметр предназначен для исключения звонков в нерабочее время. Если не использовать этот параметр и параметр “time_to_send_stop“, то дефолтное время отправки будет проставляться с 10:00 до 21:00. |
time_to_send_stop | string | Время для завершения звонков в формате HH:mm (используется часовой пояс пользователя, заданный в личном кабинете, либо передаваемый через параметр time_zone, либо происходит автоматическое определение по номеру абонента, если передаётся параметр detect_utc_offset=true). По умолчанию — Europe/Moscow (Москва). Если вызов отправлен после этого времени, то он будет поставлен в очередь до наступления времени, указанного в параметре time_to_send_start. Данный параметр предназначен для исключения звонков в нерабочее время. |
detect_utc_offset | boolean (true/false) | Автоматическое определение часового пояса абонента. Есть два значения которые принимает этот параметр - true или false. |
detect_voicemail | boolean (true/false) | Детекция голосовой почты при звонке. Есть два значения которые принимает этот параметр - true или false. Если установить этот параметр в true, то система завершит вызов сразу же после определения голосовой почты, а статус звонка будет VOICEMAIL. |
time_zone | string | Временная зона пользователя, по умолчания подставляется часовой пояс Europe/Moscow (Москва). |
campaign_id | int | ID кампании со страницы кампаний из личного кабинета Инфобот (первый столбец в таблице со списком кампаний) |
trunk_id | int | ID SIP транка пользователя (используется при активной услуге "Своя Связь"). |
trunk_group_id | int | Группа sip транков пользователя (используется при активной услуге "Своя Связь"). |
custom_id | int | Присвоить свой ID для звонка, чтобы отслеживать состояние по нему. |
try_count | int | Количество попыток дозвона. Минимум - 1 попытка. |
try_timeout | int | Пауза между попытками дозвона (в секундах). Допустимые значения от 60 до 10799 секунд. |
variables | object | Входит в объект destination. Переменные для используемых в сценарии шаблонов. |
Если одновременно в запросе используются параметр contact_id и phone (элемент массива destination), то при звонке приоритет будет отдан значению phone.
{
"campaign_id": 0,
"callerid_id": 0,
"callerid_group_id": 0,
"contact_id": 0,
"detect_utc_offset": true,
"detect_voicemail": true,
"integration_id": 0,
"trunk_id": 0,
"trunk_group_id": 0,
"try_count": 0,
"try_timeout": 0,
"scenario_id": 0,
"custom_id": "string",
"time_to_send_start": "10:00",
"time_to_send_stop": "20:00",
"time_zone": "Europe/Moscow",
"delayed_until": "2019-08-05 11:41:41",
"destination": {
"phone": "79000000000",
"first_name": "string",
"middle_name": "string",
"last_name": "string",
"sex": "string",
"email": "string",
"birthdate": "string",
"variables": {
"var_1": "string",
"var_2": "string",
"var_3": "string"
}
}
}
{
"data": {
"id": "123",
"type": "outgoing",
"attributes": {
"status": "created",
"custom_id": "string",
"destination": {
"phone": "79000000000",
"first_name": "string",
"middle_name": "string",
"last_name": "string",
"sex": "string",
"email": "string",
"birthdate": "2019-06-11T09:34:25.856Z",
"variables": {
"var_1": "string",
"var_2": "string",
"var_3": "string"
}
},
"time_to_send_start": "10:00",
"time_to_send_stop": "20:00",
"delayed_until": "2019-06-11T09:34:25.856Z",
"try_count": 0,
"try_timeout": 0,
"priority": "medium",
"utc_offset": 10800
},
"relationships": {
"user": {
"id": "123",
"type": "user"
},
"scenario": {
"id": "123",
"type": "scenario"
},
"contact": {
"id": "123",
"type": "contact"
},
"delivery": {
"id": "123",
"type": "delivery"
},
"campaign": {
"id": "123",
"type": "campaign"
},
"callerid": {
"id": "123",
"type": "callerid"
},
"trunk": {
"id": "123",
"type": "trunk"
}
}
}
}
Инфобот возвращает Callback в формате JSON на указанный URL после каждого звонка.
В нем содержится информация по дате и времени звонка, его статусе, продолжительности, стоимости, ссылка на запись звонка, id и custom id (если был указан)
Пример:
{
"id": 594722,
"user_id": "13",
"custom_id": "13",
"status": "answered",
"date": "2020-04-23 19:01:56",
"billsec": "10",
"price": 2.5,
"final": true,
"recording": "https://v2.infobot.pro/recording/594722/2020-04-23-19-01-40 _082867_79308023462_2f528a3b - d7e3 - 4148 - b90e - a1f28b1b6130 "
}
Метод позволяет получить полную информацию об аккаунте пользователя.
GET /v1/profile/?token=
{
"id": "123",
"type": "user",
"attributes": {
"id": 0,
"email": "string",
"new_email": "string",
"time_zone": "string",
"variables": {},
"locale": "string",
"login": "string",
"balance": 0,
"tariff": "string",
"name": "string",
"credit": 0,
"trial": true,
"test_group_id": 0,
"seen_public_offer": true,
"blocked": "not_blocked",
"country_code": "string",
"payment_login": "string",
"tfa": {
"enabled": true,
"confirmed": true
}
}
}
Метод позволяет получить полную информацию о всех АОН'ах пользователя.
GET /v1/callerids/?token=
{
"data": [{
"id": "69",
"type": "callerid",
"attributes": {
"phone": "79266637057"
},
"relationships": {
"scenario": {
"data": null
},
"campaign": {
"data": null
},
"integration": {
"data": null
},
"callerid_groups": {
"data": [{
"id": "2",
"type": "callerid_group"
}]
}
}
},
{
"id": "70",
"type": "callerid",
"attributes": {
"phone": "79266578635"
},
"relationships": {
"scenario": {
"data": null
},
"campaign": {
"data": null
},
"integration": {
"data": null
},
"callerid_groups": {
"data": [{
"id": "7",
"type": "callerid_group"
}]
}
}
}
],
"meta": {
"next": null,
"prev": null,
"page": 1,
"pages": 1,
"last": 1,
"items": 2,
"count": 2
}
}
Метод позволяет получить список сценариев звонка, созданных пользователем в личном кабинете
GET v1/scenarios/?token=
GET v1/scenarios/?page=1&token=
(пагинация по страницам где 1 это первая страница со сценариями)
{
"data": [{
"id": "142",
"type": "scenario",
"attributes": {
"name": "example",
"created_at": "2020-04-02T06:20:23.443Z",
"all_blocks_valid": true,
"subtypes": [{
"name": "before_calls",
"translation": "До звонка",
"interactive": false
},
{
"name": "answereds",
"translation": "После поднятия трубки",
"interactive": true
},
{
"name": "busies",
"translation": "Занято",
"interactive": false
},
{
"name": "no_answers",
"translation": "Нет ответа",
"interactive": false
},
{
"name": "wrong_numbers",
"translation": "Неверный номер",
"interactive": false
},
{
"name": "voice_mails",
"translation": "Голосовая почта",
"interactive": false
},
{
"name": "failed_calls",
"translation": "Ошибка при звонке",
"interactive": false
},
{
"name": "after_calls",
"translation": "После звонка",
"interactive": false
}
]
},
"relationships": {
"vdd": {
"data": [{
"id": "1992",
"type": "blocks/vdd"
}]
},
"sms": {
"data": [{
"id": "2065",
"type": "blocks/sms"
}]
},
"start": {
"data": [{
"id": "1990",
"type": "blocks/start"
},
{
"id": "1991",
"type": "blocks/start"
},
{
"id": "1993",
"type": "blocks/start"
},
{
"id": "1994",
"type": "blocks/start"
},
{
"id": "1995",
"type": "blocks/start"
},
{
"id": "1996",
"type": "blocks/start"
},
{
"id": "1997",
"type": "blocks/start"
},
{
"id": "1998",
"type": "blocks/start"
}
]
}
}
},
"meta": {
"next": null,
"prev": null,
"page": 1,
"pages": 1,
"last": 1,
"items": 1,
"count": 1
}
}
Метод позволяет получить информацию о сценарии звонка
GET v1/scenarios/id сценария/?token=
{
"data": {
"id": "142",
"type": "scenario",
"attributes": {
"name": "Лучший сценарий",
"created_at": "2020-04-02T06:20:23.443Z",
"all_blocks_valid": true,
"subtypes": [{
"name": "before_calls",
"translation": "До звонка",
"interactive": false
},
{
"name": "answereds",
"translation": "После поднятия трубки",
"interactive": true
},
{
"name": "busies",
"translation": "Занято",
"interactive": false
},
{
"name": "no_answers",
"translation": "Нет ответа",
"interactive": false
},
{
"name": "wrong_numbers",
"translation": "Неверный номер",
"interactive": false
},
{
"name": "voice_mails",
"translation": "Голосовая почта",
"interactive": false
},
{
"name": "failed_calls",
"translation": "Ошибка при звонке",
"interactive": false
},
{
"name": "after_calls",
"translation": "После звонка",
"interactive": false
}
]
},
"relationships": {
"vdd": {
"data": [{
"id": "1992",
"type": "blocks/vdd"
}]
},
"sms": {
"data": [{
"id": "2065",
"type": "blocks/sms"
}]
},
"start": {
"data": [{
"id": "1998",
"type": "blocks/start"
},
{
"id": "1997",
"type": "blocks/start"
},
{
"id": "1996",
"type": "blocks/start"
},
{
"id": "1995",
"type": "blocks/start"
},
{
"id": "1994",
"type": "blocks/start"
},
{
"id": "1993",
"type": "blocks/start"
},
{
"id": "1991",
"type": "blocks/start"
},
{
"id": "1990",
"type": "blocks/start"
}
]
}
}
}
}
Метод позволяет получить значение переменных из выполненного звонка.
GET /v1/statistics/variables/message/:call_id?token=
(по ID звонка)
GET /v1/statistics/variables/user/:custom_id?token=
(по custom_id)
GET /v1/statistics/variables/phone/:to?token=
(по номеру телефона)
GET /v1/statistics/variables/phone/:to?token=&page=2
(по номеру телефона с пагинацией)
{
"docs": [{
"id": 91344,
"vars": {
"phone": "79000000000",
"first_name": "тест"
}
},
{
"id": 91352,
"vars": {}
},
{
"id": 91353,
"vars": {}
},
{
"id": 91354,
"vars": {}
},
{
"id": 91355,
"vars": {
"phone": "79000000000",
"first_name": "тест",
"last_name": "тест"
}
},
{
"id": 91356,
"vars": {
"phone": "79000000000",
"first_name": "тест",
"last_name": "тест"
}
},
{
"id": 91359,
"vars": {
"email": null,
"phone": "79000000000",
"first_name": null,
"last_name": null,
"middle_name": null
}
},
{
"id": 91360,
"vars": {
"email": null,
"phone": "79000000000,first_name=Aleksei",
"first_name": null,
"last_name": null,
"middle_name": null
}
},
{
"id": 91361,
"vars": {
"email": null,
"phone": "79000000000",
"first_name": null,
"last_name": null,
"middle_name": null
}
},
{
"id": 91362,
"vars": {
"phone": "79000000000"
}
},
{
"id": 91363,
"vars": {
"phone": "79000000000"
}
},
{
"id": 91369,
"vars": {
"phone": "79000000000"
}
},
{
"id": 91372,
"vars": {}
},
{
"id": 91373,
"vars": {}
},
{
"id": 91374,
"vars": {}
},
{
"id": 91375,
"vars": {}
},
{
"id": 91376,
"vars": {}
},
{
"id": 91377,
"vars": {}
},
{
"id": 91378,
"vars": {
"phone": "79000000000"
}
},
{
"id": 91554,
"vars": {
"phone": "79000000000"
}
},
{
"id": 91555,
"vars": {}
},
{
"id": 91556,
"vars": {
"phone": "79000000000"
}
},
{
"id": 91568,
"vars": {
"email": "support@infobot.pro",
"phone": "79000000000"
}
},
{
"id": 91799,
"vars": {
"phone": "79000000000"
}
},
{
"id": 91988,
"vars": {}
}
],
"totalDocs": 464,
"limit": 25,
"page": 2,
"totalPages": 19,
"pagingCounter": 26,
"hasPrevPage": true,
"hasNextPage": true,
"prevPage": 1,
"nextPage": 3
}
Метод позволяет получить статистику по совершенным вызовам
GET /v1/outgoing_messages/?token=
GET /v1/outgoing_messages/?page=1&token=
(с пагинацией, где 1 номер страницы)
GET /v1/outgoing_messages/id/?token=
(информация о конкретном звонке по его id)
В поле status передается статус произведенного звонка, возможные варианты:
Метод позволяет отменить запланированные звонки
PUT /v1/outgoing_messages/cancel/?token=
Метод позволяет отменить один конкретный звонок (по id звонка)
DELETE /v1/outgoing_messages/:id
Метод позволяет создавать кампанию.
POST /v1/campaigns/?token=
{
"name": "название кампании"
}
{
"data": {
"id": "123",
"type": "campaign",
"attributes": {
"name": "Hilario Langosh",
"created_at": "2019-06-11T09:34:25.856Z"
}
}
}
Метод позволяет получить информацию о кампаниях пользователя
GET /v1/campaigns/?token=
(получение списка кампаний пользователя)
GET /v1/campaigns/id/?token=
(получить информацию о кампании по id)
Метод позволяет редактировать указанную кампанию
PATCH /v1/campaigns/id/?token= (переименовать, ждём name в body)
Метод позволяет получить информацию по финансовым затратам за определенный период
GET /v1/statistics/finance/?token=
Имя | Описание |
---|---|
sort[date] | Сортировка по дате, варианты: asc - по возрастанию, desc - по убыванию |
sort[auto] | Сортировка автоматическая, варианты: asc - по возрастанию, desc - по убыванию |
sort[traffic] | Сортировка по cтоимости звонков, варианты: asc - по возрастанию, desc - по убыванию |
sort[periodic] | Сортировка по стоимости переодических услуг, варианты: asc - по возрастанию, desc - по убыванию |
sort[manual] | Сортировка по стоимости корректировок, варианты: asc - по возрастанию, desc - по убыванию |
sort[sms] | Сортировка по стоимости SMS, варианты: asc - по возрастанию, desc - по убыванию |
sort[pzs] | Сортировка по стоимости ПЗС, варианты: asc - по возрастанию, desc - по убыванию |
sort[voicemail] | Сортировка по стоимости детекции голосовой почты |
sort[block] | Сортировка по стоимости платных блоков в сценариев, варианты: asc - по возрастанию, desc - по убыванию |
sort[summary] | Сортировка по суммарной стоимости, варианты: asc - по возрастанию, desc - по убыванию |
filter[campaign_ids] | Фильтр по кампаниям |
filter[delivery_ids] | Фильтр по рассылкам |
filter[from] | Стартовая дата 00:00 в UTC в формате YYYY-MM-DD |
filter[to] | Конечная дата 23:59 в UTC в формате YYYY-MM-DD |
page | Страница |
perPage | Количество записей на странице |
{
"data": [{
"_id": "2020-04-08",
"date": "2020-04-08",
"auto": 0,
"traffic": 12,
"periodic": 0,
"manual": 0,
"sms": 0,
"pzs": 7,
"voicemail": 0,
"block": 12.5,
"summary": 31.5
},
{
"_id": "2020-04-07",
"date": "2020-04-07",
"auto": 0,
"traffic": 3,
"periodic": 0,
"manual": 0,
"sms": 0,
"pzs": 1,
"voicemail": 0,
"block": 3.9,
"summary": 7.9
},
{
"_id": "2020-04-06",
"date": "2020-04-06",
"auto": 0,
"traffic": 1.5,
"periodic": 0,
"manual": 0,
"sms": 0,
"pzs": 1,
"voicemail": 0,
"block": 1.35,
"summary": 3.85
},
{
"_id": "2020-04-02",
"date": "2020-04-02",
"auto": 0,
"traffic": 34.5,
"periodic": 0,
"manual": 0,
"sms": 0,
"pzs": 12,
"voicemail": 0,
"block": 49,
"summary": 95.5
}
],
"meta": {
"summary": {
"block": {
"sum": 66.75,
"count": 156
},
"traffic": {
"sum": 51,
"count": 716
},
"pzs": {
"sum": 21,
"count": 21
}
},
"page": 1,
"perPage": 25,
"lastPage": 1,
"count": 4,
"items": 4
}
}
Метод для создания новой группы контактов
POST /v1/groups
{
"name": "Группа созданная по API"
}
Метод для создания нового контакта
POST /v1/contacts
{
"email": "vasya@pupkin.ru",
"phone": "79000000000",
"group_ids": [
ID_ГРУППЫ_ИЗ_ПРЕДЫДУЩЕГО_ЗАПРОСА
],
"first_name": "Вася",
"middle_name": "Иванович ",
"last_name": "Пупкин",
"variables": {
"var_1": "абв",
"var_2": "123",
"var_3": "123абв"
}
}
Метод для создания рассылки
/v1/deliveries
{
"callerid_id": ID_АОНа,
"scenario_id": ID_сценария,
"group_id": ID_группы
}
Метод позволяет запустить созданную ранее рассылку
PUT https://api.v2.infobot.pro/v1/deliveries/ID_РАССЫЛКИ
Метод позволяет создать SIP-транк
POST /v1/trunks/?token=
Название параметра | Описание параметра |
---|---|
channels | Количество каналов (линий). Если не знаете - уточните у своего оператора SIP телефонии сколько каналов (SL) он вам дает. |
host | Cервер регистрации SIP аккаунта |
login | Логин SIP аккаунта |
password | Пароль SIP аккаунта |
name | Название транка |
prefixes | Префиксы транка |
{
"name": "Мой транк для звонков",
"login": "my_login",
"password": "my_secret_password",
"host": "my.host.com",
"channels": 0,
"prefixes": [
'79'
],
"trunk_group_ids": [
123
]
}
{
"data": {
"id": "123",
"type": "trunk",
"attributes": {
"name": "string",
"login": "my_login",
"host": "my.host.com",
"channels": 0,
"token": "string",
"prefixes": [
"79"
],
"created_at": "2019-06-11T09:34:25.856Z",
"updated_at": "2019-06-11T09:34:25.856Z",
"status": "REGED",
"server": "string",
"server_description": "string"
},
"relationships": {
"trunk_groups": {
"data": [{
"id": "123",
"type": "trunk_group"
}]
}
}
}
}
Метод используется для получения списка SIP-транков пользователя
GET /v1/trunks/?token=
Метод используется для получения информации об определённом SIP-транке по ID
GET /v1/trunks/:ID/?token=
Метод используется для удаления SIP-транка
DELETE /v1/trunks/:ID/?token=
Метод используется для изменения параметров существующего SIP-транка
PUT /v1/trunks/id/?token=
В сервисе реализовано ограничение (защита) от повторных звонков по API на один и тот же номер. По умолчанию допускается 1 звонок в течение 1 часа на один и тот же номер. Изменить можно в личном кабинете Инфобота в разделе "Настройки" -> "Профиль". Можно установить значение от 5 до 60 минут. Ограничение не распространяется на "встроенные" попытки дозвона, в случае если не дозвонились с первого раза. Ограничение затрагивает именно отдельные запросы на звонок. Ошибка: "Rate limit reached"