Hi All,
For the 0_9_0 branch, what is the 'best practice' for implementing parallel forking?
We used to be able to point one alias at several accounts, but that feature has regressed.
Thanks, -Jev
Hi,
I do not know that it is best, I even sure that it is not :) but it very useful and very flexible to execute external application that will return list of URI.
Why it flexible - because you can do, for example, balancing of whatever you use for termination all (in my case b2bua) plus I use nagios that testing my b2buas/gws/voicemails and then my "routing" script uses this info to avoid bad destinations
Plus different features like, call return, redial, call forward, step by step routing (like first call ring on your SIP device, if it fail it ring on your office phone and if it fail goes to your cell phone and same time to your gf cell phone :)) My script taking all this info from MSSQL database, of course it add some delay to your call (PDD) but that the price, you can always use few boxes with this setup in parallel (replicate) and do redundant SQL server for fast answer
-----Original Message----- From: serusers-bounces@iptel.org [mailto:serusers-bounces@lists.iptel.org] On Behalf Of Jev Sent: Wednesday, February 23, 2005 11:01 AM To: serusers@lists.iptel.org Subject: [Serusers] parallel forking best practice?
Hi All,
For the 0_9_0 branch, what is the 'best practice' for implementing parallel forking?
We used to be able to point one alias at several accounts, but that feature has regressed.
Thanks, -Jev
_______________________________________________ Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Hi Vitaly,
Thank you for your reply,
But do you have parallel forking working this way? So two or more phones ring at once. As opposed to one phone ringing for N seconds, and then another ringing (sequential forking).
Is it possible to do parallel forking with exec_dset()? I did not think that it was.
Thanks, -Jev
Vitaly Nikolaev wrote:
Hi,
I do not know that it is best, I even sure that it is not :) but it very useful and very flexible to execute external application that will return list of URI.
Why it flexible - because you can do, for example, balancing of whatever you use for termination all (in my case b2bua) plus I use nagios that testing my b2buas/gws/voicemails and then my "routing" script uses this info to avoid bad destinations
Plus different features like, call return, redial, call forward, step by step routing (like first call ring on your SIP device, if it fail it ring on your office phone and if it fail goes to your cell phone and same time to your gf cell phone :)) My script taking all this info from MSSQL database, of course it add some delay to your call (PDD) but that the price, you can always use few boxes with this setup in parallel (replicate) and do redundant SQL server for fast answer
-----Original Message----- From: serusers-bounces@iptel.org [mailto:serusers-bounces@lists.iptel.org] On Behalf Of Jev Sent: Wednesday, February 23, 2005 11:01 AM To: serusers@lists.iptel.org Subject: [Serusers] parallel forking best practice?
Hi All,
For the 0_9_0 branch, what is the 'best practice' for implementing parallel forking?
We used to be able to point one alias at several accounts, but that feature has regressed.
Thanks, -Jev
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Hi
I have both working, but I call second thing: step by step routing or follow me feature :)
That the example:
In route procedure I have:
append_urihf("CC-Diversion: ", "\r\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 1"); t_on_failure("1");
in failure_route[1] I have: if (t_check_status("486")) { xlog("L_INFO", "%ci: BUSY, getroute_a_t 2 busy\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 2 busy"); } else if (t_check_status("408")) { xlog("L_INFO", "%ci: Request timeout, getroute_a_t 2 timeout\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 2 timeout"); } else if (t_check_status("404")) { xlog("L_INFO", "%ci: Not found, 2 notfound\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 2 notfound"); } else if (t_check_status("500")) { xlog("L_INFO", "%ci: Not found, 2 disconnected\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 2 disconnected"); } else{ xlog("L_INFO", "%ci: Other. getroute_a_t 2 other\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 2 other"); }
append_branch(); t_on_failure("2");
I execute getroute_a_t with parametr 2 that means second step and disconnect couse to distinct busy from other resons and make customer choose to forward call if busy, if no answer if something else
In failure_route[2] I have:
exec_dset("/usr/local/ser/bin/getroute_a_t 3 other"); append_branch(); t_on_failure("3");
and so on until 5 :)
on any step getroute can return few URI and it working for me (it send call to different destinations)
There will be problem if durint parallel forking u havce device behind NAT and not... but could be avoided by having all clients working thru rtpproxy (I do not do it yet but thinking)
-----Original Message----- From: Jev [mailto:jev@ecad.org] Sent: Wednesday, February 23, 2005 1:17 PM To: Vitaly Nikolaev Cc: serusers@lists.iptel.org Subject: Re: [Serusers] parallel forking best practice?
Hi Vitaly,
Thank you for your reply,
But do you have parallel forking working this way? So two or more phones ring at once. As opposed to one phone ringing for N seconds, and then another ringing (sequential forking).
Is it possible to do parallel forking with exec_dset()? I did not think that it was.
Thanks, -Jev
Vitaly Nikolaev wrote:
Hi,
I do not know that it is best, I even sure that it is not :) but it very useful and very flexible to execute external application that will return list of URI.
Why it flexible - because you can do, for example, balancing of whatever
you
use for termination all (in my case b2bua) plus I use nagios that testing
my
b2buas/gws/voicemails and then my "routing" script uses this info to avoid bad destinations
Plus different features like, call return, redial, call forward, step by step routing (like first call ring on your SIP device, if it fail it ring
on
your office phone and if it fail goes to your cell phone and same time to your gf cell phone :)) My script taking all this info from MSSQL database, of course it add some delay to your call (PDD) but that the price, you can always use few boxes with this setup in parallel (replicate) and do redundant SQL server for fast answer
-----Original Message----- From: serusers-bounces@iptel.org [mailto:serusers-bounces@lists.iptel.org] On Behalf Of Jev Sent: Wednesday, February 23, 2005 11:01 AM To: serusers@lists.iptel.org Subject: [Serusers] parallel forking best practice?
Hi All,
For the 0_9_0 branch, what is the 'best practice' for implementing parallel forking?
We used to be able to point one alias at several accounts, but that feature has regressed.
Thanks, -Jev
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
I'm not sure what your external script '/usr/local/ser/bin/getroute_a_t' does. In what way does it rewrite the URI?
I'm currently doing something similar, but I have to call 'revert_uri()' before calling exec_dset again. Is there an advantage of doing it with the CC-Diversion?
Best regards
Vitaly Nikolaev wrote:
Hi
I have both working, but I call second thing: step by step routing or follow me feature :)
That the example:
In route procedure I have:
append_urihf("CC-Diversion: ", "\r\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 1"); t_on_failure("1");
in failure_route[1] I have: if (t_check_status("486")) { xlog("L_INFO", "%ci: BUSY, getroute_a_t 2 busy\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 2 busy"); } else if (t_check_status("408")) { xlog("L_INFO", "%ci: Request timeout, getroute_a_t 2 timeout\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 2 timeout"); } else if (t_check_status("404")) { xlog("L_INFO", "%ci: Not found, 2 notfound\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 2 notfound"); } else if (t_check_status("500")) { xlog("L_INFO", "%ci: Not found, 2 disconnected\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 2 disconnected"); } else{ xlog("L_INFO", "%ci: Other. getroute_a_t 2 other\n"); exec_dset("/usr/local/ser/bin/getroute_a_t 2 other"); }
append_branch(); t_on_failure("2");
I execute getroute_a_t with parametr 2 that means second step and disconnect couse to distinct busy from other resons and make customer choose to forward call if busy, if no answer if something else
In failure_route[2] I have:
exec_dset("/usr/local/ser/bin/getroute_a_t 3 other"); append_branch(); t_on_failure("3");
and so on until 5 :)
on any step getroute can return few URI and it working for me (it send call to different destinations)
There will be problem if durint parallel forking u havce device behind NAT and not... but could be avoided by having all clients working thru rtpproxy (I do not do it yet but thinking)
-----Original Message----- From: Jev [mailto:jev@ecad.org] Sent: Wednesday, February 23, 2005 1:17 PM To: Vitaly Nikolaev Cc: serusers@lists.iptel.org Subject: Re: [Serusers] parallel forking best practice?
Hi Vitaly,
Thank you for your reply,
But do you have parallel forking working this way? So two or more phones ring at once. As opposed to one phone ringing for N seconds, and then another ringing (sequential forking).
Is it possible to do parallel forking with exec_dset()? I did not think that it was.
Thanks, -Jev
Vitaly Nikolaev wrote:
Hi,
I do not know that it is best, I even sure that it is not :) but it very useful and very flexible to execute external application that will return list of URI.
Why it flexible - because you can do, for example, balancing of whatever
you
use for termination all (in my case b2bua) plus I use nagios that testing
my
b2buas/gws/voicemails and then my "routing" script uses this info to avoid bad destinations
Plus different features like, call return, redial, call forward, step by step routing (like first call ring on your SIP device, if it fail it ring
on
your office phone and if it fail goes to your cell phone and same time to your gf cell phone :)) My script taking all this info from MSSQL database, of course it add some delay to your call (PDD) but that the price, you can always use few boxes with this setup in parallel (replicate) and do redundant SQL server for fast answer
-----Original Message----- From: serusers-bounces@iptel.org [mailto:serusers-bounces@lists.iptel.org] On Behalf Of Jev Sent: Wednesday, February 23, 2005 11:01 AM To: serusers@lists.iptel.org Subject: [Serusers] parallel forking best practice?
Hi All,
For the 0_9_0 branch, what is the 'best practice' for implementing parallel forking?
We used to be able to point one alias at several accounts, but that feature has regressed.
Thanks, -Jev
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
On 23-02 08:00, Jev wrote:
Hi All,
For the 0_9_0 branch, what is the 'best practice' for implementing parallel forking?
We used to be able to point one alias at several accounts, but that feature has regressed.
It is still possible in 0.9.0, just make sure that you have a single alias pointing to several destinations. lookup would automatically add all of them to the destination set and t_relay would fork the request.
Jan.
Hi-
I have an alias that points to multiple destinations. When one of those destinations is offline. SER calls failure_route for the leg 1, but leg 2 rings the SIP UA. failure_route sends the call to voicemail, so the SIP UA from leg 2 rings just once and the call ends.
How are other handling this? Is there a way to see if the call has been parallelly (<-- ???) forked before failure_route gets called?
Dan
ps. How does one adverbize 'parallel'?
On Tue, 1 Mar 2005 17:32:36 +0100, Jan Janak jan@iptel.org wrote:
On 23-02 08:00, Jev wrote:
Hi All,
For the 0_9_0 branch, what is the 'best practice' for implementing parallel forking?
We used to be able to point one alias at several accounts, but that feature has regressed.
It is still possible in 0.9.0, just make sure that you have a single alias pointing to several destinations. lookup would automatically add all of them to the destination set and t_relay would fork the request.
Jan.
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Daniel Poulsen writes:
I have an alias that points to multiple destinations. When one of those destinations is offline. SER calls failure_route for the leg 1, but leg 2 rings the SIP UA. failure_route sends the call to voicemail, so the SIP UA from leg 2 rings just once and the call ends.
How are other handling this? Is there a way to see if the call has been parallelly (<-- ???) forked before failure_route gets called?
i don't use ser aliases myself, but in general, if proxy forks a call to several contacts, failure route is not entered unless ALL branches fail. so there must be something wrong in your setup.
-- juha
Jan Janak wrote:
On 23-02 08:00, Jev wrote:
Hi All,
For the 0_9_0 branch, what is the 'best practice' for implementing parallel forking?
We used to be able to point one alias at several accounts, but that feature has regressed.
It is still possible in 0.9.0, just make sure that you have a single alias pointing to several destinations. lookup would automatically add all of them to the destination set and t_relay would fork the request.
Hi Jan,
I only got around to testing this today!
You are right, it does work. But the serctl shell script checks for overlapping aliases in the function check_alias() on line 247 (rel_0_9_0), which prevents me from adding many targets to a single alias.
Removing that block allows me to add one to many aliases.
Would it be reasonable to remove that block? See attached patch for your convenience.
All the best, -Jev
Jan.
--- scripts/sc Tue Mar 29 10:49:31 2005 +++ scripts/sc Tue Mar 29 10:49:43 2005 @@ -243,12 +243,6 @@ > /dev/stderr exit 1 fi - echo "$RES" | grep "^200" > /dev/null - if [ $? -eq 0 ] ; then - echo "error: overlap with an existing alias" \ - > /dev/stderr - exit 1 - fi # other errors echo "error: $RES" > /dev/stderr exit 1