Content

Page tree



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:

  1. "Ext C" (remote) calls the monitored extension "Ext 2" (local).
  2. 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:

  1. early state --> dialog state is "ringing"
  2. recipient direction --> the monitored extension "Ext 2" is the recipient of the incoming call
  3. <local> and <remote> elements --> specifies remote ("Ext C") and local ("Ext 2") identity/target information
  4. call-id --> the ID of the incoming call from "Ext C" to "Ext 2"


Note: The absence of <local> and <remote> elements in the NOTIFY body will only allow the BLF feature (LEDs).


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

  1. Pressing the free function "Extension" key or
  2. 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:

  1. early state --> dialog state is "ringing"
  2. recipient direction --> the monitored extension "Ext 2" is the recipient of the incoming call
  3. <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

  1. Pressing the free function "Extension" key or
  2. 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:

  1. early state within the NOTIFY message body --> dialog state is "ringing"
  2. recipient direction within the NOTIFY message body --> the monitored extension "Ext 2" is the recipient of the incoming call
  3. <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