Taken from here: https://www.marc.info/?l=freeswitch-users&m=142212930223048&w=3 > My understanding is that today there is no channel variable in FS that >> lets control reject causes to stop bridge iterations over | separated >> endpoints. > > Am I right or am I wrong? > > > fail_on_single_reject should be working for exactly that purpose.
> This passes routes via multiple carriers. If the gateway is > down/non-existent it will try the next sequential destination(s), but any > other failure cause causes the bridge to end without trying the next (fail_on_single_reject). > If all the gateways are down it returns to dialplan (continue_on_fail) > otherwise it hangs up with the reject cause from the bridge. > > Hi Steven, I believe your explanation is spot on and makes a lot of sense. From a documentation standpoint I can see why some are confused. Both the wiki and the source code explicitly mention the AND (i.e. comma) condition being affected by fail_on_single_reject but not the OR (i.e. pipe) condition. If there are no objections I'd like to submit this tidbit to be included in the fail_on_single_reject wiki entry. -MC
From Confluence:
https://freeswitch.org/confluence/display/FREESWITCH/Variables
“fail_on_single_reject
This is useful when using the "," AND operator in the DATA field of a bridge”
You are using the pipe | operator to perform sequential hunting, not the comma to perform simultaneous calling. My guess is that fail_on_single_reject only works on simultaneous calls with the “bridge” app as indicated by the docs. I have not looked at the code, however.
Bote
From: Mi Ke
Sent: Friday, 20 February, 2015 17:06
Subject: Re: [Freeswitch-users] piped failover doesn't work in dialplan, but works from console
freeswitch@internal> version
FreeSWITCH Version 1.5.15b+git~20150220T192157Z~9a6c29f8f7~64bit (git 9a6c29f 2015-02-20 19:21:57Z 64bit)
freeswitch@internal> originate {fail_on_single_reject=USER_BUSY}error/NO_ANSWER|error/NO_ROUTE_DESTINATION|error/USER_BUSY|error/SERVICE_UNAVAILABLE 999
-ERR USER_BUSY
is OK
now trying on real channels:
freeswitch@internal> originate {fail_on_single_reject=USER_BUSY}sofia/external/1111@1.1.1.1|sofia/external/2222@2.2.2.2 999
-ERR USER_BUSY
2015-02-20 21:47:19.584431 [DEBUG] switch_ivr_originate.c:3720 Originate Resulted in Error Cause: 17 [USER_BUSY]
2015-02-20 21:47:19.584431 [NOTICE] switch_channel.c:1055 New Channel sofia/external/2222@2.2.2.2 [0b472918-b94a-11e4-b8f3-2ddfb755c79b]
Thanks / Mike
Sent: Friday, February 20, 2015 at 10:40 PM
From: "Brian West" <brian@freeswitch.org>
Subject: Re: [Freeswitch-users] piped failover doesn't work in dialplan, but works from console
Did you happen to update your FreeSWITCH code to something more recent?
On Fri, Feb 20, 2015 at 1:21 PM, Mi Ke <mi.ke@null.net> wrote:
Dear Michael,
Thank you for your response. I liked your idea so I have removed all channel vars I was assigning before bridge, removed tls and left only USER_BUSY in the single reject list. Still no luck neither from console nor from dialplan: