Parallel forking and per branch manipulation

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Parallel forking and per branch manipulation

jay1017
Hi All,
I have a scenario to do parellel forking between the user found in location and towards a PSTN gateway. The requirement here is, I have unique manipulations to be done before routing the call which I believe can be done using branch routes, but I'm just wondering how. 
For eg: The branch that goes to the user found from location should have no FROM Header manipulation and the branch that goes out to PSTN gateway needs a uac_replace_from("[hidden email]"), and insert_hf("P-Asserted_Identity: [hidden email]\r\n") before calling t_relay(). There are many other manipulations like this.
How do I take the script logic to individual branch routes before calling t_relay, because whats happening with me is once the location is looked up, I go ahead for manipulations that is supposed to be done for the gateway branch, but it gets applicable for the branch that goes out to the user as well !!

Probably I am missing something on my understanding on how to call branch_routes while doing parallel forking.

Thanks for any help.

--- Jayesh

_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: Parallel forking and per branch manipulation

Binan83
Hi,

lets say you have 2 branches 0 towards user in location and 1 towards PSTN.
 
I suggest to use branch flags which are used to activate some functions in branch level

when creating the branches in main route use this variable $branch() to set branch flags to each indivisual branch depending on its index 0 for branch 0 and 1 for branch 1.

use branch routing blocks to execute certain logic (it could be the manipulation ) for each branch before forwarding the request.

// Binan

--- On Thu, 8/30/12, Jayesh Nambiar <[hidden email]> wrote:

From: Jayesh Nambiar <[hidden email]>
Subject: [OpenSIPS-Users] Parallel forking and per branch manipulation
To: "OpenSIPS users mailling list" <[hidden email]>
Date: Thursday, August 30, 2012, 8:11 AM

Hi All,
I have a scenario to do parellel forking between the user found in location and towards a PSTN gateway. The requirement here is, I have unique manipulations to be done before routing the call which I believe can be done using branch routes, but I'm just wondering how. 
For eg: The branch that goes to the user found from location should have no FROM Header manipulation and the branch that goes out to PSTN gateway needs a uac_replace_from("sip:123456789@1.2.3.4"), and insert_hf("P-Asserted_Identity: sip:123456789@1.2.3.4\r\n") before calling t_relay(). There are many other manipulations like this.
How do I take the script logic to individual branch routes before calling t_relay, because whats happening with me is once the location is looked up, I go ahead for manipulations that is supposed to be done for the gateway branch, but it gets applicable for the branch that goes out to the user as well !!

Probably I am missing something on my understanding on how to call branch_routes while doing parallel forking.

Thanks for any help.

--- Jayesh

-----Inline Attachment Follows-----

_______________________________________________
Users mailing list
Users@...
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
voipmagazine.wordpress.com/
Reply | Threaded
Open this post in threaded view
|

Re: Parallel forking and per branch manipulation

jay1017
In reply to this post by jay1017
Hi Binan,
Thank you very much for your reply. What you wrote is what I understand from all the documentation present but probably the concept is not working for me or probably just not getting into my head. This is a snippet of what I'm trying to do:

lookup("location");
$branch = $ru;

