[asterisk-users] Skill based routing

Steve Edwards asterisk.org at sedwards.com
Fri Jul 17 09:16:24 CDT 2009


> Rupert Utteridge - Digital Techniques (Austalia) Limited wrote:
>
>> We are trying to implement skill based routing for agents in a support 
>> centre based on the agent login. Has anyone had any experience with 
>> this and what was the outcome?
>
On Fri, 17 Jul 2009, Alex Balashov wrote:

> It can't really be done using Asterisk queues, unless you want to create 
> a large number of queues for every relevant skill factor and have agents 
> join various combinations of these simultaneously--which would take 
> quite a bit of dial plan and/or AGI logic to pull off.  Plus, that 
> doesn't scale any given queue beyond one host.
>
> I suggest you look into using FastAGI[1] to simulate the queue 
> experience by generating hold music and announcements without actually 
> using Asterisk queues per se.  This is quite possible to do, and, this 
> allows you to distribute queues across multiple hosts, as well as 
> distribute calls within those queues by whatever logic you choose.  No 
> shoehorning--just write it yourself.

I did this for an adult chat system many moons ago with "local" AGIs 
written in C. When an agent logs in they land in a separate meetme. When 
callers select (via DNIS and/or IVR) which "skill" they are interested in, 
an AGI locates the "most idle" agent with that skill and routes the caller 
to that agent's meetme. The agent state (skills, logged in, busy, meetme 
name) is maintained in the database. The system is limited to a single 
host, but that was due to lack of foresight. Adding the host to the agent 
state in the database would not be a major change.

> [1] Yes, FastAGI.  Not local AGI.  And most especially not in PHP;
>     contrary to a lot of the info out there, PHP could not possibly
>     be a less suitable language in which to write AGI scripts.  I
>     don't know who comes up with these lavish heights of mediocrity.

A properly written FastAGI is significantly more complex than a "local" 
AGI and if unexpectedly terminated, adversely affects all calls. Plus, you 
can update "local" AGIs without affecting calls in progress.

While you can execute xxx's of AGIs written in C in the time it takes to 
load and parse Perl or PHP, I do find associative arrays kind of seductive 
on occasion.

Besides performance and footprint, why do you single out PHP. Or do you 
object to all script languages?

-- 
Thanks in advance,
-------------------------------------------------------------------------
Steve Edwards       sedwards at sedwards.com      Voice: +1-760-468-3867 PST
Newline                                              Fax: +1-760-731-3000



More information about the asterisk-users mailing list