Note |
---|
Applies to VoipNow 3.x.x! |
Call pickup normally works only with short numbers. So when 0003*001 calls 0003*002, a member of the 0003 organization can only pick up the incoming call by dialing *21002. In some situations, customers would rather pick up the call by dialing *210003*002; for example, when a BLF key is monitoring 0003*002 and the phone has the option to pick up on BLF press, the phone will attempt to pick up the call with *210003*002, but it won't work. To make it work, you need to make a couple of dialplan changes that we have described below. Also, basic understanding of the Asterisk dialplan is required.
Step-by-step guide
The following macro checks the $EXT length (the extension to be picked up). If the extension has 8 characters (full number), it strips the first 5 characters (in this case, 0003*) and then follows the original dialplan. This macro works for the classic XXXX*YYY extension format. If you have a different extension format, you need to modify the macro accordingly.
To apply the change:
Paste this macro in /etc/asterisk/extensions_custom.conf.
Code Block [app-pickup] ; handles call pickup exten => *210,1,Gosub(macro-retry-pickup,s,1(${CALLERCHAN:0:-${EXTLEN}},fifo,*21)) exten => *290,1,Gosub(macro-retry-pickup,s,1(${CALLERCHAN:0:-${EXTLEN}},lifo,*29)) exten => *211,1,GotoIf($[${LEN(${EXT})} = 8]?2:12) exten => *211,2,Set(PICKUPPATTERN=${EXT:5}) exten => *211,3,Set(TOPICKUPEXTEN=${CALLERCHAN:0:-${EXTLEN}}${PICKUPPATTERN}) exten => *211,4,Gosub(macro-retry-pickup,s,1(${TOPICKUPEXTEN},fifo,*21${PICKUPPATTERN})) exten => *211,12,Set(PICKUPPATTERN=${EXT}) exten => *211,13,Set(TOPICKUPEXTEN=${CALLERCHAN:0:-${EXTLEN}}${PICKUPPATTERN}) exten => *211,14,Gosub(macro-retry-pickup,s,1(${TOPICKUPEXTEN},fifo,*21${PICKUPPATTERN})) exten => *291,1,Set(PICKUPPATTERN=${EXT}) exten => *291,2,Set(TOPICKUPEXTEN=${CALLERCHAN:0:-${EXTLEN}}${PICKUPPATTERN}) exten => *291,3,Gosub(macro-retry-pickup,s,1(${TOPICKUPEXTEN},lifo,*29${PICKUPPATTERN})) exten => *212,1,Gosub(macro-extisactive,s,1(${CALLERCHAN})) ;verify if extension is active exten => *212,2,Gosub(macro-multiperm,s,1) exten => *212,3,Gosub(macro-setextenv,s,1(${CALLERCHAN})) exten => *212,4,GotoIf($["foo${TARGETVNODE}" != "foo"]?5:7) exten => *212,5,PickupVNode(${TARGETVNODE}) exten => *212,6,Goto(9) exten => *212,7,GotoIf($["foo${TOPICKUPCHANNEL}" != "foo"]?8:10) exten => *212,8,PickupChan(${TOPICKUPCHANNEL}) exten => *212,9,GotoIf($["foo${PICKEDUP}" = "foo"]?10:11) exten => *212,10,Playback(no-call-pickup) exten => *212,11,Hangup
Reload the dialplan.
Code Block asterisk -rx "dialplan reload"
Info |
---|
It's always a good ideea to do this test after hours. |
Related articles
Content by Label | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Except where otherwise noted, content in this space is licensed under a Creative Commons Attribution 4.0 International.