Skip to main content

More Pickup-Groups for Tenants in MTE

Posted by mak on Tue, 02/24/2009

At the moment a tenant can only choose two Pickup-Groups in the PBX-Manager: "Tenant ID" or "None".

ALL my customers want more Pickup-Groups (i.e. every Room with four employees should have his own Pickup-Group). When i edit the config files manually, the pbx-manager overwrites this setting after making some changes.

I know that asterisk only allows 64 Pickup-groups. But for one system with some big customers this would be enough.

Is it planned to add more pickup-groups for a tenant?


Submitted by eeman on Tue, 02/24/2009 Permalink

No, there is no plans to change the structure of pickup groups in MTE. What you need to do is write a script that uses the Pickup() application. You will need to call it 3 times to make sure you secured the correct context...

here is an example picking up extension 201

exten => s,1,Pickup(201@from-inside-redir${TL_DASH}${tenant})

exten => s,n,Pickup(201@local-extensions${TL_DASH}${tenant})

exten => s,n,Pickup(201@from-outside-redir${TL_DASH}${tenant})

you could write a script that either A) strips the first digit and picks up the extension of remaining digits. or B) write a script that would stack them the way tl-ringgroup-all works and then define feature codes specific for a cluster of phones.

I am partial to A myself, our customers already had a 7+extension to go straight to their voicemail and a 4+extension to speaker page them. Creating 5+extension for directed call pickup fit right in with the rest of the dialplan.

Submitted by eeman on Wed, 08/12/2009 Permalink

link not found. I can assure you that 0-63 is hard set in the source code. you need to petition digium to make such changes.

Submitted by eeman on Wed, 08/12/2009 Permalink

you have misread this thread, that thread is how to use PICKUPMARK which is aready being used in MTE. Thats called... wait for it...

<tada> Directed Call Pickup </tada>

which is not the same thing as pickupgroup and callgroup. As of right now when a call gets set to tl-userexten it sets a PICKUPMARK. One sets a feature code similar to direct-to-voicemail where you invoke an extension... *8+101 to retrieve 101's ringing call.

Submitted by dozment on Wed, 08/12/2009 Permalink

Erik, can you give us an example of the script you mentioned on 2/24? I'm not sure I understand.

Submitted by dozment on Wed, 08/12/2009 Permalink

Erik, can you give us an example of the script you mentioned on 2/24? I'm not sure I understand.

Submitted by olekaas on Wed, 08/12/2009 Permalink

Please read this post carefully (Hope the url works this time):

http://tinyurl.com/qz56w6

As I read it (several times now) directed call pickup is made to work like a pickup group by using astdb to store the extensions that will be attempted to pickup calls from.

/Ole

Submitted by eeman on Thu, 08/13/2009 Permalink

as I stated, directed call pickup using PICKUPMARK is already implemented in pbx manager in the user extension script. It cannot be redefined to perform another task. The method designed (for both MTE and STE) is more than satisfactory to give someone the ability to do a call retrieval. It might not be as wildcard as the *8 sip channel method, but it has other advantages -- such as specifying which extension to pickup in the event that there are multiple invites lingering, and the ability to pickup any offered call from any channel driver instead of only within chan_sip (before you could not *8 a call offered to a zap/dahdi/iax2 channel from a sip channel).

for you to re-define this would require you to create your own replacement extension macro so that PICKUPMARK is not declared. Obviously forking off of the userexten and userexten-base would leave you out of any future feature's and improvements.

I think you should experiment with the one already developed before deciding on the latter solution since it puts you in a terrible place with regards to getting help identifying problems.

Submitted by olekaas on Thu, 08/13/2009 Permalink

Erik, I took a stab at Directed Call Pickup before I started messing in this thread. Asterisk barfs when I try to use the function:

channel.c:4397 ast_get_group: Ignoring invalid group 6005 (maximum group is 63)

6005 is the extension I try ty pickup. Did I miss something? Do I need to configure anything else than the feature code?

Anyway, people are lazy and they simply love that they can pickup any call ringing somewhere without thinking about which extension it is ringing on. So asterisk is hard wired to 64 groups starting at '0' and TL MTE assigns groups based on tenant id. Which means that:

- one group is lost because tenant id starts at '1'

- another group is because the first tenant '1' is the template 'thirdlane'

- each time you delete a tenant, that id is not reused and the group is lost.

Would it be difficult or hard to add a config page to TL where you can assign group numbers to tenants? Maybe even assign multiple groups to tenants.

/Ole

Note: I've totally forgotten about this limitation and we are way beyond the 64 limit on our servers. Now some of the customers are complaining. A warning that pops up when creating tenants with id higher than 63 might have prevented some agony.

Submitted by eeman on Thu, 08/13/2009 Permalink

well tenant ID might be changing in future versions but that change will require a migration rather than upgrade. I'm sure you're aware of the issue with conference rooms numbered based on tenant ID yet the tenant can pick a variable length number, so tenant 2 and tenant 22 might see each others conference rooms. Looking into the tenants starting with 1000 and making conference rooms a fixed 2 digit numbers that auto increment 01 - 99 so 100001 belongs to tenant 1000 and its room #1

how to use directed call pickup...

create feature code, pattern _*86XXX (based on your example)

Description: Directed Call Pickup

script: tl-directed-call-pickup

invoking feature code length: 2 (means number of digits to strip, we're striping *8)

save and reload.

call 6005 with some phone, from another phone dial *86005 while its ringing..

you should be able to retrieve that call. Same thing can be done with a single digit if you want to just make the pattern _86XXX and then make invoking code length 1. then 8+ext will retrieve that call.