Page tree
Skip to end of metadata
Go to start of metadata

WebSocket — протокол полнодуплексной связи поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени. Благодаря данному протоколу, у разработчиков появляется много возможностей для интеграции сервиса онлайн АТС с веб-приложениями при помощи javascript.

(warning) Для работы используем версию socket.io-client 0.9.0.

(warning) Все примеры websocket api, приведенные ниже, работают с библиотекой api.onlinepbx.ru/lib/onpbx_ws_api_2.js.

(warning) Библиотека для использования на сервере: https://www.npmjs.com/package/onpbx-ws-api.

(warning) Ваши вопросы по работе с API вы можете задать, написав на почту support@onlinepbx.ru.





Подключение

Инициализация подключения — onpbx.connect({параметры})

onpbx.connected — переменная содержит статус подключения к WS:// ( true | false )

ОпцияПримечаниеОписание опции
domainобязательноДоменное имя для подключения
keyобязательноAPI ключ

Пример:


{
  "domain": "demo.onpbx.ru",
  "key": "123"
}


Команды

onpbx.command ("команда", {параметры}, [колбэк функция])

1. "make_call" — совершить звонок
ОпцияПримечаниеОписание опции
fromобязательноКто (номер абонента или внешний)
toобязательноКому соединить (любой номер)
from_orig_number
Номер, который высветится у вызываемого
from_orig_name
Имя, которое высветится у вызываемого
domain_to
Домен, на который нужно отправить звонок по умолчанию совпадает с доменом звонящего
from_name
Имя, которое высветится у того, для кого вызываем
gate_from
Транк для звонка вызываемого (если не указан, то выбирается автоматически в соответствии с правилами набора, если указан то правила игнорируются и изменения номера не производится.)
gate_to
Транк для звонка тому, с кем нужно соединить

Запрос:


{
  "from": "77777777777",
  "to": "88001006729",
  "from_orig_number": "88001006729",
  "from_orig_name": "onlinePBX inc.",
  "domain_to": "example.onpbx.ru",
  "from_name": "Vasya",
  "gate_from": "73432048020",
  "gate_to": "73432048020"
}

Ответ:


{
  "status": true,
  "data": {
    "uuid": "ac1fc137-265e-460b-8f5d-151bd389484e"
  },
  "hash": "wILGN1lQsS3ptIuW"
}



2. "transfer" — перевод активной сессии на другой номер
ОпцияПримечаниеОписание опции
uuidобязательноuuid сессии
toобязательноКуда нужно перевести (любой номер)
gate_to
Аналогично make_call
domain_to
Аналогично make_call

Запрос:


{
  "uuid": "19ff59fb-2cfc-1230-66b7-00199988ac0c",
  "to": "88001006729",
  "gate_to": "73432048020",
  "domain_to": "example.onpbx.ru"
}

Ответ:


{
  "status": true,
  "hash": "IBundefinedEGEzdoGXp3KR3"
}
3. "bridge" — соединение двух активных сессий
ОпцияПримечаниеОписание опции
uuidобязательноuuid сессии
to_uuidобязательноuuid второй сессии

Запрос:


{
  "uuid": "19ff59fb-2cfc-1230-66b7-00199988ac0c",
  "to_uuid": "c519f6b8-283f-4c1b-bfec-5042a1592d68"
}

Ответ:


{
  "status": true,
  "hash": "t33Xfa9tcjcN4qA0"
}
4. "eavesdrop" — подключение к активной сессии для прослушки
ОпцияПримечаниеОписание опции
uuidобязательноuuid сессии к которой нужно подключиться
fromобязательноВнутренний или внешний номер
gate_from
Аналогично make_call

Запрос:


{
  "uuid": "19ff59fb-2cfc-1230-66b7-00199988ac0c",
  "from": "222",
  "gate_from": ""
}

Ответ:


{
  "status": true,
  "data": {
    "uuid": "1582f1d4-4afc-468c-8658-b89aaf56edd3"
  },
  "hash": "gUr3K5tdQundefinedqbW4E6"
}
5. "hangup_call" — завершение звонка
ОпцияПримечаниеОписание опции
uuidобязательноuuid сессии

Запрос:


{
  "uuid": "19ff59fb-2cfc-1230-66b7-00199988ac0c"
}

Ответ:


