[Freeswitch-dev] Howto stop or cancel a bridge
Michael Jerris
mike at jerris.com
Mon Jul 26 05:11:44 PDT 2010
uuid_transfer
On Jul 21, 2010, at 3:44 AM, Achim Stamm wrote:
> Hello!
>
> I have following problem:
>
> I have bridged my current session to "user/1012 at 192.168.1.30" with
> timeout of 60 seconds.
> The call of bridge runs in a thread using modificated bgapi.
> The phone 1012 rings and i play a sound file to another phone with
> number 1010.
> Phone with 1010 wants to have the call.
> I want to stop or cancel the bridge to phone 1012 without hanging up my
> current session.
> Is there a core command to stop/cancel a bridge (like sending a message
> "Cancel bridge" or something else) ?
> With this stop/cancel a bridge command the phone 1012 should stop
> ringing, but my originator session should not
> hang up (see snippet of my DoingBridge -> @ToDo Cancel or Stop Bridge:
> ???????).
>
> Here is a snippet of my Dialplan:
> -----------------------------------------------------
> <extension name="Externer-Anrufer">
> <condition field="destination_number" expression="^70$">
> <action application="info"/>
> <action application="set" data="hangup_after_bridge=false"/>
> <action application="set" data="ignore_early_media=true"/>
> <action application="myapplication" data="DoingBridge"/>
> </condition>
> </extension>
> ------------------------------------------------------
>
> Here is a snippet of my DoingBridge 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_core_session_t * PartnerSession = NULL;
> switch_core_session_t *sessionNebenstelle = NULL;
> switch_channel_t *channelNebenstelle = NULL;
> switch_stream_handle_t dstream = { 0 };
> switch_stream_handle_t astream = { 0 };
>
> if (switch_channel_pre_answer(channel) != SWITCH_STATUS_SUCCESS) {
> return SWITCH_STATUS_FALSE;
> }
>
>
> // Bridge to phone in a thread:
> SWITCH_STANDARD_STREAM(dstream);
> mybg_bridge("user/1012 at 192.168.1.30" ,60, session, &dstream);
>
>
> bool bNebenStelleAntwortet =
> switch_channel_test_flag(channel,CF_ANSWERED);
> const char * NebenStelle_uuid = NULL;
>
> while (! phone1010WantsCall && !BridgeAnsweredBy1012)
> {
> // PlayAudio File:
>
> switch_channel_state_t aktStatus =
> switch_channel_get_state(channel);
>
> NebenStelle_uuid = switch_channel_get_variable_partner(channel ,
> "signal_bond");
> bNebenStelleAntwortet =
> switch_channel_test_flag(channel,CF_ANSWERED);
> if (NebenStelle_uuid && !sessionNebenstelle)
> {
> sessionNebenstelle =
> switch_core_session_locate(NebenStelle_uuid);
> if (sessionNebenstelle)
> {
> channelNebenstelle =
> switch_core_session_get_channel(sessionNebenstelle);
> }
> }
> PlayAudioFile("1010");
> }
> // Stop Playing:
> StopPlayingAudioFile(session);
>
> if (switch_channel_ready(channel))
> {
> // sessionNebenstelle is 1012
> if (sessionNebenstelle)
> {
> // @ToDo Cancel or Stop Bridge:
> // ?????????????????????????????????????????????
> answerSession(session);
> }
>
> }
> ....
> }
> ---------------------------------------------------
>
> 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
More information about the FreeSWITCH-dev
mailing list