Content
Introduction
Call pick-up is a feature of snom VoIP phones that allows one party to answer a ringing call to one of the monitored extensions.
Example:
- "Ext C" (remote) calls the monitored extension "Ext 2" (local).
- While ringing "Ext 1" can pickup "Ext C"'s call instead of "Ext 2"
Methods
Snom phones offer various methods to perform call pick-up from the ringing extension:
- Methods 1/2 require a valid (active) subscription of the monitored extension "Ext 2" and the dialog state NOTIFY to have certain information in the message body (<remote> and <local> for both, call-id for Method 1), in addition to the state of the extension.
- Method 3 can be used if only the state of the extension is delivered withiun the NOTIFY message body.
- Method 4 does not use SUBSCRIBE/NOTIFY mechanism. Read about possible implementation in this article.
(1) Replaces- Header
This method requires the following elements within the NOTIFY message body:
- early state --> dialog state is "ringing"
- recipient direction --> the monitored extension "Ext 2" is the recipient of the incoming call
- <local> and <remote> elements --> specifies remote ("Ext C") and local ("Ext 2") identity/target information
- call-id --> the ID of the incoming call from "Ext C" to "Ext 2"
The following example NOTIFY using PBXnSIP PBX enables the phone to offer call pick-up:
Received from ...: NOTIFY sip:Ext 1 ... Via: ... From: <sip:Ext 2>... To: <sip:Ext 1>... Call-ID: 3c26702869ae-vggafzgfyqmq CSeq: 7267 NOTIFY Max-Forwards: 70 Contact: ... Event: dialog Subscription-State: active;expires=150 Content-Type: application/dialog-info+xml Content-Length: 444 <?xml version="1.0"?> <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="6" state="full" entity="sip:Ext 2"> <dialog id="3c323f67d842-m2q5her17ncc" call-id="3c323f67d842-m2q5her17ncc" direction="recipient"> <state>early</state> <remote> <identity>sip:Ext C</identity> <target uri="sip:Ext C"/> </remote> <local> <identity>sip:Ext 2</identity> <target uri="sip:Ext 2"/> </local> </dialog> </dialog-info> ...
The status of the LED assigned to the free function "Extension" key is blinking (all snom3x0).
Additionally - on snom360 and snom370 - the "Calls" screen appears automatically (if callpickup_dialoginfo was set to "ON") and displays the remote and local target uri ("Ext C" --> "Ext 2"). For further details see the "Calls" screen description.
The actual call pick-up can now be performed by
- Pressing the free function "Extension" key or
- Selecting the ringing call from the "Calls" screen by pressing
A Call pick-up INVITE to the remote-target uri (Ext C) will be sent to the PBX. ONLY the call-id triggers the phone to add the INVITE "Replaces" header and inserts the "call-id". The PBX should use the call ID from the "Replaces" header to replace the former call destination "Ext 2" by "Ext 1's" extension: (compare this description).
Sent to ...: INVITE sip:Ext C SIP/2.0 Via: ... From: <sip:Ext 1>... To: <sip:Ext C> Call-ID: ... CSeq: 1 INVITE Max-Forwards: 70 Contact: <sip:Ext 1... Replaces: 3c323f67d842-m2q5her17ncc P-Key-Flags: resolution="31x13", keys="4" User-Agent: snom370/7.1.33 Accept: application/sdp Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, SUBSCRIBE, PRACK, MESSAGE, INFO Allow-Events: talk, hold, refer, call-info Supported: timer, 100rel, replaces, from-change Session-Expires: 3600;refresher=uas Min-SE: 90 Content-Type: application/sdp Content-Length: 450 ...
(2) Remote Target URI
This method requires the following elements within the NOTIFY message body:
- early state --> dialog state is "ringing"
- recipient direction --> the monitored extension "Ext 2" is the recipient of the incoming call
- <local> and <remote> elements --> specifies remote ("Ext C") and local ("Ext 2") identity/target information
Note: The absence of <local> and <remote> elements in the NOTIFY body will only support the BLF feature.
The following example NOTIFY using PATCHED Asterisk PBX 1.4.18 enables the phone to offer call pick-up:
Received from ...: NOTIFY sip:Ext 1... SIP/2.0 Via: ... From: <sip:Ext 2... To: <sip:Ext 1>... Contact: ... Call-ID: 3c2670243c6f-7c6lut8mw5if CSeq: 168 NOTIFY User-Agent: Asterisk PBX Max-Forwards: 70 Event: dialog Content-Type: application/dialog-info+xml Subscription-State: active Content-Length: 411 <?xml version="1.0"?> <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="66" state="full" entity="sip:11@sip.vpbx.de"> <dialog id="11" direction="recipient"> <local> <identity display="11">11</identity> <target uri="sip:Ext 1"/> </local> <remote> <identity display="">sip:No Ext</identity> <target uri="sip:*8Ext 2"/> </remote> <state>early</state> </dialog> </dialog-info> ...
The status of the LED assigned to the free function "Extension" key is blinking (all snom3x0).
Additionally - on snom360 and snom370 - the "Calls" screen appears automatically and displays the remote and local target uri ("Ext C" --> "Ext 2"). For further details see the "Calls" screen description.
The actual call pick-up can now be performed by
- Pressing the free function "Extension" key or
- Selecting the ringing call from the "Calls" window by pressing
Since the call-id is absent no "Replaces" header will be inserted. Instead a call pick-up INVITE to the remote-target uri (*8Ext 2) will be sent to the PBX. The prefix "*8" (star code 8) instructs the PBX to perform the call pick-up by connecting "Ext C"'s call to "Ext 1":
Sent to ...: INVITE sip:*8Ext 2 SIP/2.0 Via: ... From: <sip:Ext 1>... To: <sip:No Ext> Call-ID: 3c27b991342c-leg601znjcrs CSeq: 1 INVITE Max-Forwards: 70 Contact: <sip:Ext 1... P-Key-Flags: resolution="31x13", keys="4" User-Agent: snom360/Test Accept: application/sdp Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, SUBSCRIBE, PRACK, MESSAGE, INFO Allow-Events: talk, hold, refer, call-info Supported: timer, 100rel, replaces, from-change Session-Expires: 3600;refresher=uas Min-SE: 90 Content-Type: application/sdp Content-Length: 456 ...
The identity display of the <remote> tag will be used to refresh the caller ID of "Ext C" in the phone's display.
Note: The absence of <local> and <remote> tags in the NOTIFY body will only trigger the LED (BLF).
(3) Call Pickup Code
This method requires:
- early state within the NOTIFY message body --> dialog state is "ringing"
- recipient direction within the NOTIFY message body --> the monitored extension "Ext 2" is the recipient of the incoming call
- <callpickup-code> prefix:
- FW Version <=7.1.30: free function "Extension" key -->
- FW Version >=7.1.33: free function "BLF" key --> combines Speed Dial + BLF + Call Pick-Up
- Example: Configure "123@myasterisk|*8" in the appropriate "number" field --> when pressing this key an INVITE to *8123@myasterisk is sent regardless to the <remote> and <local>
The following example NOTIFY is sent by an UNPATCHED Asterisk PBX, 1.4.6):
Received from ... NOTIFY sip:Ext 1 SIP/2.0 Via: ... From: <sip:Ext 2>;tag=as7c91f908 To: <sip:Ext 1>;tag=65kiy8ma5e Contact: <sip:Ext 2> Call-ID: 3c26702d177e-v8ee1tww0yeq CSeq: 271 NOTIFY User-Agent: Asterisk PBX Max-Forwards: 70 Event: dialog Content-Type: application/dialog-info+xml Subscription-State: active Content-Length: 222 <?xml version="1.0"?> <dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="169" state="full" entity="sip:Ext 2"> <dialog id="mal" direction="recipient"> <state>early</state> </dialog> </dialog-info>
The absence of <local> and <remote> elements in the NOTIFY body DOES NOT enable the phone to offer call pickup but only permit the BLF feature, i.e.the LED assigned to the free function "BLF" key is blinking (all snom3x0). Note: There will be no "Calls" window displayed neither!
However, a call pick-up on the PBX can be initiated by sending an INVITE to <callpickup-code>Ext 2. The prefix <callpickup-code> instructs the PBX to perform the call pick-up by connecting "Ext C"'s call to "Ext 1". After pressing the free function "BLF" key the following INVITE is sent, if "*8" has been specified as <callpickup-code>:
Sent to ... INVITE sip:*8Ext 2 SIP/2.0 Via: ... From: <sip:Ext 1>;tag=iztjfxkrxm To: <sip:*8Ext 2> Call-ID: 3c33c683b335-sqo80sv564qw CSeq: 1 INVITE Max-Forwards: 70 Contact: <sip:Ext 1>;flow-id=1 P-Key-Flags: resolution="31x13", keys="4" User-Agent: snom370/7.1.33 Accept: application/sdp Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, SUBSCRIBE, PRACK, MESSAGE, INFO Allow-Events: talk, hold, refer, call-info Supported: timer, 100rel, replaces, callerid Session-Expires: 3600;refresher=uas Min-SE: 90 Content-Type: application/sdp Content-Length: 471 ...
(4) LED Remote Control
Further Information
Related articles