Сценарий из mcp-everything. Актуально на 2026-10-24.
Отчёт по звонкам для аналитики: кто звонил, кому, сколько длился разговор.
import time
job = mango("/vpbx/stats/request", {"date_from": 1761944400, "date_to": 1762549200,
"fields": "start, finish, from_extension, from_number, to_extension, to_number, disconnect_reason"})
while True:
payload = json.dumps({"key": job["key"]}, separators=(",", ":"))
sign = hashlib.sha256((API_KEY + payload + SALT).encode()).hexdigest()
r = requests.post("https://app.mango-office.ru/vpbx/stats/result", data={"vpbx_api_key": API_KEY, "sign": sign, "json": payload})
if r.status_code == 200:
rows = [line.split(";") for line in r.text.splitlines()]
break
time.sleep(5)
https://app.mango-office.ruТип: API-ключ
Каждый запрос — POST с тремя полями формы: vpbx_api_key (уникальный код ВАТС), sign (подпись) и json (параметры команды). Подпись: sign = sha256(vpbx_api_key + json + vpbx_api_salt), где vpbx_api_salt — ключ создания подписи; сам ключ в запросах не передаётся. Уведомления, которые ВАТС отправляет во внешнюю систему, подписываются так же.
sign = sha256(vpbx_api_key + json + vpbx_api_salt)
Асинхронно: в ответе key, по нему затем забирается результат. О готовности ВАТС может уведомить на /vpbx/result/stat (key, request_id).
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
vpbx_api_key |
body | string | да | Уникальный код ВАТС |
sign |
body | string | да | Подпись запроса |
date_from |
body | integer | да | Начало периода, Unix time (UTC+3) |
date_to |
body | integer | да | Конец периода; не больше месяца от date_from |
fields |
body | string | нет | Поля выгрузки через запятую в нужном порядке |
from.extension |
body | string | нет | Сотрудник-инициатор |
from.number |
body | string | нет | Номер вызывающего (E.164) |
to.extension |
body | string | нет | Вызываемый сотрудник |
to.number |
body | string | нет | Вызываемый номер (E.164) |
call_party.extension |
body | string | нет | Сотрудник с любой стороны (нельзя вместе с from/to) |
call_party.number |
body | string | нет | Номер с любой стороны |
request_id |
body | string | нет | ID запроса во внешней системе, до 128 байт |
200 — данные готовы (CSV-строка, разделитель ;, строки — \n), 204 — ещё не готовы (повторять не чаще раза в 5 секунд), 404 — ключ неверный или устарел.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
vpbx_api_key |
body | string | да | Уникальный код ВАТС |
sign |
body | string | да | Подпись запроса |
key |
body | string | да | Ключ из stats/request |
Пример запроса:
{
"key": "b3ZvIt8hPJReV8v4MYspQQA=="
}
https://external-system.com/events/call, с полями vpbx_api_key, sign, json. Есть события о вызове, результате SMS, записи разговора, DTMF, завершении вызова.events/call: entry_id (группа вызовов), call_id, timestamp, seq, call_state (Appeared, Connected, OnHold, Disconnected), location (ivr, queue, abonent), from.number, from.extension, to.number, to.extension, disconnect_reason.seq. Порядок результата команды и событий, которые она порождает, тоже не гарантирован.call_id).Если этого недостаточно — официальная документация: https://www.mango-office.ru/support/5_api-i-razrabotka/1_api-mango-office/5_opisanie_metodov_api_virtualnoy_ats_mango/ Вся интеграция одним документом: https://mcp-everything.ru/integrations/mango-office.md