{
  "status": true,
  "hash": "t33Xfa9tcjcN4qA0"
}
6. "subscribe" — изменение подписки на события
ОпцияПримечаниеОписание опции
eventsобязательноОбъект событий для изменения, либо строка 'list' для вывода списка. Ниже указаны параметры по умолчанию, не забудьте включить нужный:
calls
Каналы / звонки
blf
Статусы абонентов
messages
Сообщения
callback
Колбэк строчка
api
Функция в разработке
registration
Регистрации

Запрос:


{
  "events": {
    "calls": false,
    "blf": true,
    "messages": false,
    "callback": true,
    "api": false,
    "registration": false
  }
}

Ответ:


{
  "status": true,
  "text": "Subscriptions are updated",
  "data": {
    "calls": false,
    "blf": true,
    "fax": false,
    "conference": false,
    "messages": false,
    "callback": true,
    "api": false,
    "registration": false
  },
  "hash": "HzYgQQwjE28xkYYw"
}
7. "reboot_phone" — перезагрузить телефон (работает только на cisco и некоторых yealink)
ОпцияПримечаниеОписание опции
numобязательноНомер телефона
model
Модель телефона ( yealink | cisco)

Запрос:


{
  "num": "222",
  "model": "yealink"
}

Ответ:


{
  "status": true,
  "hash": "h6zTtouUrY6EYfd6"
}
8. "reloadgw" - перезагрузить транк
ОпцияПримечаниеОписание опции
numобязательноНомер транка

Запрос:


{
  "num": "73432048020"
}

Ответ:


{
  "status": true,
  "hash": "D4jah0CA7czPpAhl"
}
9. "sip_message" — отправить sip сообщение (не поддерживается некоторыми телефонами и веб-клиентами)
ОпцияПримечаниеОписание опции
numобязательноНомер телефона
textобязательноТекст сообщения (максимум 200 символов)

Запрос:


{
  "num": "222",
  "text": "Hello World!"
}

Ответ:


{
  "status": true,
  "hash": "Qd4PelbvCram9Vni"
}
10. "flush_reg" — удалить регистрацию абонента (не сможет принимать звонки до повторной регистрации)
ОпцияПримечаниеОписание опции
numобязательноНомер телефона

Запрос:


{
  "num": "222"
}

Ответ:


{
  "status": true,
  "hash": "OaEVdkhgL7bBuR2T"
}
11. "trunk_list" — список транков и их состояние (нет параметров)
ОпцияПримечаниеОписание опции
data
Переменная data в колбэк функции
extension
Номер транка
desc
Название транка
dest
Номер назначения в АТС
uri
SIP адрес
status
Cтатус регистрации

Запроса нет, т. к. нет параметров

Ответ:


{
  "status": true,
  "data": [
    {
      "extension": "88001006729",
      "desc": "zebra",
      "dest": "6201",
      "uri": "005815@sip.zebra.ru",
      "status": "REGED"
    }
  ],
  "hash": "9lbCrsfPXD6optBT"
}
12. "user_list" — список зарегистрированных пользователей (нет параметров)
ОпцияПримечаниеОписание опции
data
Переменная data в колбэк функции
name
Имя пользователя
local_ip
Локальный адрес
local_port
Локальный порт
exp
UNIX timestamp времени когда закончится регистрация
realm
SIP домен
uid
Внутренний номер
ip
Внешний адрес
port
Внешний порт
agent
Устройство пользователя

Запроса нет, т. к. нет параметров

Ответ:


{
  "status": true,
  "data": [
    {
      "name": "Vyacheslav",
      "local_ip": "172.27.0.58",
      "local_port": "5060",
      "exp": 1375525567000,
      "realm": "example.onpbx.ru",
      "uid": "222",
      "ip": "213.222.45.85",
      "port": "5060",
      "agent": "Cisco/SPA303-7.4.9c"
    }
  ],
  "hash": "Vlltjwe5XXKfVAa4"
}
13. "message" — рассылка сообщения другим подключенным клиентам в этом домене
ОпцияПримечаниеОписание опции
dataобязательноИнформация, которую нужно отправить (строка, объект или число)
target
По умолчанию - 'domain'. Допустимо два значения: 'domain' - отправит сообщение всем в пределах домена и 'browser' - отправит сообщения во все открытые вкладки отправителя

Запрос:


{
  data : "Hi All!"
  target : "domain"
}

