Howto:Busy lamp field (partner keys) with SIP phones
Applies To
This information applies to
- innovaphone PBX, v6
- SIP phones supporting "Dialog Package" according to RFC-4235
Introduction
Partner keys are primarily used to monitor the call state of an associated partner. Usually partner keys fulfill the following functions:
- monitoring partner: Indicating different call-related states: Idle, Alerting, Busy.
- speed dial: Pressing the partner key while the partner is in idle state will initiate a call to the partner.
- call pickup: Pressing the partner key while the partner is in alerting state will initiate a call pickup of the alerting call.
More Information
System Requirements
Configuration
In order make partner keys working, the PBX must notify the device about current state of ongoing calls.
To achieve that, "Group Indications" must be activated on the "watching" user for the "watched group":
The NOTIFY request is used to carry an XML formatted dialog info.
Endpoints can, but need not to subscribe for the "Dialog Event Package" (RFC-4235).
If "Group Indications" are activated on a PBX user, but the user's endpoint has not subscribed for the dialog event package, the user's endpoint will receive unsolicited NOTIFYs anyway.
Known Problems
---
Example
The watched endpoint (207) receives a call from 211.
The watcher gets a NOTIFY request with a dialog info about the call in "early" state:
NOTIFY sip:snom@172.16.16.34:1415;line=ojn9itpa SIP/2.0 Via: SIP/2.0/UDP 172.16.16.180:5060;branch=z9hG4bK-311728BD;rport From: <sip:207@172.16.16.180;user=phone>;tag=2870350033 To: <sip:snom@172.16.16.180>;tag=bl4qd8azu6 Call-ID: 0ce2cb4794c2-9b374j1ddupd@snomSoft-000413FFFFFF CSeq: 18 NOTIFY Contact: <sip:207@172.16.16.180;user=phone> Content-Length: 343 Content-Type: application/dialog-info+xml Max-Forwards: 70 Event: dialog Subscription-State: active <?xml version="1.0"?> <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" state="full" version="9"> <dialog id="1" direction="initiator" call-id="e1b50917e909d311824d0090330200d6"> <state>early</state> <local> <identity>sip:207@172.16.16.180</identity> </local> <remote> <identity>sip:211@172.16.16.180</identity> </remote> </dialog> </dialog-info> SIP/2.0 200 Ok Via: SIP/2.0/UDP 172.16.16.180:5060;branch=z9hG4bK-311728BD;rport=5060 From: <sip:207@172.16.16.180;user=phone>;tag=2870350033 To: <sip:snom@172.16.16.180>;tag=bl4qd8azu6 Call-ID: 0ce2cb4794c2-9b374j1ddupd@snomSoft-000413FFFFFF CSeq: 18 NOTIFY Content-Length: 0
While in state "early" the watcher has the chance to pickup this "early" call.
After the call has been accepted by the watched endpoint (207), the former dialog info is cleared and a new dialog info is send to the watcher about the call in state "proceeding":
NOTIFY sip:snom@172.16.16.34:1415;line=ojn9itpa SIP/2.0 Via: SIP/2.0/UDP 172.16.16.180:5060;branch=z9hG4bK-311728BE;rport From: <sip:207@172.16.16.180;user=phone>;tag=2870350033 To: <sip:snom@172.16.16.180>;tag=bl4qd8azu6 Call-ID: 0ce2cb4794c2-9b374j1ddupd@snomSoft-000413FFFFFF CSeq: 19 NOTIFY Contact: <sip:207@172.16.16.180;user=phone> Content-Length: 349 Content-Type: application/dialog-info+xml Max-Forwards: 70 Event: dialog Subscription-State: active <?xml version="1.0"?> <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" state="full" version="10"> <dialog id="1" direction="initiator" call-id="e1b50917e909d311824d0090330200d6"> <state>terminated</state> <local> <identity>sip:207@172.16.16.180</identity> </local> <remote> <identity>sip:211@172.16.16.180</identity> </remote> </dialog> </dialog-info> NOTIFY sip:snom@172.16.16.34:1415;line=ojn9itpa SIP/2.0 Via: SIP/2.0/UDP 172.16.16.180:5060;branch=z9hG4bK-311728BF;rport From: <sip:207@172.16.16.180;user=phone>;tag=2870350033 To: <sip:snom@172.16.16.180>;tag=bl4qd8azu6 Call-ID: 0ce2cb4794c2-9b374j1ddupd@snomSoft-000413FFFFFF CSeq: 20 NOTIFY Contact: <sip:207@172.16.16.180;user=phone> Content-Length: 349 Content-Type: application/dialog-info+xml Max-Forwards: 70 Event: dialog Subscription-State: active <?xml version="1.0"?> <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" state="full" version="11"> <dialog id="1" direction="initiator" call-id="e1b50917e909d311824d0090330200d6"> <state>proceeding</state> <local> <identity>sip:207@172.16.16.180</identity> </local> <remote> <identity>sip:211@172.16.16.180</identity> </remote> </dialog> </dialog-info> SIP/2.0 200 Ok Via: SIP/2.0/UDP 172.16.16.180:5060;branch=z9hG4bK-311728BE;rport=5060 From: <sip:207@172.16.16.180;user=phone>;tag=2870350033 To: <sip:snom@172.16.16.180>;tag=bl4qd8azu6 Call-ID: 0ce2cb4794c2-9b374j1ddupd@snomSoft-000413FFFFFF CSeq: 19 NOTIFY Content-Length: 0 SIP/2.0 200 Ok Via: SIP/2.0/UDP 172.16.16.180:5060;branch=z9hG4bK-311728BF;rport=5060 From: <sip:207@172.16.16.180;user=phone>;tag=2870350033 To: <sip:snom@172.16.16.180>;tag=bl4qd8azu6 Call-ID: 0ce2cb4794c2-9b374j1ddupd@snomSoft-000413FFFFFF CSeq: 20 NOTIFY Content-Length: 0
After the call has been terminated, the dialog info is cleared:
NOTIFY sip:snom@172.16.16.34:1415;line=ojn9itpa SIP/2.0 Via: SIP/2.0/UDP 172.16.16.180:5060;branch=z9hG4bK-311728C1;rport From: <sip:207@172.16.16.180;user=phone>;tag=2870350033 To: <sip:snom@172.16.16.180>;tag=bl4qd8azu6 Call-ID: 0ce2cb4794c2-9b374j1ddupd@snomSoft-000413FFFFFF CSeq: 22 NOTIFY Contact: <sip:207@172.16.16.180;user=phone> Content-Length: 349 Content-Type: application/dialog-info+xml Max-Forwards: 70 Event: dialog Subscription-State: active <?xml version="1.0"?> <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" state="full" version="12"> <dialog id="1" direction="initiator" call-id="e1b50917e909d311824d0090330200d6"> <state>terminated</state> <local> <identity>sip:207@172.16.16.180</identity> </local> <remote> <identity>sip:211@172.16.16.180</identity> </remote> </dialog> </dialog-info> SIP/2.0 200 Ok Via: SIP/2.0/UDP 172.16.16.180:5060;branch=z9hG4bK-311728C1;rport=5060 From: <sip:207@172.16.16.180;user=phone>;tag=2870350033 To: <sip:snom@172.16.16.180>;tag=bl4qd8azu6 Call-ID: 0ce2cb4794c2-9b374j1ddupd@snomSoft-000413FFFFFF CSeq: 22 NOTIFY Content-Length: 0