We have an odd problem with our call center agents who log into our customer service queues using a custom script that ends up subscribing the last caller’s CallerID number as a logged in queue agent. This is something of a problem, as I’m sure you can imagine!
Here is the macro we call via *26 and use to allow our agents to log in:
[macro-call-center-customer-service-login]
exten => s,1,Wait(1)
exten => s,n,Macro(user-callerid,SKIPTTL,)
exten => s,n,Set(CALLBACKNUM=${AMPUSER})
exten => s,n,AddQueueMember(15000,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,AddQueueMember(15001,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,AddQueueMember(15100,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,AddQueueMember(15101,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,AddQueueMember(15200,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,AddQueueMember(15201,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,AddQueueMember(15400,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,AddQueueMember(15401,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,AddQueueMember(15402,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,AddQueueMember(15403,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,AddQueueMember(15500,Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,System( echo "${EPOCH}|${UNIQUEID}|NONE|Agent/${CALLBASCKNUM}|AGENTLOGIN|-" >> /var/log/asterisk/queue_log )
exten => s,n,UserEvent(Agentlogin,Agent: ${CALLBACKNUM})
exten => s,n,Wait(1)
exten => s,n,Playback(agent-loginok&with&extension)
exten => s,n,SayDigits(${CALLBACKNUM})
exten => s,n,Macro(user-callerid,)
exten => s,n,dbDel(DND/${AMPUSER})
exten => s,n,Set(STATE=NOT_INUSE)
exten => s,n,Gosub(app-dnd-off,sstate,1)
exten => s,n(hook_1),Playback(do-not-disturb&de-activated)
exten => s,n,Macro(hangupcall,)
exten => sstate,1,Set(DEVSTATE(Custom:DND${AMPUSER})=${STATE})
exten => sstate,n,Set(DEVICES=${DB(AMPUSER/${AMPUSER}/device)})
exten => sstate,n,GotoIf($["${DEVICES}" = "" ]?return)
exten => sstate,n,Set(LOOPCNT=${FIELDQTY(DEVICES,&)})
exten => sstate,n,Set(ITER=1)
exten => sstate,n(begin),Set(DEVSTATE(Custom:DEVDND${CUT(DEVICES,&,${ITER})})=${STATE})
exten => sstate,n,Set(ITER=$[${ITER} + 1])
exten => sstate,n,GotoIf($[${ITER} <= ${LOOPCNT}]?begin)
exten => sstate,n(return),Return()
; end of [macro-call-center-customer-service-login]
Any idea how Asterisk gets the CallerID number of the most recent caller to the extension that executes this macro as the agent number to be subscribed?