[Freeswitch-dev] How to unbridge callers on detection of DTMF * key and send them back to where they were
echu at vseinc.com
echu at vseinc.com
Tue May 26 13:58:28 PDT 2009
Hi,
I've been developing an application module in C/C++ for our online personals type of application. All are well until I need to bridge two existing sessions together and need to find a way to monitor DTMF key (*) so I can un-bridge them and hopefully put them back to where they were.
Call flow is like:
Caller 1 sends recorded message to Caller 2 asking for live connection
Caller 1 in a loop of listening to wait music and checking Caller 2 response (via database) (is there a better way like putting caller 1 on hold and somehow signal it from Caller 2's thread?)
Caller 2 hears message and accepts (update database)
*bridge Caller 1 and Caller 2
*monitor DTMF for asterisk key
*un-bridge and send them back to where they were so they can continue to exchange messages with other callers
I tried switch_ivr_uuid_bridge function like below:
Originator side:
switch_ivr_uuid_bridge
//set up args so it stops on any dtmf
while (switch_channel_ready(channel))
{
status = switch_ivr_sleep(session, 60000, SWITCH_TRUE, &args);
if (status == SWITCH_BREAK && dtmf_key == '*')
break;
}
Originatee side:
//set up args so it stops on any dtmf
while (switch_channel_ready(channel))
{
status = switch_ivr_sleep(session, 60000, SWITCH_TRUE, &args);
if (status == SWITCH_BREAK && dtmf_key == '*')
break;
}
The problem is after switch_ivr_uuid_bridge call, the channel state has changed and switch_channel_ready becomes false and I immediately got out of the loop and eventually exit from the thread.
How do I make this work? Any suggestions are appreciated. Thanks.
Eddy Chu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20090526/1e17f419/attachment-0001.html
More information about the Freeswitch-dev
mailing list