[Asterisk-Users] Multitenant Call Center Setup
Waldo Rubinstein
waldo at trianet.net
Fri Oct 21 01:23:55 MST 2005
Lenz,
Thanks for the response. I agree with you. However, I have a couple
of questions:
1) How to do a fake queue_log registration
2) One of the needs I have is to be able to generate the calls
received or made by an agent in real time. I figured I could do this
by querying the CDR, but I was wondering how to "flag" the calls made/
received by the agent in such a way that I could identify them in the
CDR. I guess I could always write a script that would insert queue
events into a database and then I could cross query the CDR with the
queue_log tables to figure out which was the last agent logged in on
a particular station and match that against the dstchannel CDR
column, but that could be hairy.
In order to address #2, I thought of doing the following (I haven't
tried this yet):
1) Create an extension the agent would dial to log in. This extension
could look something like:
1,AGI(get_valid_agent)
2,GotoIf($[ "${AGENT}" = "" ]?9:6)
3,DBPut(agents/${CHANNEL}=${AGENT})
4,AddQueueMember(queue_name)
5,Playback(agent-loginok)
6,Hangup()
where the AGI script will prompt the user to enter an agent id which
it could verify against a database for this tenant, which would then
allow me to have multiple agents 1001 (for example) for different
tenants. CHANNEL would be a cleaned version of the regular CHANNEL
variable with only the technology and peer name, for example, only
SIP/1234 instead of SIP/1234-2bc7 and AGENT would be the agent id
validated by the AGI script, for example, 1001.
2) Say my inbound calls are routed to an "incoming" context, I would
add this to the incoming context
[incoming]
...
exten => h,1,DBGet(AGENT=agents/${BRIDGEPEER})
exten => h,2,SetAccount(${AGENT})
where BRIDGEPEER would be a cleaned version of the regular BRIDGEPEER
variable with only the technology and peer name, for example, only
SIP/1234 instead of SIP/1234-6a67.
This would allow me to set the Account Code in the CDR to the agent
logged in using that station for calls distributed by the Queue
application.
3) In the contexts that allow my agents to make outbound calls, I
would add something like:
DBGet(AGENT=agents/${CHANNEL})
SetAccount(${AGENT})
where CHANNEL would be a cleaned version of the regular CHANNEL
variable with only the technology and peer name, for example, only
SIP/1234 instead of SIP/1234-92b3
This would allow me to set the Account Code in the CDR to the agent
logged in using that station whenever outbound calls are made on that
extension. I could even deny the station from placing outbound calls
if AGENT is blank, meaning that no agent has logged in yet.
4) Finally, I would create an extension for an agent to log out, that
could look like this:
RemoveQueueMember(queue_name)
DBDel(agents/${CHANNEL})
Playback(agent-loggedoff)
Hangup()
where CHANNEL would be a cleaned version of the regular CHANNEL
variable with only the technology and peer name, for example, only
SIP/1234 instead of SIP/1234-1f89
This would remove the entry in astDB at the same time it removed the
station from the queue.
I haven't tried any of it but I think it could work.
Thanks,
Waldo
On Oct 21, 2005, at 3:39 AM, Lenz wrote:
>
> Hello Waldo,
> if you use AddQueueMember plus a fake queue_log registration, you
> can tell who the agent was, not just from what terminal she was
> connecting from. It is then possible to report who was available at
> a certain time, or see agents logging on and off, going to pause,
> measuring the average call length per agent, pause time, etc. If
> you run a call center you will want these pieces of information,
> otherwise you have no means of understanding what is going on.
> Simply connecting to terminals is not good, because you'll usually
> have more agents than terminals (to compensate for shifts, sick
> leave, vacations, etc)
> Bye
> l.
>
>
> On Thu, 20 Oct 2005 17:41:31 +0200, Waldo Rubinstein
> <waldo at trianet.net> wrote:
>
>
>> I have played with AddQueueMember and it works great. However, there
>> is one problem that I have and I hope someone can point me in the
>> right direction.
>>
>> My client's agents rotate seats. This means that if I want to track
>> calls by agent, I can't with AddQueueMember. When I look at the CDR,
>> it tells me the calls made/received by the station (regardless of
>> technology - SIP/AIX/etc). But, at any given point, I don't know
>> which agent made the call.
>>
>> In reality, even with AgentCallBackLogin I can't tell which agent
>> made or received the call. Is there a way that I can identify in the
>> CDR which agent actually received or placed a call regardless of
>> which extension he/she may be sitting on?
>>
>> Thanks,
>> Waldo
>>
>>
>
>
> --
> Loway Research - Home of QueueMetrics
> http://queuemetrics.loway.it
> _______________________________________________
> --Bandwidth and Colocation sponsored by Easynews.com --
>
> Asterisk-Users mailing list
> Asterisk-Users at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-users
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-users
>
More information about the asterisk-users
mailing list