REST API и Webhook: Руководство разработчика
Полная техническая документация API сервиса Ai2n Звонки: авторизация по API-ключу, совершение звонков с телефонов менеджеров (calls.make_call), отправка SMS (calls.send_sms), получение журнала звонков и записей (calls.list), управление сотрудниками (company.create_employee) и онлайн-прием Webhook событий.
API — Общие сведения и архитектура
API сервиса «Ai2n Звонки» позволяет легко связать мобильную телефонию вашей компании с любой внешней информационной системой: CRM (amoCRM, Битрикс24, PlanFix, Мегаплан), учетными программами 1С, Helpdesk-системами, Telegram-ботами или собственными внутренними порталами.
Используется для активных действий: инициация вызова на телефон менеджера (Click-to-Call), отправка SMS, выгрузка истории звонков за период или управление списком сотрудников.
Сервер Ai2n Звонки моментально отправляет HTTP POST запрос на URL вашей системы при наступлении событий: начало звонка, поднятие трубки, завершение разговора (с передачей ссылки на MP3 запись) или получение/отправка SMS.
Авторизация и формат запросов
Все REST запросы осуществляются методом POST с типом содержимого Content-Type: application/json. В теле запроса передается JSON-объект.
* Если у вашей компании настроен выделенный поддомен, можно использовать адрес https://[subdomain].zvonki.ai2n.dev/api/v1.
Обязательные поля авторизации в каждом запросе:
| Параметр | Тип | Описание |
|---|---|---|
| user_name | string | Email (логин) пользователя, от имени которого выполняется запрос. |
| api_key | string | API-ключ вашей компании (находится в Личном кабинете: «Настройки → Интеграция»). |
| action | string | Название вызываемого метода API (например, calls.make_call). |
Инициация звонка и отправка SMS
Совершить исходящий звонок: calls.make_call
Команда инициирует автоматический набор номера на смартфоне сотрудника (указанного в user_name). Смартфон менеджера сразу открывает системную звонилку и начинает вызов клиента.
{
"user_name": "manager@company.kz",
"api_key": "YOUR_COMPANY_API_KEY_32_CHARS",
"action": "calls.make_call",
"to": "+77011234567"
}
{
"success": true,
"message": "Call initiated successfully"
}
Отправить SMS через смартфон: calls.send_sms
Отправляет SMS-сообщение клиенту через SIM-карту смартфона указанного сотрудника по вашему сотовому тарифу.
{
"user_name": "manager@company.kz",
"api_key": "YOUR_COMPANY_API_KEY_32_CHARS",
"action": "calls.send_sms",
"to": "+77011234567",
"text": "Здравствуйте! Ваш заказ №4589 собран и готов к выдаче."
}
Получение журнала звонков: calls.list
Метод позволяет выгрузить список звонков из базы данных с фильтрацией по времени или последовательно по идентификаторам вызовов.
{
"user_name": "admin@company.kz",
"api_key": "YOUR_COMPANY_API_KEY_32_CHARS",
"action": "calls.list",
"from_id": 1050,
"max_results": 50,
"supervised": 0
}
from_id— ID звонка, начиная с которого возвращать данные (для инкрементальной синхронизации используйте ID последнего полученного звонка + 1). При значении 0 выгрузка идет с самого начала.from_date— время в формате UTC Unix Timestamp (в секундах), начиная с которого выбирать звонки.to_date— время окончания выборки в UTC Unix Timestamp.max_results— максимальное количество записей в одном ответе (по умолчанию 50, максимум 100).supervised— если 1, возвращаются только звонки подчиненных пользователей (для роли Руководителя).
{
"calls": [
{
"db_call_id": 1051,
"date": 1727595000,
"direction": 1,
"duration": 142,
"phone": "+77011234567",
"user_name": "manager@company.kz",
"user_display_name": "Азамат Сериков",
"status": 1,
"record_url": "https://zvonki.ai2n.dev/records/play/rec_1051.mp3",
"note": "Договорились о встрече во вторник"
}
],
"has_more": false
}
* Значения поля direction: 1 — Входящий, 2 — Исходящий. Значения status: 1 — Отвечен, 0 — Пропущен/Не дозвонился.
Управление сотрудниками аккаунта
* Данные методы доступны только от лица учетной записи с ролью Администратора.
Добавить сотрудника: company.create_employee
{
"user_name": "admin@company.kz",
"api_key": "YOUR_COMPANY_API_KEY_32_CHARS",
"action": "company.create_employee",
"employee_user_name": "new_manager@company.kz",
"employee_password": "SecurePassword123",
"employee_display_name": "Динара Алиева",
"employee_role": 4
}
Коды ролей (employee_role): 2 — Руководитель компании, 3 — Руководитель группы, 4 — Менеджер (по умолчанию).
Удалить сотрудника: company.delete_employee
{
"user_name": "admin@company.kz",
"api_key": "YOUR_COMPANY_API_KEY_32_CHARS",
"action": "company.delete_employee",
"employee_user_name": "old_manager@company.kz"
}
Webhook API: События в реальном времени
В личном кабинете в разделе «Настройки → Интеграция» укажите URL вашего веб-сервера (например, https://crm.company.kz/webhooks/calls). Наш сервис будет мгновенно отправлять POST-запросы при каждом телефонном событии.
Отправляется в момент появления входящего вызова на смартфоне или начала набора номера. Используется для открытия всплывающей карточки клиента в CRM.
{
"event": "call_start",
"phone": "+77011234567",
"direction": 1,
"user_name": "manager@company.kz",
"user_display_name": "Азамат Сериков",
"timestamp": 1727595000
}
Отправляется в секунду соединения абонентов. Позволяет фиксировать точное время начала живого диалога.
{
"event": "call_answer",
"phone": "+77011234567",
"user_name": "manager@company.kz",
"timestamp": 1727595006
}
Финальное событие с полными данными о разговоре, длительностью и прямой ссылкой на загрузку/прослушивание MP3 файла аудиозаписи.
{
"event": "call_end",
"call_id": 1051,
"phone": "+77011234567",
"direction": 1,
"status": 1,
"duration": 142,
"user_name": "manager@company.kz",
"user_display_name": "Азамат Сериков",
"timestamp": 1727595148,
"record_url": "https://zvonki.ai2n.dev/records/play/rec_1051.mp3"
}
Примеры кода на cURL, Python, PHP и Node.js
import requests
url = "https://zvonki.ai2n.dev/api/v1"
payload = {
"user_name": "manager@company.kz",
"api_key": "YOUR_COMPANY_API_KEY",
"action": "calls.make_call",
"to": "+77011234567"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print("Статус:", response.status_code)
print("Ответ:", response.json())
<?php
$data = [
'user_name' => 'manager@company.kz',
'api_key' => 'YOUR_COMPANY_API_KEY',
'action' => 'calls.make_call',
'to' => '+77011234567'
];
$ch = curl_init('https://zvonki.ai2n.dev/api/v1');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
const response = await fetch('https://zvonki.ai2n.dev/api/v1', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
user_name: 'manager@company.kz',
api_key: 'YOUR_COMPANY_API_KEY',
action: 'calls.make_call',
to: '+77011234567'
})
});
const result = await response.json();
console.log(result);