[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