Сценарий из mcp-everything. Актуально на 2026-10-24.
АТС сообщает о каждом звонке, а CRM открывает менеджеру карточку звонящего.
import hashlib, hmac, json
def handle_event(form: dict) -> None:
expected = hashlib.sha256((form["vpbx_api_key"] + form["json"] + SALT).encode()).hexdigest()
if not hmac.compare_digest(expected, form["sign"]):
return # чужой запрос
ev = json.loads(form["json"])
if ev.get("call_state") == "Appeared" and ev.get("to", {}).get("extension"):
show_client_card(manager_ext=ev["to"]["extension"], phone=ev["from"].get("number"))
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)
Работает, когда вызов находится в IVR или у абонента (location = ivr или abonent).
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
vpbx_api_key |
body | string | да | Уникальный код ВАТС |
sign |
body | string | да | Подпись запроса |
command_id |
body | string | нет | ID команды, до 128 байт |
call_id |
body | string | да | Внутренний ID вызова (не SIP Call-ID) |
Пример запроса:
{
"command_id": "cmd.888.vpbx.12345.external.system.com.net",
"call_id": "100500"
}
В ответе users: extension, name, email, department, position, номера (number, protocol, wait_sec, order, status) и др.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
vpbx_api_key |
body | string | да | Уникальный код ВАТС |
sign |
body | string | да | Подпись запроса |
extension |
body | string | нет | Внутренний номер; без него — весь список |
ext_fields |
body | array | нет | Доп. поля: general.user_id, general.sips, groups, general.access_role_id, telephony.line_id и др. |
Пример запроса:
{
"extension": "1234"
}
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