Sponsor: VoiceMeUp - Corporate & Wholesale VoIP Services

VoIP Mailing List Archives
Mailing list archives for the VoIP community
 SearchSearch 

[Freeswitch-users] Reroute a Call Based on the Disconnect Cause


 
Post new topic   Reply to topic    VoIP Mailing List Archives Forum Index -> freeSWITCH Users
View previous topic :: View next topic  
Author Message
delianspam at gmail.com
Guest





PostPosted: Mon Oct 26, 2009 10:49 am    Post subject: [Freeswitch-users] Reroute a Call Based on the Disconnect Ca Reply with quote

Hello VoIP Geeks!

I am looking for a way to reroute calls on specific disconnect reasons. My
application is in Python. I will provide my solves so far, which for some
reason I cannot use. Why I need rerouting? Well, I am using the LCR module
which provides multiple routes per destination, like this:
routes=
[lcr_carrier=fs-rocks.com,lcr_rate=0.15000]sofia/default/1174@194.135.34.200
:5062|
[lcr_carrier=fs-rocks.com,lcr_rate=0.16000]sofia/default/1174@194.135.34.200
:5064

Solve 1: Python solve
Split the routes string to multiple routes. Bridge the call. Check if the
call failed and bridge again.

ivr_reroute_on=(\

"CALL_REJECTED",\
"CRASH",\
"INVALID_NUMBER_FORMAT",\
"NORMAL_TEMPORARY_FAILURE",\
"NO_ROUTE_DESTINATION",\
"NO_USER_RESPONSE",\

"NUMBER_CHANGED",\

"RECOVERY_ON_TIMER_EXPIRE",\

"SERVICE_NOT_IMPLEMENTED",\

)
...
session.execute("bridge", route)
hangup_cause = str(session.getVariable("originate_disposition"))
if hangup_cause in ivr_reroute_on:
#bridge again
...
else:
...
#do not bridge again

This is tested and works. However my manager does not likes it. I am not
commenting on the side effects of this code (i.e. if you have some
timers/schedules/scheduled events etc).

Solve 2: Freeswitch Source Code solve
Modify the source code of "switch_ivr_originate.c":

if (to &&
!oglobals.continue_on_timeout) {
goto
outer_for;
}
after line 2523:

+if
(switch_channel_cause2str(*cause) == SWITCH_CAUSE_CALL_REJECTED ) {
+ goto
outer_for;
+}

(In the best case I will add a new channel variable to Freeswitch to control
all the disconnect reasons from here) However my manager again does not
likes this. He says that I am not good enough in C/C++ to use this solution.

Solve 3: continue_on_fail
I have tried using the channel variable "continue_on_fail" which I believe
works only in the dialplan with no luck. I was unable to get it running both
in the dialplan and in Python. By the way I saw that "continue_on_fail" is
indeed implemented elsewhere, while "continue_on_timeout" is exactly in
"switch_ivr_originate.c" as expected.

Solve 4:
So can you please people recommend me any other solution? Any function or
variable to do the trick?

Thank you for your time and help!

Delian Tashev


_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org
Back to top
Display posts from previous:   
Post new topic   Reply to topic    VoIP Mailing List Archives Forum Index -> freeSWITCH Users All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group

VoiceMeUp - Corporate & Wholesale VoIP Services