Типы перехвата, реализованные в версии

В телефоне реализовано два сценария перехвата в зависимости от того, на что именно подписан BLF (тип подписки определяется телефоном автоматически).

Перехват через BLF, настроенный на пользователя

Условие: На телефоне настроен BLF на пользователя (например, sip:104@host).


Исходные данные примера:

На телефоне настроен аккаунт 100

На сервере настроена группа пользователей 1, в которую входят абоненты 104 и 100

На абонента 104 поступает вызов

С сервера приходит NOTIFY (по подписке на пользователя) на абонента 100

Поведение: Работает по классической схеме в зависимости от настройки режима перехвата.


Режим Replaces

Конфигурация в телефоне:

config.VoIP.Accounts.AccountX.SupplementaryServices.Pickup Mode Replaces

Действие при перехвате:

Отправляет INVITE с заголовком Replaces: …

Пример (режим Replaces)

Конфигурация в телефоне:

config.VoIP.Accounts.AccountX.SupplementaryServices.Pickup Mode Replaces

Настроен BLF на абонента 104:


"F7": {

"Function": "BLF",

"Params": "Label=104,Number=104,Account=1"

}


Пришедший NOTIFY:

NOTIFY sip:100@192.168.88.128:5060;transport=udp SIP/2.0

Via: SIP/2.0/UDP 192.168.88.4:5060;branch=z9hG4bK374b08af;rport

Max-Forwards: 70

From: <sip:104@192.168.88.128:5060;>;tag=as18814d12

To: <sip:100@192.168.88.128:5060;>;tag=mpBcUgFyD3cUH

...

<dialog-info entity="sip:104@192.168.88.4:5060">

...

<dialog id="199-198-118863" direction="recipient" call-id="06f44a0b5243060d" local-tag="InternalLink" remote-tag="ecssO1780303285152010075820">

<local>

<identity>sip:104@192.168.88.4</identity>

</local>

<state>early</state>

</dialog-info>


Результат перехвата:

Телефон отправит INVITE с заголовком Replaces: ...


Режим FeatureCode

Конфигурация в телефоне:

config.VoIP.Accounts.AccountX.SupplementaryServices.Pickup Mode FeatureCode

config.VoIP.Accounts.AccountX.SupplementaryServices.Pickup Code *8

Действие при перехвате:

Телефон отправляет INVITE на «Код захвата» + «номер_BLF» (например, *87104).


Пример (режим FeatureCode)

Конфигурация в телефоне:

config.VoIP.Accounts.AccountX.SupplementaryServices.Pickup Mode FeatureCode

config.VoIP.Accounts.AccountX.SupplementaryServices.Pickup Code *8


Настроен BLF на абонента 104:

"F7": {

"Function": "BLF",

"Params": "Label=104,Number=104,Account=1"

}


Пришедший NOTIFY:

NOTIFY sip:100@192.168.88.128:5060;transport=udp SIP/2.0

Via: SIP/2.0/UDP 192.168.88.4:5060;branch=z9hG4bK374b08af;rport

Max-Forwards: 70

From: <sip:104@192.168.88.128:5060;>;tag=as18814d12

To: <sip:100@192.168.88.128:5060;>;tag=mpBcUgFyD3cUH

...

<dialog-info entity="sip:104@192.168.88.4:5060">

...

<dialog id="199-198-118863" direction="recipient" call-id="06f44a0b5243060d" local-tag="InternalLink" remote-tag="ecssO1780303285152010075820">

<local>

<identity>sip:104@192.168.88.4</identity>

</local>

<state>early</state>

</dialog-info>


Результат перехвата:

Телефон отправит INVITE на *8 + 104 = sip:*8104@host

Перехват через групповой BLF (Подписка на группу перехвата)

Условие: BLF настроен на сервисный код группы (например, *8).

Исходные данные примера:

На телефоне настроен аккаунт 100

На сервере настроена группа пользователей 1, в которую входят абоненты 104 и 100

На сервере настроен сервисный код для группы пользователей 1

На абонента 104 поступает вызов

С сервера приходит NOTIFY (по групповой подписке) на абонента 100


Как телефон определяет, что это группа?

При получении NOTIFY телефон сравнивает:

Хост (entity) в NOTIFY (например, sip:104@192.168.88.4)

Номер, на который оформлена подписка (например, sip:*8@host)

Если значения не совпадают, телефон считает подписку групповой.


Логика перехвата

При нажатии BLF (или кнопки «Захват» на экране со списком звонков) телефон формирует INVITE по правилу:

INVITE sip: <номер_на_который_оформлена_подписка><номер_из поля <local>/<identity>>


Пример

Подписка на группу. Настроен BLF на группу *8:

"F7": {

"Function": "BLF",

"Params": "Label=*8,Number=*8,Account=1"

}


Пришедший NOTIFY:

NOTIFY sip:100@192.168.88.128:5060;transport=udp SIP/2.0

Via: SIP/2.0/UDP 192.168.88.4:5060;branch=z9hG4bK374b08af;rport

Max-Forwards: 70

From: <sip:*8@192.168.88.128:5060;>;tag=as341fc300

To: <sip:100@192.168.88.128:5060;>;tag=1aBNSeFU4S5QN

...

<?xml version="1.0"?>

...

<dialog-info entity="sip:104@192.168.88.4:5060">

...

<local>

<identity>sip:104@192.168.88.4</identity>

</local>

<state>early</state>

</dialog-info>


Перехват:

Телефон отправит INVITE на *8 + 104 = sip:*8104@host