Документация по API для v2.infobot.pro

У нас есть REST API. Теперь вы можете интегрировать Инфобот с любым сервисом или продуктом.

Для работы с API в первую очередь нужно получить новый токен на этой странице (в разделе "Настройки" -> "Интеграции" ->  "Подключение по API").


Существуют два типа запросов:

1. Запросы на отправку вызовов и создание кампаний. Результат выдаётся в ответ на POST запрос в формате JSON. 

2. Запросы для получения информации. Данный тип запросов выполняется синхронно, результат выдаётся в ответ на GET запрос в формате JSON.


Все запросы отправляются следующим образом:

 https://api.v2.infobot.pro  + URL метода + API токен пользователя   

Пример:
https://api.v2.infobot.pro/v1/outgoing_messages/?token=jKdirirEHJ1Yp4t...DKxyfgTLgtt


Отправка вызова 

Метод позволяет отправить вызов на указанный номер телефона. Звонок может быть отправлен моментально после запроса или может быть запланирован на определенное время и дату. 

URL метода 

POST /v1/outgoing_messages/?token= 

Body
ПараметрТипОписание 
destinationobjectОбъект в котором передаются данные адресата - номер телефона, ФИО, пол, дата рождения, email, кастомные переменные.
phonestringВходит в объект destination. Номер телефона, на который нужно позвонить в формате Е164; Обязательный параметр!
first_namestringВходит в объект destination.
Имя адресата.
middle_namestringВходит в объект destination. Отчество адресата.
last_namestringВходит в объект destination. Фамилия адресата
sexstringВходит в объект destination.
Пол адресата.
emailstringВходит в объект destination. Email адресата.
birthdatestringВходит в объект destination. Дата рождения адресата.
delayed_untildatetimeДата и время отложенного запуска.
scenario_idintID сценария звонка из личного кабинета
Обязательный параметр! 
callerid_idintАОН (только из списка доступных) обязательный параметр!
(если не выбрана группа АОН'ов).
callbackstringURL для отслеживания изменения статуса сообщения.
callerid_group_idintГруппа АОН'ов (только из списка доступных)
Обязательный параметр! (если не выбран АОН).
integration_id
int
TBA (пока не реализовано).
contact_idintid контакта, на который будет совершён звонок. Обязательный параметр! (если не используется массив destination).
time_to_send_start
Время для старта звонков (используется временная зона пользователя, заданная в личном кабинете. По умолчанию — Москва).
Если вызов отправлен до этого времени, то он будет поставлен в очередь до наступления времени указанного в параметре.
Данный параметр предназначен для исключения звонков в нерабочее время.
Если не использовать этот параметр и параметр “time_to_send_stop“, то дефолтное время отправки будет проставляться с 10:00 до 21:00.
time_to_send_stopstringВремя для завершения звонков (используется временная зона пользователя, заданная в личном кабинете.
По умолчанию — Москва).
Если вызов отправлен после этого времени, то он будет поставлен в очередь до наступления времени, указанного в параметре time_to_send_start
Данный параметр предназначен для исключения звонков в нерабочее время.
detect_utc_offsetboolean (true/false)Автоматическое определение таймзоны адресата.
Есть два значения которые принимает этот параметр - true или false.
detect_voicemailboolean(true/false)Детекция голосовой почты при звонке. Есть два значения которые принимает этот параметр - true или false. 
time_zonestringВременная зона пользователя, по умолчания проставляется часовой пояс по МСК(Europe/Moscow).
campaign_idintId кампании
trunk_idintТокен sip транка пользователя (используется при активной услуге "Своя Связь").
trunk_group_idintГруппа sip транков пользователя (используется при активной услуге "Своя Связь").
custom_idintПрисвоить свой ID для звонка.
try_countintКоличество попыток дозвона.
try_timeoutintПауза между попытками (в сек.) Допустимые значения от 60 до 10799 секунд.
variablesobjectВходит в объект destination. Переменные для используемых в сценарии шаблонов.

(!) Примечание: если одновременно в запросе используются параметр contact_id и phone (элемент массива destination), то при звонке приоритет будет отдан значению phone


Пример запроса

Request

{
    "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": "79008007060",
        "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"
        }
    }
}

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

Response

