The portion I forgot to mention: Our agent login extension checks AGENTBYCALLERID to make sure no one is already logged into the phone, before doing agentcallbacklogin. If you don't do this, then it's entirely possible for two agents to be logged into the same phone. However, only one will be shown in AGENTBYCALLERID for the phone.
What this means is, both agents will be able to receive calls at the same phone, but the first agent who logged in won't be able to log out. They'd have to log into a different phone, and then log out of it, to log out. To avoid this, our agent login extension checks the AGENTBYCALLERID, and if it's set, gives an option to either log out the currently logged in extension, or to stay logged in. Unfortunately we don't know of a way to both log out the current extension, and log in the new one, without two extension dials. Alan On Mon, 3 Apr 2006, Matt wrote: > > Our solution to the "agent log out" problem is admittedly imperfect in > > the general case, but it works well enough if you can do without agent > > passwords. > > > > - This only works if agents don't have passwords. You could probably > > modify it to look up passwords in real time, but it wasn't important > > enough for us. > > - Use ${AGENT_BY_CALLERID_${CALLERID}} to get the agent logged into the > > dialling extension. > > - Dial a local extension and send # after dial, to log out and press # > > without agent intervention. > > > > > > The extension agents dial to log out looks like this. It calculates the > > logged in agent and calls the logout macro (below), or if there's no > > agent logged in, just plays back a message. > > > > [macro-agent_logout_ext] > > exten => s, 1, set(agent=${AGENTBYCALLERID_${ARG1}}) > > exten => s, 2, gotoif(${agent}?3:101) > > exten => s, 3, macro(agent_logout,${agent}) > > exten => s, 101, macro(answer_wait) > > exten => s, 102, playback(agent-loggedoff) > > exten => s, 103, hangup() > > > > > > The agent logout macro has a bit of a hack to send # to > > agentcallbacklogin after the agent ID is entered. In retrospect I'm not > > sure the global var needs to be global, here. > > > > Note that the agent hears agentcallbacklogin's "the agent is logged off" > > message, except the initial portion is cut off briefly. > > > > [macro-agent_logout] > > > > exten => s, 1, setglobalvar(agent=${ARG1}) > > exten => s, 2, noop(agent ${agent}) > > exten => s, 3, dial(local/[EMAIL PROTECTED]/n,,D(w#)o) > > > > exten => logout, 1, noop(agent logout ${agent}) > > exten => logout, 2, wait(1) > > exten => logout, 3, agentcallbacklogin(${agent},,@shared_phones) > > > > > > I hope this helps. > > > > Alan Ferrency > > pair Networks, Inc. > > [EMAIL PROTECTED] > > > > > > _______________________________________________ > > --Bandwidth and Colocation provided by Easynews.com -- > > > > Asterisk-Users mailing list > > To UNSUBSCRIBE or update options visit: > > http://lists.digium.com/mailman/listinfo/asterisk-users > > > > Hey that works really really well! Thanks! > _______________________________________________ > --Bandwidth and Colocation provided by Easynews.com -- > > Asterisk-Users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users > _______________________________________________ --Bandwidth and Colocation provided by Easynews.com -- Asterisk-Users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users