[Freeswitch-dev] Howto keep control over read and write frames in my own module after initiating a new call

Anthony Minessale anthony.minessale at gmail.com
Mon Jul 26 10:51:58 PDT 2010


You can't, that's all wrong.

look for media bugs.


On Mon, Jul 26, 2010 at 5:08 AM, Achim Stamm <stamm at 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 at 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 at 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 at hotmail.com <MSN%3Aanthony_minessale at hotmail.com>
GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com<PAYPAL%3Aanthony.minessale at gmail.com>
IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:888 at conference.freeswitch.org <sip%3A888 at conference.freeswitch.org>
googletalk:conf+888 at conference.freeswitch.org<googletalk%3Aconf%2B888 at conference.freeswitch.org>
pstn:+19193869900
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20100726/245c3a5e/attachment-0001.html 


More information about the FreeSWITCH-dev mailing list