If you set continue_on_fail to true (or to a coma-separated list of hangup 
causes) or failure_causes (continue_on_fail's opposite, same syntax), the 
dialplan will keep being executed even though the first attempt fails.

As for point 1:

/*!
  \brief Make an outgoing call
  \param session originating session
  \param bleg B leg session
  \param cause a pointer to hold call cause <------------------------
  \param bridgeto the desired remote callstring
  \param timelimit_sec timeout in seconds for outgoing call
  \param table optional state handler table to install on the channel
  \param cid_name_override override the caller id name
  \param cid_num_override override the caller id number
  \param caller_profile_override override the entire calling caller profile
  \param ovars variables to be set on the outgoing channel
  \param flags flags to pass
  \return SWITCH_STATUS_SUCCESS if bleg is a running session.
  \note bleg will be read locked which must be unlocked with 
switch_core_session_rwunlock() before losing scope
*/
SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t 
*session,
                                                                                
                         switch_core_session_t **bleg,
                                                                                
                         switch_call_cause_t *cause,
                                                                                
                         const char *bridgeto,
                                                                                
                         uint32_t timelimit_sec,
                                                                                
                         const switch_state_handler_table_t *table,
                                                                                
                         const char *cid_name_override,
                                                                                
                         const char *cid_num_override,
                                                                                
                         switch_caller_profile_t *caller_profile_override,
                                                                                
                         switch_event_t *ovars, switch_originate_flag_t flags, 
switch_call_cause_t *cancel_cause);



 
Mathieu Rene
Avant-Garde Solutions Inc
Office: + 1 (514) 664-1044 x100
Cell: +1 (514) 664-1044 x200
mr...@avgs.ca




On 2010-06-26, at 5:51 AM, Juan Antonio Ibañez Santorum wrote:

> The problem of 3rd option is that a need to use one or more failover trunk if 
> main trunk fails.
> 
> At point 1, how can I get if originate was ok, busy, congestioned? Is 
> possible getting originate result when switch_ivr_originate() returns? or may 
> I need make use of events?
> 
> Regards
> 
> 2010/6/26 Mathieu Rene <mrene_li...@avgs.ca>
> Hi,
> 
> >From a module you have a few choices:
> 1- Call switch_ivr_originate() to establish a new session, then call 
> switch_ivr_uuid_bridge() with both uuids (you can get the uuid using 
> switch_core_session_get_uuid())
> 2- Execute the "bridge" application directly with 
> switch_core_session_execute_application()
> 3- Transfer the session to the dialplan again so it can be bridged out (using 
> the bridge app)
> 
> Dialstrings are all handled in switch_ivr_originate(), which is the main 
> function used to make an outbound call, all features such as forked dialing 
> and failover will work when calling either switch_ivr_originate(), or the 
> bridge application.
> 
> Personally I'd go for the 3rd choice, if you need to interact with the 
> session while its bridged, you can always do so by using one of freeswitch's 
> hooking methods (events, io hooks, state handlers).
> 
> Cheers,
> 
> Mathieu Rene
> Avant-Garde Solutions Inc
> Office: + 1 (514) 664-1044 x100
> Cell: +1 (514) 664-1044 x200
> mr...@avgs.ca
> 
> 
> 
> 
> On 2010-06-25, at 6:11 PM, Juan Antonio Ibañez Santorum wrote:
> 
> > Hello!
> >
> >    I am working on a module having this doubt:
> >
> > Once a call reachs to dialplan I call my app and I don't know which is the 
> > best way (if more than one exits) to bridge that call to an onbound 
> > provider controlling failed connections to try with a failure trunk. Is 
> > there any way to get call connection status (BUSY, CONGESTION...) from 
> > code? Is necessary to use events or may it be obtained as result of bridge 
> > function?
> >
> > Regards
> > _______________________________________________
> > 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
> 
> 
> _______________________________________________
> 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
> 
> _______________________________________________
> 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

_______________________________________________
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

Reply via email to