[Freeswitch-users] Advice for codec renegotiation in callcenter configuration

Jean-Paul Iribarren jeanpaul.iribarren at free.fr
Thu Jul 3 20:19:00 MSD 2014


Hello FreeSWITCHers,

I have a solid experience as a developer and network specialist, but I
am still discovering the many bells and whistles of IP telephony, so I
need a (big) piece of advice regarding how to setup FreeSWITCH to
achieve what I need it to do. The desired functionality is as follows:
my company manufactures embedded devices with audio/video capabilities.
On these devices, a "help me" button can be activated by a customer.
When someone activates this button, a VoIP call (with two-way
audio/video) must be placed to a callcenter, and dispatched to several
extensions. In such a case, the extensions ring according to their rank
and current state in the callcenter, and if/when a member replies, he
can talk to the customer in need of help with two-way audio and video.
Very similar to what can be found in modern elevators.

The associated architecture is as follows: FreeSWITCH is installed on a
PC with two network adapters. The first NIC is connected to the embedded
devices on a private subnet, the second NIC is connected to the
corporate LAN where the SIP phones of the callcenter members are
connected. For security reasons, the PC is the only common point between
the private network and the corporate LAN, they cannot "see" each other
at IP level (thus no peer-to-peer communication).

Linphone is used on the embedded devices, and can use PCMU, PCMA, H264,
H263 and H263-1998. When a customer activates the "help me" button, the
device places a SIP call to extension 7002 on FreeSWITCH. Extension 7002
is connected to a mod_callcenter queue, with a suitable list of agents
and tiers (say, extensions 1000 and 1001).

Problem is: the company who will use this system is free to install
whatever VoIP terminals it wishes for its support people. These phones
may support video or not, and they may have various codecs available. If
compliant video codecs are available on the embedded device and on the
SIP phone which replies to the call, I want these codecs to be selected
on both sides in order to provide audio and video communication (On
FreeSWITCH, H.26x codecs are passthrough, the PBX won't transcode the
video flows).

On my test platform, depending on the configuration of FreeSWITCH and of
the capabilities of the endpoints, I may end up with the following scenario:

-    device 7106 places a call to 7002, advertising H264, H263, H263-1998
-    FreeSWITCH accepts the call (200 OK) with e.g. PCMU + H264
-    FreeSWITCH rings the members of the callcenter, advertising PCMU,
H263, H264
-    member '1000' of the callcenter accepts FreeSWITCH call with e.g.
PCMU + H263
-    FreeSWITCH bridges the call, but the video flows are not compatible

Since the device supports most video modes, I must find a way to make it
switch to the audio/video modes used by the SIP phone that replied to
the call, i.e. PCMU + H263.

As far as I understand, this can be done at SIP level by requesting
FreeSWITCH to send a re-INVITE to the device on leg A, advertising the
codec list provided by the SIP phone in its "200 OK" message on leg B.

Thus the question: how can this be achieved in a mod_callcenter-based
configuration? As far as I understand, the silver bullet seems to be a
command called uuid_media_reneg in my case, but I can't see how/when I
should initiate this command in a mod_callcenter-based configuration
(bridging is performed internally by mod_callcenter, not at dialplan level).

All comments and advice welcome, sorry for the long post (but I tried to
be exhaustive and english is not my native language), and thank you in
advance.
-- 
JPI




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