Сценарий из mcp-everything. Актуально на 2026-10-24.
Click-to-call: менеджер нажимает на номер в CRM, АТС сначала звонит ему, потом соединяет с клиентом.
import hashlib, json, requests
API_KEY, SALT = "<vpbx_api_key>", "<vpbx_api_salt>"
def mango(path: str, params: dict) -> dict:
payload = json.dumps(params, ensure_ascii=False, separators=(",", ":"))
sign = hashlib.sha256((API_KEY + payload + SALT).encode()).hexdigest()
r = requests.post(f"https://app.mango-office.ru{path}", data={"vpbx_api_key": API_KEY, "sign": sign, "json": payload})
return r.json()
print(mango("/vpbx/commands/callback", {"command_id": "crm-1042", "from": {"extension": "101"}, "to_number": "79991234567"}))
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)
Результат приходит во внешнюю систему на /vpbx/result/callback (command_id, result).
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
vpbx_api_key |
body | string | да | Уникальный код ВАТС |
sign |
body | string | да | Подпись запроса |
command_id |
body | string | нет | ID команды во внешней системе, до 128 байт |
from.extension |
body | string | да | Внутренний номер сотрудника |
from.number |
body | string | нет | Номер сотрудника, с которого звонить (SIP, FMC, ТфОП), до 128 байт |
to_number |
body | string | да | Вызываемый номер: сотрудник, группа или любой номер |
line_number |
body | string | нет | Линия (SIP UAC, 7-800, DID); для SIP — имя линии |
sip_headers |
body | object | нет | SIP-заголовки, например Call-Info/answer-after |
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