{
    "data": {
        "id": "123",
        "type": "outgoing",
        "attributes": {
            "status": "created",
            "custom_id": "string",
            "destination": {
                "phone": "79008007060",
                "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

Инфобот возвращает Callback в формате JSON на указанный URL после каждого звонка.

В нем содержится информация по дате и времени звонка, его статусе, продолжительности,

стоимости, ссылка на запись звонка, id и custom id (если был указан)

Пример:

Response

{
    "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 "
}


Получение информации о пользователе (аккаунте)

Метод позволяет получить полную информацию об аккаунте пользователя.

URL метода

GET /v1/profile/?token=

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

Response

{
    "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
        }
    }
}


Получение информации о АОН'ах пользователя

Метод позволяет получить полную информацию о всех АОН'ах пользователя.

URL метода

GET /v1/callerids/?token=

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

Response

{
    "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
    }
}


Получение списка сценариев

Метод позволяет получить список сценариев звонка, созданных пользователем в личном кабинете

URL метода

GET v1/scenarios/?token=

GET v1/scenarios/?page=1&token= (пагинация по страницам где 1 это первая страница

сценариями)

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

Response

{
    "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
        }
    }


Получение информации о сценарии

Метод позволяет получить информацию о сценарии звонка

URL метода

GET v1/scenarios/id сценария/?token=

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

Response

{
    "data": {
        "id": "142",
        "type": "scenario",
        "attributes": {
            "name": "крок 2000",
            "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"

                    }
                ]
            }
        }
    }
}


Получение значения переменных из звонка

Метод позволяет получить значение переменных из выполненного звонка.

URL метода:

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 (по номеру телефона с пагинацией)

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

Response

{
    "docs": [{
            "id": 91344,
            "vars": {
                "phone": "79308023462",
                "first_name": "тест"
            }
        },
        {
            "id": 91352,
            "vars": {}
        },
        {
            "id": 91353,
            "vars": {}
        },

        {
            "id": 91354,
            "vars": {}
        },
        {
            "id": 91355,
            "vars": {
                "phone": "79308023462",
                "first_name": "тест",
                "last_name": "тест"
            }
        },
        {
            "id": 91356,
            "vars": {
                "phone": "79308023462",
                "first_name": "тест",
                "last_name": "тест"
            }
        },
        {
            "id": 91359,
            "vars": {
                "email": null,
                "phone": "79308023462",
                "first_name": null,
                "last_name": null,
                "middle_name": null
            }
        },
        {
            "id": 91360,
            "vars": {
                "email": null,
                "phone": "79308023462,first_name=Aleksei",
                "first_name": null,
                "last_name": null,
                "middle_name": null
            }
        },
        {
            "id": 91361,
            "vars": {
                "email": null,
                "phone": "79308023462",
                "first_name": null,
                "last_name": null,
                "middle_name": null
            }
        },
        {
            "id": 91362,
            "vars": {
                "phone": "79308023462"
            }
        },
        {

            "id": 91363,
            "vars": {
                "phone": "79308023462"
            }
        },
        {
            "id": 91369,
            "vars": {
                "phone": "79308023462"
            }
        },
        {
            "id": 91372,
            "vars": {}
        },
        {
            "id": 91373,
            "vars": {}
        },
        {
            "id": 91374,
            "vars": {}
        },
        {
            "id": 91375,
            "vars": {}
        },
        {
            "id": 91376,
            "vars": {}
        },
        {
            "id": 91377,
            "vars": {}
        },
        {
            "id": 91378,
            "vars": {
                "phone": "79308023462"
            }
        },
        {
            "id": 91554,
            "vars": {
                "phone": "79308023462"
            }
        },
        {
            "id": 91555,
            "vars": {}
        },
        {
            "id": 91556,
            "vars": {
                "phone": "79308023462"
            }
        },

        {
            "id": 91568,
            "vars": {
                "email": "asadov@infobot.pro",
                "phone": "79308023462"
            }
        },
        {
            "id": 91799,
            "vars": {
                "phone": "79308023462"
            }
        },
        {
            "id": 91988,
            "vars": {}
        }
    ],
    "totalDocs": 464,
    "limit": 25,
    "page": 2,
    "totalPages": 19,
    "pagingCounter": 26,
    "hasPrevPage": true,
    "hasNextPage": true,
    "prevPage": 1,
    "nextPage": 3
}


Получить статистику по звонкам

Метод позволяет получить статистику по совершенным вызовам

URL метода

GET v1/outgoing_messages/?token=

GET v1/outgoing_messages/?page=1&token= (с пагинацией, где 1 номер страницы)

GET v1/outgoing_messages/id/?token= (информация о конкретном звонке по его id)