avp_db_query("SELECT cli, phone_number FROM users WHERE user_id = '$rU', "$avp(cli), $avp(parallel_number)");
$rU = $avp(parallel_number);
$rd = my_gateway_ip;
$var(uri) = "sip:"+$rU+"@"+$rd;

$branch = $var(ruri);

t_on_branch("1"); # --This is confusing me---
t_relay();
exit;

branch_route[1] { #---Need to know how to check for branch id here---
       if(branch_id == 1) { #--- How do I check for this condition??
              uac_replace_from("sip:$avp(cli)@mydomain.com");
       }
}

The problem is I dont know how to identify the branch id in the branch route. Even if I set branch flag for second branch using setbflag(1,1) and I check for this flag in the branch route using isbflagset(1,1), by the time the first branch goes into branch_route, the second branch is created and the condition isbflagset(1,1) becomes true and the uac_replace_from() gets executed for first branch also. My requirement is to execute this branch_route only for second branch which is branch_id 1.
Isn't there any straight forward way of checking the id of the branch when it comes to the branch route??

Any help is really appreciated. Thanks.

--- Jayesh
Hi,

lets say you have 2 branches 0 towards user in location and 1 towards PSTN.
?
I suggest to use branch flags which are used to activate some functions in branch level

when creating the branches in main route use this variable $branch() to set branch flags to each indivisual branch depending on its index 0 for branch 0 and 1 for branch 1.

use branch routing blocks to execute certain logic (it could be the manipulation ) for each branch before forwarding the request.

// Binan

--- On Thu, 8/30/12, Jayesh Nambiar <[hidden email]> wrote:

From: Jayesh Nambiar <[hidden email]>
Subject: [OpenSIPS-Users] Parallel forking and per branch manipulation
To: "OpenSIPS users mailling list" <[hidden email]>
Date: Thursday, August 30, 2012, 8:11 AM

Hi All,I have a scenario to do parellel forking between the user found in location and towards a PSTN gateway. The requirement here is, I have unique manipulations to be done before routing the call which I believe can be done using branch routes, but I'm just wondering how.?
For eg: The branch that goes to the user found from location should have no FROM Header manipulation and the branch that goes out to PSTN gateway needs a uac_replace_from("[hidden email]"), and insert_hf("P-Asserted_Identity: [hidden email]\r\n") before calling t_relay(). There are many other manipulations like this.
How do I take the script logic to individual branch routes before calling t_relay, because whats happening with me is once the location is looked up, I go ahead for manipulations that is supposed to be done for the gateway branch, but it gets applicable for the branch that goes out to the user as well !!

Probably I am missing something on my understanding on how to call branch_routes while doing parallel forking.
Thanks for any help.
--- Jayesh


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: Parallel forking and per branch manipulation

Bogdan-Andrei Iancu-2
Hi Jayesh,

See my inline comments.

Regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 08/31/2012 03:02 PM, Jayesh Nambiar wrote:
Hi Binan,
Thank you very much for your reply. What you wrote is what I understand from all the documentation present but probably the concept is not working for me or probably just not getting into my head. This is a snippet of what I'm trying to do:

lookup("location");
$branch = $ru;
You do not need this last line as the $ru will be automatically be considered branch 0.


avp_db_query("SELECT cli, phone_number FROM users WHERE user_id = '$rU', "$avp(cli), $avp(parallel_number)");
$rU = $avp(parallel_number);
$rd = my_gateway_ip;
$var(uri) = "sip:"+$rU+"@"+$rd;

$branch = $var(ruri);

t_on_branch("1"); # --This is confusing me---
This is correct, you are arming the branch 1, which will be executed inside t_relay(), once for each branch.

t_relay();
exit;

branch_route[1] { #---Need to know how to check for branch id here---
       if(branch_id == 1) { #--- How do I check for this condition??
See $T_branch_idx (http://www.opensips.org/html/docs/modules/1.8.x/tm.html#id294499)

              uac_replace_from("<a class="moz-txt-link-freetext" href="sip:$avp(cli)@">sip:$avp(cli)@mydomain.com");
       }
}

The problem is I dont know how to identify the branch id in the branch route. Even if I set branch flag for second branch using setbflag(1,1) and I check for this flag in the branch route using isbflagset(1,1), by the time the first branch goes into branch_route, the second branch is created and the condition isbflagset(1,1) becomes true and the uac_replace_from() gets executed for first branch also. My requirement is to execute this branch_route only for second branch which is branch_id 1.
Isn't there any straight forward way of checking the id of the branch when it comes to the branch route??

Any help is really appreciated. Thanks.

--- Jayesh
Hi,

lets say you have 2 branches 0 towards user in location and 1 towards PSTN.
?
I suggest to use branch flags which are used to activate some functions in branch level

when creating the branches in main route use this variable $branch() to set branch flags to each indivisual branch depending on its index 0 for branch 0 and 1 for branch 1.

use branch routing blocks to execute certain logic (it could be the manipulation ) for each branch before forwarding the request.

// Binan

--- On Thu, 8/30/12, Jayesh Nambiar <[hidden email]> wrote:

From: Jayesh Nambiar <[hidden email]>
Subject: [OpenSIPS-Users] Parallel forking and per branch manipulation
To: "OpenSIPS users mailling list" <[hidden email]>
Date: Thursday, August 30, 2012, 8:11 AM

Hi All,I have a scenario to do parellel forking between the user found in location and towards a PSTN gateway. The requirement here is, I have unique manipulations to be done before routing the call which I believe can be done using branch routes, but I'm just wondering how.?
For eg: The branch that goes to the user found from location should have no FROM Header manipulation and the branch that goes out to PSTN gateway needs a uac_replace_from("[hidden email]"), and insert_hf("P-Asserted_Identity: [hidden email]\r\n") before calling t_relay(). There are many other manipulations like this.
How do I take the script logic to individual branch routes before calling t_relay, because whats happening with me is once the location is looked up, I go ahead for manipulations that is supposed to be done for the gateway branch, but it gets applicable for the branch that goes out to the user as well !!

Probably I am missing something on my understanding on how to call branch_routes while doing parallel forking.
Thanks for any help.
--- Jayesh

_______________________________________________ Users mailing list [hidden email] http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: Parallel forking and per branch manipulation

jay1017
Thanks Bogdan. Will definitely try this out.

--- Jayesh

On Monday, September 3, 2012, Bogdan-Andrei Iancu wrote:
Hi Jayesh,

See my inline comments.

Regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 08/31/2012 03:02 PM, Jayesh Nambiar wrote:
Hi Binan,
Thank you very much for your reply. What you wrote is what I understand from all the documentation present but probably the concept is not working for me or probably just not getting into my head. This is a snippet of what I'm trying to do:

lookup("location");
$branch = $ru;
You do not need this last line as the $ru will be automatically be considered branch 0.


avp_db_query("SELECT cli, phone_number FROM users WHERE user_id = '$rU', "$avp(cli), $avp(parallel_number)");
$rU = $avp(parallel_number);
$rd = my_gateway_ip;
$var(uri) = "sip:"+$rU+"@"+$rd;

$branch = $var(ruri);

t_on_branch("1"); # --This is confusing me---
This is correct, you are arming the branch 1, which will be executed inside t_relay(), once for each branch.

t_relay();
exit;

branch_route[1] { #---Need to know how to check for branch id here---
       if(branch_id == 1) { #--- How do I check for this condition??
See $T_branch_idx (http://www.opensips.org/html/docs/modules/1.8.x/tm.html#id294499)

              uac_replace_from("sip:$avp(cli)@mydomain.com");
       }
}

The problem is I dont know how to identify the branch id in the branch route. Even if I set branch flag for second branch using setbflag(1,1) and I check for this flag in the branch route using isbflagset(1,1), by the time the first branch goes into branch_route, the second branch is created and the condition isbflagset(1,1) becomes true and the uac_replace_from() gets executed for first branch also. My requirement is to execute this branch_route only for second branch which is branch_id 1.
Isn't there any straight forward way of checking the id of the branch when it comes to the branch route??

Any help is really appreciated. Thanks.

--- Jayesh
Hi,

lets say you have 2 branches 0 towards user in location and 1 towards PSTN.
?
I suggest to use branch flags which are used to activate some functions in branch level

when creating the branches in main route use this variable $branch() to set branch flags to each indivisual branch depending on its index 0 for branch 0 and 1 for branch 1.

use branch routing blocks to execute certain logic (it could be the manipulation ) for each branch before forwarding the request.

// Binan

--- On Thu, 8/30/12, Jayesh Nambiar <<a href="javascript:_e({}, &#39;cvml&#39;, &#39;jayesh.voip@gmail.com&#39;);" target="_blank">jayesh.voip@...> wrote:

From: Jayesh Nambiar <<a href="javascript:_e({}, &#39;cvml&#39;, &#39;jayesh.voip@gmail.com&#39;);" target="_blank">jayesh.voip@...>
Subject: [OpenSIPS-Users] Parallel forking and per branch manipulation
To: "OpenSIPS users mailling list" <<a href="javascript:_e({}, &#39;cvml&#39;, &#39;users@lists.opensips.org&#39;);" target="_blank">users@...>
Date: Thursday, August 30, 2012, 8:11 AM

Hi All,I have a scenario to do parellel forking between the user found in location and towards a PSTN gateway. The requirement here is, I have unique manipulations to be done before routing the call which I believe can be done using branch routes, but I'm just wondering how.?
For eg: The branch that goes to the user found from location should have no FROM Header manipulation and the branch that goes out to PSTN gateway needs a uac_replace_from("<a href="javascript:_e({}, &#39;cvml&#39;, &#39;sip%3A123456789@1.2.3.4&#39;);" target="_blank">sip:123456789@1.2.3.4"), and insert_hf("P-Asserted_Identity: <a href="javascript:_e({}, &#39;cvml&#39;, &#39;sip%3A123456789@1.2.3.4&#39;);" target="_blank">sip:123456789@1.2.3.4\r\n") before calling t_relay(). There are many other manipulations like this.
How do I take the script logic to individual branch routes before calling t_relay, because whats happening with me is once the location is looked up, I go ahead for manipulations that is supposed to be done for the gateway branch, but it gets applicable for the branch that goes out to the user as well !!

Probably I am missing something on my understanding on how to call branch_routes while doing parallel forking.
Thanks for any help.
--- Jayesh

_______________________________________________ Users mailing list <a href="javascript:_e({}, &#39;cvml&#39;, &#39;Users@lists.opensips.org&#39;);" target="_blank">Users@... http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: Parallel forking and per branch manipulation

jay1017
Hi Bogdan,
Firstly I am using Opensips 1.7.2. And here the observations after I tried several things as suggested by you.
Observation 1:
lookup("location");
#$branch = $ru;

You suggested the above line is not required as it will automatically be treated as branch 0 and hence I commented it, but is not behaving as expected. So when I comment the above line and then add the code as below:

avp_db_query("SELECT cli, phone_number FROM users WHERE user_id = '$rU', "$avp(cli), $avp(parallel_number)");
$rU = $avp(parallel_number);
$rd = my_gateway_ip;
$var(uri) = "sip:"+$rU+"@"+$rd;

$branch = $var(ruri);
xlog("L_INFO", "Branch URI 0=$(branch(uri)[0]) AND Branch URI 1=$(branch(uri)[1])");
The above line prints in syslog "Branch URI 0=sip:123456789@mygateway_ip and Branch URI 1 = NULL"
This means that when I actually call "$branch = some_uri" that is when the branch is created with an id. Because I checked adding that $branch = $ru line again and then syslog printed  "Branch URI 0=sip:1111@1.2.3.4:25380 and Branch URI 1=sip:123456789@mygateway_ip".

t_on_branch("1");
t_relay();
exit;

Observation 2:
Inside the branch route I write the following code:
       branch_route[1] {
              $var(branch_id) = $T_branch_idx;
              if($var(branch_id) == "1") {
                     xlog("L_INFO", "Branch-ID=$T_branch_idx")
                     insert_hf("Forwarded: Yes\r\n", "Call-ID");
                     uac_replace_from("sip:$avp(cli)@mydomain.com");    
              }
       }


Now here I can confirm that when the branch_id is 1, it gets into this condition since the xlog prints  "Branch-ID=1" properly when its inside the branch route; but when branch_0 gets relayed out this header gets inserted and From header gets replaced whereas when branch_1 is relayed the header mentioned in this condition is not inserted and also the From header is not replaced.
Basically, it behaves exactly opposite as expected !! Please note in this case I am creating branch twice using the $branch command so that $branch(uri)[0] is the one fetched from location and $branch(uri)[1] is the PSTN uri where the call has to be parallel forwarded.
Is there something I am still doing wrong because as I understood; inside the branch_route based on branch_id I am inserting a custom header and replacing From header but this custom header and From header is being replaced on the unintended branch !!
Could be that something is wrong in opensips-1.7.x. Please help me out here.

Thanks,

--- Jayesh

On Tue, Sep 4, 2012 at 12:18 AM, Jayesh Nambiar <[hidden email]> wrote:
Thanks Bogdan. Will definitely try this out.

--- Jayesh


On Monday, September 3, 2012, Bogdan-Andrei Iancu wrote:
Hi Jayesh,

See my inline comments.

Regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 08/31/2012 03:02 PM, Jayesh Nambiar wrote:
Hi Binan,
Thank you very much for your reply. What you wrote is what I understand from all the documentation present but probably the concept is not working for me or probably just not getting into my head. This is a snippet of what I'm trying to do:

lookup("location");
$branch = $ru;
You do not need this last line as the $ru will be automatically be considered branch 0.


avp_db_query("SELECT cli, phone_number FROM users WHERE user_id = '$rU', "$avp(cli), $avp(parallel_number)");
$rU = $avp(parallel_number);
$rd = my_gateway_ip;
$var(uri) = "sip:"+$rU+"@"+$rd;

$branch = $var(ruri);

t_on_branch("1"); # --This is confusing me---
This is correct, you are arming the branch 1, which will be executed inside t_relay(), once for each branch.

t_relay();
exit;

branch_route[1] { #---Need to know how to check for branch id here---
       if(branch_id == 1) { #--- How do I check for this condition??
See $T_branch_idx (http://www.opensips.org/html/docs/modules/1.8.x/tm.html#id294499)

              uac_replace_from("sip:$avp(cli)@mydomain.com");
       }
}

The problem is I dont know how to identify the branch id in the branch route. Even if I set branch flag for second branch using setbflag(1,1) and I check for this flag in the branch route using isbflagset(1,1), by the time the first branch goes into branch_route, the second branch is created and the condition isbflagset(1,1) becomes true and the uac_replace_from() gets executed for first branch also. My requirement is to execute this branch_route only for second branch which is branch_id 1.
Isn't there any straight forward way of checking the id of the branch when it comes to the branch route??

Any help is really appreciated. Thanks.

--- Jayesh
Hi,

lets say you have 2 branches 0 towards user in location and 1 towards PSTN.
?
I suggest to use branch flags which are used to activate some functions in branch level

when creating the branches in main route use this variable $branch() to set branch flags to each indivisual branch depending on its index 0 for branch 0 and 1 for branch 1.

use branch routing blocks to execute certain logic (it could be the manipulation ) for each branch before forwarding the request.

// Binan

--- On Thu, 8/30/12, Jayesh Nambiar <[hidden email]> wrote:

From: Jayesh Nambiar <[hidden email]>
Subject: [OpenSIPS-Users] Parallel forking and per branch manipulation
To: "OpenSIPS users mailling list" <[hidden email]>
Date: Thursday, August 30, 2012, 8:11 AM

Hi All,I have a scenario to do parellel forking between the user found in location and towards a PSTN gateway. The requirement here is, I have unique manipulations to be done before routing the call which I believe can be done using branch routes, but I'm just wondering how.?
For eg: The branch that goes to the user found from location should have no FROM Header manipulation and the branch that goes out to PSTN gateway needs a uac_replace_from("sip:123456789@1.2.3.4"), and insert_hf("P-Asserted_Identity: sip:123456789@1.2.3.4\r\n") before calling t_relay(). There are many other manipulations like this.
How do I take the script logic to individual branch routes before calling t_relay, because whats happening with me is once the location is looked up, I go ahead for manipulations that is supposed to be done for the gateway branch, but it gets applicable for the branch that goes out to the user as well !!

Probably I am missing something on my understanding on how to call branch_routes while doing parallel forking.
Thanks for any help.
--- Jayesh

_______________________________________________ Users mailing list [hidden email] http://lists.opensips.org/cgi-bin/mailman/listinfo/users


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: Parallel forking and per branch manipulation

Bogdan-Andrei Iancu-2
Hi Jayesh,

do :
    if($var(branch_id) == 1) {

as $var(branch_id) returns an integer, not a string.

Regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 09/04/2012 04:36 PM, Jayesh Nambiar wrote:
Hi Bogdan,
Firstly I am using Opensips 1.7.2. And here the observations after I tried several things as suggested by you.
Observation 1:
lookup("location");
#$branch = $ru;

You suggested the above line is not required as it will automatically be treated as branch 0 and hence I commented it, but is not behaving as expected. So when I comment the above line and then add the code as below:

avp_db_query("SELECT cli, phone_number FROM users WHERE user_id = '$rU', "$avp(cli), $avp(parallel_number)");
$rU = $avp(parallel_number);
$rd = my_gateway_ip;
$var(uri) = "sip:"+$rU+"@"+$rd;

$branch = $var(ruri);
xlog("L_INFO", "Branch URI 0=$(branch(uri)[0]) AND Branch URI 1=$(branch(uri)[1])");
The above line prints in syslog "Branch URI 0=<a class="moz-txt-link-freetext" href="sip:123456789@mygateway_ip">sip:123456789@mygateway_ip and Branch URI 1 = NULL"
This means that when I actually call "$branch = some_uri" that is when the branch is created with an id. Because I checked adding that $branch = $ru line again and then syslog printed  "Branch URI 0=sip:1111@1.2.3.4:25380 and Branch URI 1=<a class="moz-txt-link-freetext" href="sip:123456789@mygateway_ip">sip:123456789@mygateway_ip".

t_on_branch("1");
t_relay();
exit;

Observation 2:
Inside the branch route I write the following code:
       branch_route[1] {
              $var(branch_id) = $T_branch_idx;
              if($var(branch_id) == "1") {
                     xlog("L_INFO", "Branch-ID=$T_branch_idx")
                     insert_hf("Forwarded: Yes\r\n", "Call-ID");
                     uac_replace_from("sip:$avp(cli)@mydomain.com");    
              }
       }


Now here I can confirm that when the branch_id is 1, it gets into this condition since the xlog prints  "Branch-ID=1" properly when its inside the branch route; but when branch_0 gets relayed out this header gets inserted and From header gets replaced whereas when branch_1 is relayed the header mentioned in this condition is not inserted and also the From header is not replaced.
Basically, it behaves exactly opposite as expected !! Please note in this case I am creating branch twice using the $branch command so that $branch(uri)[0] is the one fetched from location and $branch(uri)[1] is the PSTN uri where the call has to be parallel forwarded.
Is there something I am still doing wrong because as I understood; inside the branch_route based on branch_id I am inserting a custom header and replacing From header but this custom header and From header is being replaced on the unintended branch !!
Could be that something is wrong in opensips-1.7.x. Please help me out here.

Thanks,

--- Jayesh

On Tue, Sep 4, 2012 at 12:18 AM, Jayesh Nambiar <[hidden email]> wrote:
Thanks Bogdan. Will definitely try this out.

--- Jayesh


On Monday, September 3, 2012, Bogdan-Andrei Iancu wrote:
Hi Jayesh,

See my inline comments.

Regards,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 08/31/2012 03:02 PM, Jayesh Nambiar wrote:
Hi Binan,
Thank you very much for your reply. What you wrote is what I understand from all the documentation present but probably the concept is not working for me or probably just not getting into my head. This is a snippet of what I'm trying to do:

lookup("location");
$branch = $ru;
You do not need this last line as the $ru will be automatically be considered branch 0.


avp_db_query("SELECT cli, phone_number FROM users WHERE user_id = '$rU', "$avp(cli), $avp(parallel_number)");
$rU = $avp(parallel_number);
$rd = my_gateway_ip;
$var(uri) = "sip:"+$rU+"@"+$rd;

$branch = $var(ruri);

t_on_branch("1"); # --This is confusing me---
This is correct, you are arming the branch 1, which will be executed inside t_relay(), once for each branch.

t_relay();
exit;

branch_route[1] { #---Need to know how to check for branch id here---
       if(branch_id == 1) { #--- How do I check for this condition??
See $T_branch_idx (http://www.opensips.org/html/docs/modules/1.8.x/tm.html#id294499)

              uac_replace_from("sip:$avp(cli)@mydomain.com");
       }
}

The problem is I dont know how to identify the branch id in the branch route. Even if I set branch flag for second branch using setbflag(1,1) and I check for this flag in the branch route using isbflagset(1,1), by the time the first branch goes into branch_route, the second branch is created and the condition isbflagset(1,1) becomes true and the uac_replace_from() gets executed for first branch also. My requirement is to execute this branch_route only for second branch which is branch_id 1.
Isn't there any straight forward way of checking the id of the branch when it comes to the branch route??

Any help is really appreciated. Thanks.

--- Jayesh
Hi,

lets say you have 2 branches 0 towards user in location and 1 towards PSTN.
?
I suggest to use branch flags which are used to activate some functions in branch level

when creating the branches in main route use this variable $branch() to set branch flags to each indivisual branch depending on its index 0 for branch 0 and 1 for branch 1.

use branch routing blocks to execute certain logic (it could be the manipulation ) for each branch before forwarding the request.

// Binan

--- On Thu, 8/30/12, Jayesh Nambiar <[hidden email]> wrote:

From: Jayesh Nambiar <[hidden email]>
Subject: [OpenSIPS-Users] Parallel forking and per branch manipulation
To: "OpenSIPS users mailling list" <[hidden email]>
Date: Thursday, August 30, 2012, 8:11 AM

Hi All,I have a scenario to do parellel forking between the user found in location and towards a PSTN gateway. The requirement here is, I have unique manipulations to be done before routing the call which I believe can be done using branch routes, but I'm just wondering how.?
For eg: The branch that goes to the user found from location should have no FROM Header manipulation and the branch that goes out to PSTN gateway needs a uac_replace_from("sip:123456789@1.2.3.4"), and insert_hf("P-Asserted_Identity: sip:123456789@1.2.3.4\r\n") before calling t_relay(). There are many other manipulations like this.
How do I take the script logic to individual branch routes before calling t_relay, because whats happening with me is once the location is looked up, I go ahead for manipulations that is supposed to be done for the gateway branch, but it gets applicable for the branch that goes out to the user as well !!

Probably I am missing something on my understanding on how to call branch_routes while doing parallel forking.
Thanks for any help.
--- Jayesh

_______________________________________________ Users mailing list [hidden email] http://lists.opensips.org/cgi-bin/mailman/listinfo/users


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users