You can't, that's all wrong.

look for media bugs.


On Mon, Jul 26, 2010 at 5:08 AM, Achim Stamm <stamm@lyth.de> wrote:
Hello!

I have following problem:
My current session is connected to my own module which uses the
freeswitch API doing Read and write frames in the while loop.
I want bridge my current session to make an outbound call within my while loop.
The calling of method bridge runs in a thread using modificated bgapi.
The outbounded phone rings and after picking it up the reading and
writing of frames is done only by freeswitch core and not any more in my while
loop. But after bridging I want to keep control over reading and writing
frames.

How can i gain control back or keep it over reading and writing
frames after bridging ?

A solution may be to run an extension instead of making the call in while loop.
How can i execute an extension with switch_core_session_execute_exten ?

Here is a snippet of my Dialplan:

<extension name="Caller">
     <condition field="destination_number" expression="^1000$">
            <action application="answer"/>
                <action application="info"/>
                <action application="set" data="hangup_after_bridge=false"/>
                <action application="set" data="ignore_early_media=true"/>
                <action application="myapplication" data="DoingReadAndWriteFrames"/>
     </condition>
   </extension>

Here is a snippet of my DoingReadAndWriteFrames from myapplication:

static switch_status_t DoingBridge(switch_core_session_t *session, switch_input_args_t *args)
{
       switch_codec_t codec = { 0 };
       switch_status_t status;
       switch_frame_t *read_frame;
       switch_channel_t *channel = switch_core_session_get_channel(session);
       switch_stream_handle_t dstream = { 0 };

       // Bridge to phone in a thread:
       SWITCH_STANDARD_STREAM(dstream);
       mybg_bridge("user/1012@192.168.1.30" ,60, session, &dstream);

       while (switch_channel_ready(channel))
       {
               // Read Frame :
               status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
               ...
               CControlThirdPartyApplication::getInstance().setAudio(session,vucInAudio);

               // Write Frame :
               vucOutAudio = CControlThirdPartyApplication::getInstance().getAudio(session);
               ...
               switch_status_t tstatus_caller = switch_core_session_write_frame(session, read_frame, SWITCH_IO_FLAG_NONE, 0);

               // Make Outbound Call:
               string dialNumber = CControlThirdPartyApplication::getInstance().getDialNumber(session);
               if (!dialNumber.empty())
               {
                       // @ ToDo Dial outbound:
                       // execute another extension ("Test"), that is doing our outbound call ??:
                       switch_core_session_execute_exten(session,"Test","XML","default");
                       // or Bridge to dialNumber in a thread:
                       //SWITCH_STANDARD_STREAM(dstream);
                       dialNumber = "user/" + dialNumber;
                       dialNumber = dialNumber + "@192.168.1.30";
                       mybg(dialNumber.c_str(), 60, session, &dstream);
                       // if dialNumber pickup, than freeswitch core read and write frames ?? I want control over read and write frame
               }
       }
}

regards

Achim Stamm

--
Achim Stamm, Dipl.-Inform. (FH)


Lyncker & Theis GmbH
Wilhelmstr. 16
65185 Wiesbaden
Germany

Fon +49 611/9006951
Fax +49 611/9406125


Handelsregister: HRB 23156 Amtsgericht Wiesbaden
Steuernummer: 04323897052
USt-IdNr.: DE255806399

Geschäftsführer:
Filip Lyncker,
Armin Theis


_______________________________________________
FreeSWITCH-dev mailing list
FreeSWITCH-dev@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
http://www.freeswitch.org



--
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/
Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_minessale@hotmail.com
GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com
IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:888@conference.freeswitch.org
googletalk:conf+888@conference.freeswitch.org
pstn:+19193869900