PearlPBX2
Інтеграції

Підключіть PearlPBX2 до вашої CRM

Відкритий, документований контракт замість закритого набору готових конекторів під конкретні системи.

Вебхуки

Два незалежних ланцюжки подій для вхідного й вихідного дзвінка. Кожен payload підписаний HMAC-SHA256, а шаблон JSON редагується прямо в адмінці зі синтаксисом ${placeholder} — зміни застосовуються без перезапуску сервісу, бо конфігурація вебхука одразу публікується в Redis. Фільтрація за контекстом dialplan, таблицею маршрутизації чи чергою дозволяє надсилати вебхук лише для потрібних дзвінків, а кореляція через linkedid об'єднує всі етапи багатосегментного дзвінка (трансфери, конференції). Доставка — best-effort, з налаштовуваним таймаутом і повтором через 2 секунди на спробу; call.ended дедуплікується через Redis, тож CRM варто додатково дедуплікувати заuniqueid.

Вхідний дзвінок
call.incomingcall.answeredcall.missedcall.ended
Вихідний дзвінок
call.outgoingcall.outgoing_answeredcall.outgoing_ended
  • Кожен payload підписаний HMAC-SHA256 у заголовку X-PearlPBX-Signature.
  • Мультисегментні дзвінки (трансфери, конференції) корелюються через linkedid.
  • Доставка — best-effort із повтором через 2 секунди; call.ended дедуплікується через Redis.
POST /your-crm/webhook · call.ended
{
  "event": "call.ended",
  "uniqueid": "1753000000.42",
  "linkedid": "1753000000.42",
  "channel": "PJSIP/trunk1-0000001a",
  "caller_id_num": "380501234567",
  "caller_id_name": "Customer",
  "exten": "s",
  "context": "incoming",
  "direction": "inbound",
  "answered": true,
  "duration": 42,
  "cause": "16",
  "cause_txt": "Normal Clearing",
  "billsec": "38",
  "answered_by_member": "Operator Petrenko",
  "recorded": true,
  "recording_url": "https://pbx.example.com/api/v1/recordings/1753000000.42/",
  "channel_vars": { "ULINE": "42" }
}

Словник із 33 змінних

Шаблон payload перевіряється проти фіксованого словника змінних — довільний текст поза цим списком відхиляється ще у формі редагування вебхука.

eventuniqueidlinkedidchannelchannel_varscaller_id_numcaller_id_nameextencontextqueuetimestampdurationcausecause_txtanswered_timebillsecrecordedrecording_expectedrecording_urlrecording_filemissedwait_timemember_namemember_interfacemember_numberringtimeholdtimeanswered_by_memberanswered_by_interfacedirectiondest_channeldial_statusanswered

Типові сценарії

  • Screen pop у CRM одразу на call.incoming.
  • Показ інформації про оператора на call.answered.
  • Закриття картки дзвінка з тривалістю й посиланням на запис на call.ended.
  • Задача на зворотний дзвінок при call.missed.
  • Клік-ту-колл із картки клієнта через REST API.

REST API

Токен-автентифікація і жива OpenAPI 3.0-схема зі Swagger UI та ReDoc. Технічні деталі архітектури — на сторінці для інженерів.

POST/api/v1/calls/originate/Клік-ту-колл без розкриття AMI-секрету CRM.
POST/api/v1/calls/conference/Ad-hoc конференція на 2+ учасників.
GET/POST/api/v1/queues/members/Статус агентів черги та керування паузою.
GET/api/v1/recordings/<uniqueid>/Завантаження запису з підтримкою Range.

WebSocket-потік дашборда

ws/asterisk/ приймає або сесію Django, або DRF API-токен — це дозволяє вбудувати живий дашборд PearlPBX2 просто у власний інтерфейс вашої CRM, а не лише дивитись на нього окремо.