We have basic Asterisk setup currently. We moving office and I’m deciding between all out asterisk or an off-the-shelf solution, currently looking like an Avaya 406.

All of the basics I’m comfortable with. I’m worried that the sip accounts are going to get in a mess if i use asterisk. Currently we have two sip accounts per person, one for the office phone and one for a softphone. Our offices use hot-desking and softphones while off site. The Avaya has nice hotdesking features and the same extension can seamlessly be used across desk or softphone. I think with Asterisk I could get into a pickle. Our currently elmeg IP290s aren’t too friendly for salesmen to change sip account every morning depending on where they sit, hence why the have two extensions.

I suppose alot of this is more down the choice of handset. Any comments/suggestion are very welcome.


there is another easier way to do it… create a queue for each user, ringall strategy, no wrapuptime, no announce. Add to it the SIP channel of the external phone and an agent account (SIP/bobsphone and AGENT/1234 for example). Add agent account to agents.conf

when call comes in do something like this- Queue() it to their queue with the options ,tnr,20. That will play ringing to the caller, adn after 20 seconds goes by it will go to the next priority just like Dial(). Then Voicemail() as usual. Might wanna make a macro for this.

As a result, the call will simultaneously go to 1. their home IP phone and 2. to their agent account.

The agent account can be ‘logged into’ from any phone in the office. These phones will be set to otherwise not ring at all. When worker comes in in the morning he dials the extension to log in. he enters his agent # and password. Calls to his exten now go to his desk. At night he dials another number to log out. That phone no longer rings.

Hope that helps…


Thanks. a nice solution there. I hadn’t come across the agents in Asterisk yet.

I’ll do some reading/testing.

Thanks again,

This may be one reason to take a look at Trixbox first. FreePBX can do this without queues.

Actually, it probably isn’t a bad idea for most people to take a look at Trixbox first. That gives them an idea of what Asterisk is capable of. Then, once you get ready to start setting things up for production, I’d highly recommend installing asterisk from scratch.

But, at the very least, the VMWARE version of Trixbox would give a real good indication of what you can do with asterisk.

Just FYI, as i understand it the way Trixbox does it is with a handful of AstDB operations. When you log in, it adds that exten to AstDB in a certain way, then dials like Dial(${astdbentry1}&${astdbentry2}) etc. You can do this too, it’s just more complicated.

Ok - I don’t think agents are the way forward here because I’m running in to trouble transferring calls. this is a big problem for us - so I need another solution. Some how I need to map a user’s extension number (09xx) to a sip extension SIP/10 -> SIP/49

Any help appreciated,

Hot desking is a feature that Asterisk is VERY lacking in support of.

If you look at a commercial hotdesk solution, these will work across multiple systems. Also all the users features are mapped to the phone the user logs into. So for example: All the forwarding is mapped the key appearances are mapped to the new set, as well the message lite reflecting the message status of the logge in user.

Im sorry to say if the tender mentions hotdesking then I always put forard a Mitel. I just cant pass off call forwarding as Hotdesking, customers wont accept it.

I got a reasonably user friendly hot-desking setup. dial plan is a bit crude but you should get the idea:

;hotdesk login
exten => 501,1,Answer
exten => 501,n,Read(USER,sc_enter_extension,4)
exten => 501,n,Read(USERc,sc_enter_extension_confirm,4)
exten => 501,n,GotoIf($[${USER} = ${USERc}]?20:70)
;lookup old user stuff before loggin new usesr in - TODO: store in DB!
exten => 501,20,Set(OLDCID=${EXTMAPU_${USER}})
exten => 501,n,Set(OLDUSER=${EXTMAPC_${CALLERID}})
exten => 501,n,SetGlobalVar(EXTMAPU_${OLDUSER}=0)
exten => 501,n,SetGlobalVar(EXTMAPC_${OLDCID}=0)
exten => 501,n,RemoveQueueMember(uk_sales_team)
exten => 501,n,RemoveQueueMember(uk_sales_admin)
exten => 501,n,RemoveQueueMember(eu_sales_admin)
exten => 501,n,RemoveQueueMember(eu_sales_team)
exten => 501,n,RemoveQueueMember(prof_serv_admin)
exten => 501,n,RemoveQueueMember(marketing_admin)
exten => 501,n,RemoveQueueMember(finance_admin)
exten => 501,n,RemoveQueueMember(support_admin)
exten => 501,n,RemoveQueueMember(support_team)
exten => 501,n,RemoveQueueMember(scuk_ts)
exten => 501,n,RemoveQueueMember(sceu_ts)
exten => 501,n,RemoveQueueMember(other)
; set Extension Map var EXTMAP by User and EXTMAP by CALLERID (actual sip extension)
exten => 501,n,SetGlobalVar(EXTMAPU_${USER}=${CALLERID})
exten => 501,n,SetGlobalVar(EXTMAPC_${CALLERID}=${USER})
; log user in to relevant queue
exten => 501,n,Set(QUEUE=${DB(queues/${USER})})
exten => 501,n,Set(OTHERQUEUE=${DB(otherqueue/${USER})})
exten => 501,n,GotoIf(${QUEUE}?50:60)
exten => 501,50,AddQueueMember(${QUEUE},SIP/${CALLERID})
exten => 501,n,AddQueueMember(${OTHERQUEUE},SIP/${CALLERID})
exten => 501,n,Playback(sc_user_logged_in)
exten => 501,60,Playback(sc_user_logged_in)
exten => 501,n,Hangup()
;Loging extensions didn't match
exten => 501,70,Playback(sc_extensions_dont_match)
exten => 501,n,Goto(hotdesks,501,1)

;hotdesk logout
exten => 502,1,Answer()
exten => 502,n,Set(USER=${EXTMAPC_${CALLERID}})
exten => 502,n,SetGlobalVar(EXTMAPU_${USER}=0)
exten => 502,n,SetGlobalVar(EXTMAPC_${CALLERID}=0)
exten => 502,n,RemoveQueueMember(uk_sales_team)
exten => 502,n,RemoveQueueMember(uk_sales_admin)
exten => 502,n,RemoveQueueMember(eu_sales_admin)
exten => 502,n,RemoveQueueMember(eu_sales_team)
exten => 502,n,RemoveQueueMember(prof_serv_admin)
exten => 502,n,RemoveQueueMember(marketing_admin)
exten => 502,n,RemoveQueueMember(finance_admin)
exten => 502,n,RemoveQueueMember(support_admin)
exten => 502,n,RemoveQueueMember(support_team)
exten => 502,n,RemoveQueueMember(scuk_ts)
exten => 502,n,RemoveQueueMember(sceu_ts)
exten => 502,n,RemoveQueueMember(other)
exten => 502,n,Playback(sc_user_logged_out)
exten => 502,n,Hangup()

exten => 503,1,SayDigits(${EXTMAPC_${CALLERID}})
exten => 503,n,Hangup

;call hotdesk extension with proper CID
exten => _09XX,1,Answer()
exten => _09XX,n,GotoIf(${EXTMAPC_${CALLERID}}?10:20)
exten => _09XX,10,SetCallerID(${DB(users/${EXTMAPC_${CALLERID}})})
exten => _09XX,n,Dial(SIP/${EXTMAPU_${EXTEN}},8)
exten => _09XX,n,Voicemail(u${EXTEN})
exten => _09XX,20,Playback(sc_login_first)

;actual sip extensions
exten => _XX,1,SetCallerID(${DB(users/${EXTMAPC_${CALLERID}})})
exten => _XX,n,Dial(SIP/${EXTEN})

If the salesmen always use the same desk phone and a soft phone, then using a ring-group is a simple solution.

Say bob is at extension 233 (his desk). Set up his soft phone wherever (say 5000) and create a ring-group which is also extension 233 but it simultaneously calls 233 and 5000…meaning it will find him wherever.