Ответ:


{
  "status": true,
  "hash": "SKP6Gu1cLeJdjxel"
}
14. Ответ при ошибке
ОпцияОписание опции
statusСтатус
textТекст ошибки

Пример ответа при ошибке:


{
  "status": false,
  "text": "CALL_REJECTED",
  "hash": "mAXgxFJundefinedvspIYGfc"
}

К содержанию



События

onpbx.on ("событие", function(data){...})

1."connect" - Событие о подключении к WS://
ОпцияПримечаниеОписание опции
data
undefined

В событии нет данных.

2. "disconnect" — Событие о отключении от WS://
ОпцияПримечаниеОписание опции
data
undefined

В событии нет данных.

3. "blf" — состояние абонентов (в сети, разговаривает, звонит)
ОпцияПримечаниеОписание опции
uid
Внутренний номер пользователя
status
Статус (событие)
direction
Направление звонка ("in" / "out")
rank
Приоритет вкладки в браузере ("master" / "slave"). Master всегда только одна, остальные slave
other_leg
Второй Участник
uuid
Уникальный идентификатор сессии
timestamp
Время создания эвента (в формате UNIX timestamp - http://www.unixtimestamp.com/index.php)

Пример:


data:{
  "uid": "204",
  "status": "ringing",
  "direction": "out",
  "rank": "master",
  "other_leg": "73432048020",
  "uuid": "22c9e591-3784-4c64-8ebf-c8bfcef17776",
  "timestamp": 1452498750
}
4. "registration" — попытки регистрации пользователей
ОпцияПримечаниеОписание опции
uid
Номер пользователя
agent
Устройство пользователя
state
Состояние регистрации: pre_register" - первичный запрос на регистрацию; "register_attempt" - запрос с логином/паролем; "register" - регистрация прошла успешно
ip
Внешний IP адрес устройства
port
Внешний порт
expires
Секунд до окончания регистрации

Пример:


data:{
  "uid": 201,
  "agent": "Cisco SPA303-g2",
  "state": "register",
  "ip": "8.8.8.8",
  "port": 5060,
  "expires": 3600
}
5. "channel_create" — создание нового канала
ОпцияПримечаниеОписание опции

uuid


Идентификатор канала
direction
"Направление канала" относительно АТС. (inbound/outbound)
created_stamp
Время создания канала в формате unix timestamp
state
Состояние канала
endpoint
Конечная точка
domain
SIP Домен
caller_number
Номер звонящего
caller_name
Имя звонящего
destination_number
Номер назначения
destination_host
SIP Домен назначения
gate
Транк (номер телефона)
diversion
RDNIS промежуточный номер при переадресации

Пример:


data:{
  "uuid": "5dc1cdca-9e80-4b94-9633-asdasdadasa",
  "direction": "inbound",
  "created_stamp": 1440864124272,
  "state": "CS_INIT",
  "endpoint": "9090001122",
  "domain": "example.onpbx.ru",
  "caller_number": "9090001122",
  "caller_name": "9090001122",
  "destination_number": "555",
  "destination_host": "555.127.255.XXX",
  "gate": "4951112233",
  "diversion": "555@XXX.145.43.XXX:5061"
}
6. "channel_destroy" — удаление канала
ОпцияПримечаниеОписание опции
uuid
Идентификатор канала
direction
«Направление канала» относительно АТС. (inbound/outbound)
created_stamp
Время создания канала в формате unix timestamp
state
Состояние канала
endpoint
Конечная точка в АТС
hangup_cause
Причина завершения звонка - http://api.onlinepbx.ru/lib/hangup_cause.js

Пример:


data:{
  "uuid": "22c9e591-3784-4c64-8ebf-c8bfcef17776",
  "direction": "inbound",
  "created_stamp": "1375466463124",
  "state": "CS_DESTROY",
  "endpoint": "222@example.onpbx.ru",
  "hangup_cause": "NORMAL_CLEARING"
}
7. "channel_answer" — канал перешёл в состояние отвеченных
ОпцияПримечаниеОписание опции
uuid
Идентификатор канала
answered_stamp
Время ответа (таймстамп)
read_codec
Кодек приема
read_rate
Частота приёма
read_bitrate
Битрейт приёма
write_codec
Кодек отправки
write_rate
Частота отправки
write_bitrate
Битрейт отправки

Пример:


data:{
  "uuid": "22c9e591-3784-4c64-8ebf-c8bfcef17776",
  "answered_stamp": "1375466463124",
  "read_codec": "PCMU",
  "read_rate": "8000",
  "read_bitrate": "64000",
  "write_codec": "PCMA",
  "write_rate": "8000",
  "write_bitrate": "64000"
}
8. "channel_bridge" — соединение каналов
ОпцияПримечаниеОписание опции
direction
«Направление канала» относительно АТС. (inbound/outbound)
aleg_uuid
uuid А ноги
bleg_uuid
uuid Б ноги

Пример:


data:{
  "direction": "inbound",
  "aleg_uuid": "22c9e591-3784-4c64-8ebf-c8bfcef17776",
  "bleg_uuid": "129d1446-0063-122c-15aa-001a923f6a0f"
}
9. "channel_application" — выполнена команда на канале
ОписаниеПримечаниеОписание опции
uuid
Идентификатор канала
application
Пока поддержевается только один тип команды, в будущем будут еще
application_data
Аргументы команды

Пример:


data:{
  uuid : "22c9e591-3784-4c64-8ebf-c8bfcef17776",
  application : "transfer",
  application_data : { ... }
}







10. "channel_hold" — пользователь АТС поставил звонок на удержание


Опции при входящем звонке в АТС

ОписаниеПримечаниеОписание опции
direction
«Направление канала» относительно АТС. outbound
uuid
Идентификатор канала
created_stamp
Время создания канала в формате unix timestamp
domain
SIP Домен
caller_number
Номер звонящего
caller_name
Имя звонящего
destination_number
Номер сотрудника 

Опции при исходящем звонке из АТС

ОписаниеПримечаниеОписание опции
direction
«Направление канала» относительно АТС. inbound
uuid
Идентификатор канала
created_stamp
Время создания канала в формате unix timestamp
domain
SIP Домен
caller_number
Добавочный сотрудника
caller_name
Имя пользователя
destination_number
Номер клиента

Пример для входящего звонка:


channel_hold:{ 
"direction": "outbound",
"uuid": "7efa5a12-a1f0-4ddd-bc16-cf8b0ec3d560",
"created_stamp": 1580123956361,
"domain": "example.onpbx.ru",
"caller_number": "79064561235",
"caller_name": "Peter",
"destination_number": "100"
}

Пример для исходящего звонка:


channel_hold:{ 
"direction": "inbound",
"uuid": "7369ce36-f9e2-4e5a-a5f0-3f042a144db7",
"created_stamp": 1580123701481,
"domain": "example.onpbx.ru",
"caller_number": "100",
"caller_name": "Ivan",
"destination_number": "79064561235"
}
11. "channel_unhold" — пользователь АТС снял звонок с удержания


Опции при входящем звонке в АТС

ОписаниеПримечаниеОписание опции
direction
«Направление канала» относительно АТС. outbound
uuid
Идентификатор канала
created_stamp
Время создания канала в формате unix timestamp
domain
SIP Домен
caller_number
Номер звонящего
caller_name
Имя звонящего
destination_number
Номер сотрудника 

Опции при исходящем звонке из АТС

ОписаниеПримечаниеОписание опции
direction
«Направление канала» относительно АТС. inbound
uuid
Идентификатор канала
created_stamp
Время создания канала в формате unix timestamp
domain
SIP Домен
caller_number
Добавочный сотрудника
caller_name
Имя пользователя
destination_number
Номер клиента

Пример для входящего звонка:


channel_unhold:{ 
"direction": "outbound",
"uuid": "7efa5a12-a1f0-4ddd-bc16-cf8b0ec3d560",
"created_stamp": 1580123956361,
"domain": "example.onpbx.ru",
"caller_number": "79064561235",
"caller_name": "Peter",
"destination_number": "100"
}

Пример для исходящего звонка:


channel_unhold:{
"direction": "inbound",
"uuid": "7369ce36-f9e2-4e5a-a5f0-3f042a144db7",
"created_stamp": 1580123701481,
"domain": "example.onpbx.ru",
"caller_number": "100",
"caller_name": "Ivan",
"destination_number": "79064561235"
}


Пример использования

Подключение, звонки и события - api.onlinepbx.ru/example/ws_connect_call.html

Write a comment…