[Freeswitch-users] FreeSwitch AMQP Question

SamyGo govoiper at gmail.com
Thu Mar 10 21:18:01 MSK 2016


Thanks William for taking out time to send a detailed reply. I am exploring
a scaleable callcentre solution and came across AMQP as an excellent
alternative to the external application managing the call flow.
I looked further inside the mod_callcentre.c and yeah I see that events are
just sent only which means that sharing events is not enough and we might
additionally need to send commands so the FS servers can actually do some
action.

*Regarding ODBC:*
I have question about Shared ODBC between mod_callcenter, I do see that
this module do alot of SQL queries to work, but is that shared ODBC enough
to make all FS servers act as one big callcenter ? Last time I read people
still had problems with this. I also see "single_box" value hard coded in
System-type field and I do see "multi_box" related discussions stating that
this is a future goal. The Problem I've heard so far is that when an agent
state is changed in one FS rest of the FS servers might not be aware of the
changed DB value(as they might've pulled older status) This may be very
visible in large call volume. I maybe wrong but this is what I've
understood so far.

I also think that if I modify the mod_callcenter.c file such that instead
of making DB connections if it could all be shifted to a memcache mechanism
then it may perform a little bit better.


*Regarding AMQP:*
I took help from this page:
https://quentustech.com/rabbitmq-support-in-freeswitch.html and this is
what I did:

1 - Started RabbitMQ Server

2 - Configured two FS servers with mod_amqp pointing to server in 1.

3 - Use the perl scripts mentioned on the above page to listen to events.
The amqp_command.pl script lets me send a command to ALL of the FS Server.

It was clear to me that a RabbitMQ based approach lets me read on events
and also lets me send commands to servers without doing a huge programming
effort.

Next step to do would be to configure each FS server to bind to its unique
virtualhost for commands (or use unique binding_key).
Then listen to calls+callcenter events from ALL the FS Servers, and based
on whatever logic send commands to FS servers such that if an EVENT occurs
stating an agent is taking call, send command to rest of the FS servers to
mark that agent as "Busy".

Let me know your thoughts on this.

Best Regards.
Sammy

On Mar 9, 2016 16:13, "William King" <william.king at quentustech.com> wrote:

> Sammy,
>
> Great question. mod_amqp has several different profile types: producer,
> commands, logging, and consumer(not yet implemented). The producer
> profile type only sends FS events to an amqp exchange(though you can
> configure multiple profiles with different event bindings and
> destination exchanges).
>
> To achieve what you're talking about would require mod_amqp profiles to
> subscribe and consume events from an amqp exchange, and then
> process/fire those events locally.
>
> Now the second way to handle what you're describing would be to have the
> different FS servers configured so that the modules use the same DB
> info, so that they're all looking at the same DB state. This would not
> require amqp to consume and process the events.
>
> William King
> Senior Engineer
> Quentus Technologies, INC
> 1037 NE 65th St Suite 273
> Seattle, WA 98115
> Main:   (877) 211-9337
> Office: (206) 388-4772
> Cell:   (253) 686-5518
> william.king at quentustech.com
>
> On 3/3/16 10:52 AM, SamyGo wrote:
> > Hi All,
> >
> > I am experimenting with mod_amqp , I've a RabbitMQ server deployed. What
> > I'm trying to find out is if N number of FreeSwitch Servers are
> > connected to the same virtualhost to send and receive events and all
> > FreeSwitch servers are connected to same backend Database. In that
> > particular situation if one server sends an Update status of a SIP
> > endpoint to the MessageBus and rest of the FS receives them, will they
> > also consider that SIP endpoint as Busy/On-Call ?
> >
> > Another example could be change in call_centre agent state change. If
> > one FS sends an event stating the agent is busy, will rest of the FS
> > servers honour this and not assign calls to the agent until a free event
> > is received !!
> >
> > Thanks,
> > Sammy
> >
> >
> >
> > _________________________________________________________________________
> > Professional FreeSWITCH Consulting Services:
> > consulting at freeswitch.org
> > http://www.freeswitchsolutions.com
> >
> > Official FreeSWITCH Sites
> > http://www.freeswitch.org
> > http://confluence.freeswitch.org
> > http://www.cluecon.com
> >
> > FreeSWITCH-users mailing list
> > FreeSWITCH-users at lists.freeswitch.org
> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> > http://www.freeswitch.org
> >
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://confluence.freeswitch.org
> http://www.cluecon.com
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20160310/61eda26c/attachment-0001.html 


Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users mailing list