You could add his cellphone to the ring group and pick him up anywhere.

If his office desk changes, then this will not work for you.


unfrotunately they move desks - this is the fundemental point really. The softphone issue is not really relevant currently. But my manager dumped hotdesking on me last minute, this is what I came up with. After trying to use Agents and seeing that they’re not really suitable.


HotDesking is big, Every Mitel system I have worked and trained o in the last 3 years have used Hot Desking , more recently every desk is a hot desk.
This is a big negative at the moment for Asterisk.

On the Mitel solution I can walk upto a desk phone enter my Hotdesk number. It will logme out if i am logged in else where, Set up the phone with all my keys, speed calls and callforwarding and light the message lite if I have any messages. Now of course the desk Im sitting at now is in the UK but It can be any desk in the network on any Mitel system. It can also be resiliant so if for example the system im on crashes(very unlikely) my set will be hosted of another system in the network.


well, thanks for selling me mitel. I hope you get your commission :wink:

but seriously. It’s not really asterisk’s fault about hotdesking, it requires phone compatability and afaik there are no standards for phones to give that level of interoperability. I use the Linksys SPA942 - a very good phone, but it would be nice if they open sourced the firmware, or somebody came up with a good standard for hot-desking or something. my solution is about 80% good - but it’s the little things like not being able to dynamically assign username on the phone’s screen, and call forwarding based on user login that’s accessable from the phone’s menu system etc.

It’s just those little usability issues here and there that could do with being tightened up - the commercial boys can do it easily but because we’re on the standards based side of the fence we have to hack stuff up or wait… Hmm, maybe that sounds more negative than I intended, I love * :smile:

Dont get me wrong, I love * and work on it day in day out, But I have a lot of customers who want hotdesking and * just cant do it. Its not just a phone thing it its also a */SIP thing with respect to lites etc.

The keys etc are a phone thing and this may be possible, with XML and the like.

The problem is your boss goes to a trade show and all the main systems do it and he comes back and wants it as well…

Every so often when I get time I look into it but time is very limited.


I was only pulling your leg about the mitel :smile:

would be nice to have extensions put in to all the components SIP, the phones and * to bring it in line with commercial systems. Perhaps Digium should come up with a handset that could alleviate many of the troubles and at the same time push the standards in the right direction.

wrt the xml stuff, the linksys phones do have a web interface that I’ve already got some perl to update the phone book, I suppose I could modify this code to update the display name and call it upon login. hmm, that would be sweet :smile:

/me heads to the shell :smile:

this works nicely :smile:

only annoying thing is that the spa942 phones reboot after changing the settings. now the script is in place to change phone settings I can extend it to other things too. very simple bit of perl. for those who’re interested:

This got me thinking and I think I have a solution of sorts.
I will report back when its done, but after thinking about it for the Aastra its can be done fairly easily.
Basily the phone will take all the setting of a “hotdesk” set including MSG lites keys names etc.

sounds promising. let us know how you get on!

hi hoshy/ianplain,

any joy with a hot desking solution?

I’m using a bunch of aastra phones and need to have a phone number follow the user based on where they’re logged on and there doesn’t seem to be a module for this yet.

Hey guys,

I use both SPA942 as well as Polycom 550 for my Asterisk. Of all the hotdesking solutions. I think it would be best if somehow we could get the phones such as they ask login at the screen itelf and can configure themselves with just the 4 digit extension.

To make it more clear. Since Polycom 550 supports xhtml applications, would it be possible to just enter the extension at the login screen and the phone configures itself with that extension. We have all 4 digits extension actually a 300 DID PRI which terminates on each phone with their DID extension and even user use that same extension. So in my case phone and user are not different only the place changes.

So if a user sits on a table and just on the startup screen enters xxxx which is his did no for outside world, nothing like that. All the server and password or other registry related settings are same for every phone.

Can somebody suggest me a solution…Thanks in advance.