В поле status передается статус произведенного звонка, возможные варианты:

  • created: Создан - звонок создан на бэкенде.
  • restricted: Направление запрещено.
  • blacklisted: В стоп-листе - номер адресата находится в чёрном списке.
  • queued: В очереди - звонок находится в очереди на статус активного.
  • no_funds: Недостаточно средств - у пользователя недостаточно средств для совершения звонка.
  • in_progress: Активный звонок - по указанному номеру адресата сейчас совершается звонок.
  • voicemail: Голосовая почта - адресат не снял/не сбросил трубку, но у него оказалась подключена Голосовая почта.
  • answered: Отвечено - адресат ответил на звонок.
  • busy: Занято - линия адресата оказалась занята другим звонком.
  • no_answer: Нет ответа - адресат на снял/не сбросил звонок и при этом у него не
    была подключена Голосовая почта.
  • cancelled: Сброс - адресат сбросил звонок.
  • incorrect_number: Номер не существует - адресата с указанным номером не
    существует.
  • duplicate: Дубликат - звонок на указанный номер уже осуществляется/осуществлён.
  • failed: Проблема - такой статус возможен например при технических неполадках.
  • paused: Пауза - выполнение звонка приостановлено.
  • scheduled: Запланировано - пользователь может отложить звонок на определённые дату/время.
  • removed: Отменен - звонок был отменён пользователем.


Удаление (отмена) звонков из очереди

Метод позволяет отменить запланированные звонки

URL метода

PUT v1/outgoing_messages/cancel/?token


Удаление (отмена) отдельного звонка

Метод позволяет отменить один конкретный  звонок (по id звонка)

URL метода

DELETE v1/outgoing_messages/:id


Создание и редактирование кампаний

Методы позволяют создавать и редактировать кампании. Получать информацию об уже созданных.

Создать кампанию. В body ждём поле name

URL метода

POST /v1/campaigns/?token=

Пример запроса

Request

{
    "name": "демо"
}

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

Response

{
    "data": {
        "id": "123",
        "type": "campaign",
        "attributes": {
            "name": "Hilario Langosh",
            "created_at": "2019-06-11T09:34:25.856Z"
        }
    }
}


Получение информации о кампаниях

URL метода

GET /v1/campaigns/?token= (получение списка кампаний пользователя)

GET /v1/campaigns/id/?token= (получить информацию о кампании по id)


Редактирование кампании

URL метода

PATCH /v1/campaigns/id/?token= (переименовать, ждём name в body)


Получение финансовой статистики

Метод позволяет получить информацию по финансовым затратам за определенный период

URL метода

GET /v1/statistics/finance/?token=

Список фильтров:

ИмяОписание
sort[date]

Сортировка по дате

Available values : asc, desc

sort[auto]

Сортировка автоматическая

Available values : asc, desc

sort[traffic]

Сортировка по cтоимости звонков

Available values : asc, desc

sort[periodic]

Сортировка по стоимости переодических услуг

Available values : asc, desc

sort[manual]

Сортировка по стоимости корректировок

Available values : asc, desc

sort[sms]

Сортировка по стоимости SMS

Available values : asc, desc

sort[pzs]

Сортировка по стоимости ПЗС

Available values : asc, desc

sort[voicemail]Сортировка по стоимости детекции звонков

Available values : asc, desc
sort[block]

Сортировка по стоимости платных блоков в сценариев

Available values : asc, desc

sort[summary]

Сортировка по суммарной стоимости

Available values : 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Количество записей на странице


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

Response

{
    "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
    }
}


Создание и управление SIP транкамиURL метода

POST /v1/trunks/?token=

Параметры транка:

"channels" — количество каналов (линий). Если не знаете - уточните у своего оператора SIP телефонии сколько SL он вам дает. "host" — сервер транка "login" — логин транка "password" — пароль транка "name" — название транка

prefixes“ - префикс транка

Пример запроса

Request

{
    "name": "123",
    "login": "string",
    "password": "string",
    "host": "my.host.com",
    "channels": 0,
    "prefixes": [
        0
    ],
    "trunk_group_ids": [
        123
    ]
}

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

Response

{
    "data": {
        "id": "123",
        "type": "trunk",
        "attributes": {
            "name": "string",
            "login": "string",
            "password": "string",
            "host": "my.host.com",
            "channels": 0,
            "token": "string",
            "prefixes": [
                0
            ],
            "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"
                }]
            }
        }
    }
}


GET /v1/trunks/?token= (получение списка транков)

GET /v1/trunks/id/?token= (получение информации по id транка)

DELETE /v1/trunks/id/?token= (удаление транка)

PUT /v1/trunks/id/?token= (обновление транка)


Дополнительная информация

В сервисе реализовано ограничение (защита) от повторных звонков по API на один и тот же номер. По умолчанию допускается 1 звонок в течение 1 часа на один и тот же номер. Изменить можно в личном кабинете Инфобота в разделе "Настройки" -> "Профиль". Можно установить значение от 5 до 60 минут. Ограничение не распространяется на "встроенные" попытки дозвона, в случае если не дозвонились с первого раза. Ограничение затрагивает именно отдельные запросы на звонок. Ошибка: "Rate limit reached



👆 На этом пока всё