Asterisk and Kamailio in a Contact Center

Hi everybody, currently I work for an italian Telco and we need to realize a new call centre infrastructure.
In my past experience I always use Asterisk for all (sip registrer, media gateway, IVR, queues and so on)
Now my call centre needs to handle 500 agents and 12k calls/days at least.
So I studied many cases and realized that the best solution was using a kamailio + Asterisk installation.

I read this tutorial, http://kb.asipto.com/asterisk:realtime:kamailio-4.0.x-asterisk-11.3.0-astdb, but it seems for SIP carrier, not a call centre, so i draw this schema:

these are the call step I thought:

call from public network, kamailio redirect to asterisk 1
the customer does his choise into the IVR and chose, for example, technical support.
asterisk needs to put the call in a dedicated queue in an asterisk 2, so asterisk redirect the call to Kamilio
kamailio send the call to the queue manager in asterisk 2

All the agents are registered in kamailio DB, the asterisk server in a realtime architecture know about it.

I’n not yet able to understand how asterisk 1 can pass the call to kamailio and kamilio to asterisk 2, I would like to se the dialplan and the kamailio .cfg file.

My question: anybody had the same situation? anybody can help me?

I’m very confident with asterisk, not with kamailio.
Thanks everybody

My recommendation goes as following:

  • Use Kamailio (or OpenSIPS) as a load-balancer, registrar and for location service (extra modules can be used for security)
  • Have a farm of Asterisk instances behind your LB which accept calls from LB
  • Do not use app_queue, instead create your own “Queuing application” using ARI
  • You’ll need to share device states (Online/offline, Busy, Idle, Paused and any custom state you need) using a central app or caching layer (such as Redis) in order to let Asterisk box 1 knows that agent X is busy although this agent got a call through Asterisk box 2
  • In such setup, no need to use chan_agent

It is really advised to avoid using app_queue when having multiple Asterisk instances, unless you still prefer to use the old method (pre-ARI era).

All the best!

I am also having similar architecture but till now I don’t have Kamalio.
I am using app_queue and to share device/agent status among asterisk I am using corosync. Corosync works pretty good.
But, now I want to use Kamalio for SIP user/Agent registration. I want to know that how do I share device/agent/SIP user status detail from Kamalio to asterisk queue application?

P.S. For now I don’t want to use ARI application for queue.

Hello mits

As much as I know you can’t share Kamailio’s subscribers states with Asterisk’s app_queue … both are totally separate systems. In case you were able to reach something as close to that, please share your output!