Asterisk Key System Emulation

Multi Phone Hold


We have a number of locals that dial more than one set and, on our legacy Nortel Meridian, the users used to be able to place the call on hold on one set, and pick it up on another. When we switched to Asterisk, this was the most complained about missing feature, so I came up with the following trickery to make our Polycoms emulate the same functionality.

extensions.conf


First, you need to create a couple of entries in your dialplan to handle the call:

exten => 9002,n,Macro(dnv-fake-sla,SIP/4010&SIP/4011&SIP/4012)

This line basically replaces the Dial() line in your existing setup. Next, we have the macro that gets called by this line:

[macro-dnv-fake-sla]
; ${ARG1} List of extensions
; ${ARG2} Timeout
; ${ARG3} Dial options

exten => s,1,Set(DialString=${ARG1})
exten => s,n,Set(TRANSFER_CONTEXT=fake-sla)
exten => s,n,Dial(${DialString},${ARG2},${ARG3}tT)

Here is the fake-sla context referred to above:

[fake-sla]
exten => ,1,Set(TIMEOUT(digit)=1)
exten => ,n,SIPAddHeader(Alert-Info: silent)
exten => ,n,Dial(${DialString},60,motT)
exten => ,n,SIPAddHeader(Alert-Info: default)
exten => ,n,Dial(${CUT(BLINDTRANSFER,-,-2)},,motT)

features.conf


The following line in the [general] section makes the transfer take as little time as possible:

transferdigittimeout => 1

sip.cfg


For the Alert-Info settings to work on Polycom phones, you need to add these lines to your sip.cfg, right under the existing <alertInfo/> entries:

<alertInfo voIpProt.SIP.alertInfo.3.value="silent" voIpProt.SIP.alertInfo.3.class="2"/>
<alertInfo voIpProt.SIP.alertInfo.3.value="default" voIpProt.SIP.alertInfo.3.class="1"/>

So, we now have a setup whereby a call to 9002 will call 3 phones. Any of these phones can answer the call, and press '#' to place the call 'on hold'. What actually happens is that the call gets resent to the same phones with a a silent ring. The caller hears music on hold until the call is answered by any of the three phones. If nobody picks up the call within 60 seconds, the call gets resent to the set that originally placed the call on 'hold', only this time it rings. This can be repeated ad infinitum.

phonexxxx.cfg


You can further enhance the 'on hold' experience on Polycom phones by mapping the blue 'Hold' button to send '#' on the phones. This is done by adding the following line to the phone's cfg file, between the <phone> tags:

<keys key.IP_500.10.function.prim="DialpadPound" key.IP_600.40.function.prim="DialpadPound"/>

Multi Phone Hold


We have a number of locals that dial more than one set and, on our legacy Nortel Meridian, the users used to be able to place the call on hold on one set, and pick it up on another. When we switched to Asterisk, this was the most complained about missing feature, so I came up with the following trickery to make our Polycoms emulate the same functionality.

extensions.conf


First, you need to create a couple of entries in your dialplan to handle the call:

exten => 9002,n,Macro(dnv-fake-sla,SIP/4010&SIP/4011&SIP/4012)

This line basically replaces the Dial() line in your existing setup. Next, we have the macro that gets called by this line:

[macro-dnv-fake-sla]
; ${ARG1} List of extensions
; ${ARG2} Timeout
; ${ARG3} Dial options

exten => s,1,Set(DialString=${ARG1})
exten => s,n,Set(TRANSFER_CONTEXT=fake-sla)
exten => s,n,Dial(${DialString},${ARG2},${ARG3}tT)

Here is the fake-sla context referred to above:

[fake-sla]
exten => ,1,Set(TIMEOUT(digit)=1)
exten => ,n,SIPAddHeader(Alert-Info: silent)
exten => ,n,Dial(${DialString},60,motT)
exten => ,n,SIPAddHeader(Alert-Info: default)
exten => ,n,Dial(${CUT(BLINDTRANSFER,-,-2)},,motT)

features.conf


The following line in the [general] section makes the transfer take as little time as possible:

transferdigittimeout => 1

sip.cfg


For the Alert-Info settings to work on Polycom phones, you need to add these lines to your sip.cfg, right under the existing <alertInfo/> entries:

<alertInfo voIpProt.SIP.alertInfo.3.value="silent" voIpProt.SIP.alertInfo.3.class="2"/>
<alertInfo voIpProt.SIP.alertInfo.3.value="default" voIpProt.SIP.alertInfo.3.class="1"/>

So, we now have a setup whereby a call to 9002 will call 3 phones. Any of these phones can answer the call, and press '#' to place the call 'on hold'. What actually happens is that the call gets resent to the same phones with a a silent ring. The caller hears music on hold until the call is answered by any of the three phones. If nobody picks up the call within 60 seconds, the call gets resent to the set that originally placed the call on 'hold', only this time it rings. This can be repeated ad infinitum.

phonexxxx.cfg


You can further enhance the 'on hold' experience on Polycom phones by mapping the blue 'Hold' button to send '#' on the phones. This is done by adding the following line to the phone's cfg file, between the <phone> tags:

<keys key.IP_500.10.function.prim="DialpadPound" key.IP_600.40.function.prim="DialpadPound"/>

Created by: CunningPike, Last modification: Fri 05 of Nov, 2010 (22:19 UTC) by admin
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+