How's the best way to set up agents

So I’m trying to set up queues and agents and am trying to figure out the best way to set up what I need to do. And what I need to do is basically get Asterisk to mimic my company’s current phone system. As close as possible of course. And my main problem is queues and agents. Currently, for our queues and agents, a person is assigned a hot-desk extension, which they use to login to any phone and then they can send and receive calls at that extension. There is no seperate extension and agent id–they are pretty much the same thing. But the extension moves around with them to wherever they log in. The advantage is that they always have the same extension. When no one is logged into a phone, the phone is assigned a catch all username called “no user” which has limited dialing capabilities. With Asterisk, when you log in an agent, they assume the extension of the phone that they have just logged in under. Yes, if they are a member of a queue, they will always receive calls from that queue regardless of what extension they are at, but for DID and internal calls, you would never know which extension to dial to reach a person setup in such a way.

So here’s what I’ve come up with (but I, of course, still have questions…): Match the agent ID to an extension. Assign an agent their ID and then assign a certain working area, and a assign certain phone to that working area and assign that phone an extension that is the same as their agent id. The pitfall here is that if you do it this way, only one person could utilize that working area and that phone. Agents working in shifts at the same work area and same phone would not work–unless multiple agents used the same extension, which again kills your DID and internal calling. Of course, you could assign the extension the phone based on time, but what if you want to have open seating and you want any agent to sit in any work area at any given time? You can see it starts to get messy when you try to work it out this way. Also, if you did do the matched extension and agent id, if a person was re-assigned to a new work area, they either have to take their phone with them, or you get to setup a new phone with their extension. Perhaps there is something in Asterisk that I don’t know about that could benefit me here?

I’m thinking another way to do something like what I need is via XML, but I’m not exactly sure how to do it this way. Can you assign a phone a certain extension and then give it an option for “logging in” using their agent id and then based on their agent id, push a new XML file out that assigns their specific extension. Can you re-assign a new extension to a phone this way? I believe this would be a decent way to set this up (if the XML files aren’t too complicated) but I’m not exactly sure how to do it.

Any suggestions, pointers, directions…?

Thanks!
Ben Ferguson