In my A* installation, all agents are allowed to roam, all the phones are multi-line, and all the SIP channels are a mixture of letters and numbers. When an agent wants to add himself as a queue member using Q-M, the only "extension" he knows about for a phone is a 3-digit number that appears at the top of the phone's display. So I have to convert that known extension to a corresponding SIP line ID. Q-M has no facility to make this conversion, so I'm forced to use A*.
For the A* conversion, I've created a separate MySQL database, with a dedicated table containing columns for the known extensions and the SIP line IDs. Then I modified the logic for extension 35 in dialplan context [queuemetrics] to let A* make an ODBC function call that determines a replacement value for var ${QM_AGENT_LOGEXT} before calling AddQueueMember. No changes were required to the extensions for removing, pausing or unpausing the agent.
In the case where the agent has entered an invalid extension when joining, the ODBC function returns a blank, and I make the var ${QUEUENAME} blank so as to force the AddQueueMember call to fail. Then no entry to the queue log is generated, and the Q-M realtime display shows no change in membership.
I hope this info is useful to anyone struggling with the problem of agents logging in with invalid extensions.
- Dennis