Advice for codec renegotiation in callcenter configuration
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
participants (1)
-
Jean-Paul Iribarren