Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
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:

  1. 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
  2. Reload the dialplan.

    Code Block
    asterisk -rx "dialplan reload"
Info

It's always a good ideea to do this test after hours.

Content by Label
showLabelsfalse
max5
sortmodified
showSpacefalse
reversetrue
typepage
labelscall pickup extension voipnow

Page properties
hiddentrue
Related issues 

Except where otherwise noted, content in this space is licensed under a Creative Commons Attribution 4.0 International.