Skip to end of metadata
Go to start of metadata

Веб-хук (webhook) — это отправка запросов по событиям из onlinePBX. Запросы уведомляют сторонние сервисы об изменениях в АТС. Позволяют отслеживать звонки, их состояние и другие события onlinePBX — информация отправляется на указанный URL. Веб-хуки могут использоваться для интеграции.

Подключение

Для подключения веб-хуков вам необходимо указать адрес URL, куда будут отправляться POST-запросы. Для этого в панели управления перейдите в Профиль > Веб-хуки, в строке введите ваш URL и нажмите «Добавить».

После добавления вы можете выбрать, какие именно события хотите получать. На выбор есть четыре варианта. Не забудьте сохранить и подтвердить изменения.

Примеры запросов

Начался звонок

{
"domain":"onlinepbx.ru",
"event":"call_start",
"direction":"outbound",
"uuid":"d02d3dd1-36f9-41g8-9055-3139369h6h90",
"caller":"505",
"callee":"79111117960",
"from_domain":"onlinepbx.ru",
"to_domain":"",
"gateway":"74991111282",
"date":"1528886454"
}

 

 

Ответили на звонок

{
"domain":"onlinepbx.ru",
"event":"call_answered",
"direction":"outbound",
"uuid":"2c033c12-7310-4v4v-9b42-8bb207b17322",
"caller":"505",
"callee":"79111117799",
"to_domain":"",
"gateway":"74991111112",
"date":"1528888621"
}

Завершился звонок

{
"domain":"onlinepbx.ru",
"event":"call_end",
"direction":"outbound",
"uuid":"6q5qq87q-0w32-4e23-8570-3r6rr6rrrr2r",
"caller":"145",
"callee":"79502222919",
"from_domain":"onlinepbx.ru",
"to_domain":"onlinepbx.ru",
"gateway":"74991111282",
"date":"1528884937",
"call_duration":"149",
"dialog_duration":"135",
"hangup_cause":"NORMAL_CLEARING",
"hangup_by":"caller"
}

Пропущенный звонок

{

"domain":"onlinepbx.ru",
"event":"call_missed",
"uuid":"5329a333-ss32-4dd9-ff0f-gh84g32h5g22",
"caller":"79221111123",
"from_domain":"onlinepbx.ru",
"to_domain":"onlinepbx.ru",
"gateway":"73431111137",
"date":"1529406933"
}

Список переменных и описание

ПеременнаяПример значения переменнойОписание переменной
1domainexample.onpbx.ruДомен, в котором состоялось событие
2eventcall_end / call_answered / call_startТип события
3directioninbound / outboundТип звонка (входящий/исходящий)
4uuid5921a027-c22f-4351-b495-30a49f00e4e1Уникальный идентификатор сессии
5caller+79510057057 / 510@onlinepbx.ruЗвонящий
6callee79827347182 / 102Кому звонили
7from_domainexamplefrom.onpbx.ruДомен звонящего
8to_domainexampleto.onpbx.ruДомен того, кому звонили
9gateway74922296721Транк, на/с которого позвонили
10date1527578Дата в формате UNIX
11call_duration159Общая длительность звонка (сек.)
12dialog_duration145Длительность разговора (сек.)
13hangup_causeNORMAL_CLEARINGПричина завершения звонка
14hangup_bycaller / calleeКто инициировал завершение вызова

Формат запросов

Все HTTP-запросы отправляются в формате POST, тело запроса в формате application/x-www-form-urlencoded.

 

  • No labels

8 Comments

  1. Anonymous

    Есть ли инструмент что бы тестировать хуки? 

    1. Добрый день!

      Такого инструмента у нас нет. Если у вас есть вопросы по работе веб-хуков, вы можете их задать нашим инженерам, написав на почту: support@onlinepbx.ru.

      Благодарю вас за комментарий!

  2. Anonymous

    Добрый день! В хуке по завершению звонка, если были переводы между сотрудниками, то в caller/callee придет добавочный того, кто инициировал звонок или кто последний разговаривал?

    То есть, если если звонок начал 100, во время звонка перевел на 105, то кто придет в caller?

    1. Anonymous

      Добрый день!

      При таком сценарии в поле caller/callee придёт добавочный сотрудника, на которого был перевод звонка. В вашем примере это 105-й пользователь.

      Благодарю за ваш комментарий!

  3. Anonymous

    Добрый день!

    Делаю интеграцию на webhook'ах с МойСклад и столкнулся с тем, что нет возможности идентифицировать один звонок в рамках нескольких хуков. Нет глобального идентификатора для всего цикла. Я в начале полагал, что таким идентфикатором является поле uuid, но по факту это идентификатор канала, который меняется в процессе обработки звонка. К примеру, на входящий звонок может быть три хука: call_startcall_answered и call_end, при этом uuid для всех этих хуков одного звонка не будет идентичным. 
    Если у вас нет технической возможности предоставить некий глобальный идентификатор для такой сессии, то хотя бы передавать в хуке взаимосвязь между идентификаторами каналов. В таком случае можно будет выйти на самый первый id канала и идентифицировать звонок для которого получен очередной хук.
    Виталий, vensi.onpbx.ru
    1. Виталий, добрый день!

      Составил заявку в технический отдел. В ближайшее время инженеры дадут ответ на почту администратора аккаунта или позвонят по контактному номеру телефона.

      Благодарю вас за развёрнутый комментарий!

  4. Anonymous

     Допустим перевод был на группу.  Подскажите, как узнать конкретно того, кто ответил на звонок. В каком поле какого хука. Или это по запросу HTTP API нужно делать?

    1. Добрый день!

      Необходимо просмотреть в событии "call_answered" поле "callee". В нём вы увидите того, кто принял звонок.

      Если во время разговора сотрудник перевел вызов на коллегу, можно также просмотреть событие "call_end" поле "callee". Там будет указано, кто последний разговаривал с клиентом.

      Благодарю вас за комментарий!

Write a comment…