Ahmed,
after an async() call, the execution never returns, but it continues
exclusively via the resume route.
Regards,
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com
On 01/24/2017 05:06 PM, Ahmed Munir wrote:
I mean to say, after calling async statement, somehow it is not
routing back the call to the main routing script after post DB query,
see e.g. below for the current routing using async;
route [1]{
....
if($avp(Outpluseflag) == 0) {
async(avp_db_query("SELECT Outpulse_number,setid FROM Prefix_data
where Program_prefix = '$avp(pg_prefix)'", "$avp(outpluse);
$avp(trunkid)"),ob_route_1);
}
..
}
route[ob_route_1]{
$avp(res)=$rc;
if ($avp(res) > 0) {
cache_store("local", "DID_$tU", "$avp(outpluse)", 60);
cache_store("local", "Trunk_$tU", "$avp(trunkid)", 60);
}
$avp(ru)=$(avp(ru){s.substr,1,0});
#Look for exten and trunk id for the FROM cache Internal
number table
if(cache_fetch("local", "$tU", $avp(iexten))) {
if(cache_fetch("local", "GroupID_$tU", $avp(igroupid))) {
#$var(flag) = 1;
$avp(flag) = 1;
}
}
}
At first in route[1], I was setting up
'$avp(ru)=$(avp(ru){s.substr,1,0});' and post routing script after
async DB statement, but it is not resuming the route from there. As a
work around, instead of setting up $avp(ru) and storing variable in
cache in route[1], added them in route[ob_route_1] (as example above),
it works.
I would like to know, is there way after executing async DB statement
(in route[ob_route_1]), we can resume back the route in route[1] or not?
On Tue, Jan 24, 2017 at 9:09 AM, Bogdan-Andrei Iancu
<bog...@opensips.org <mailto:bog...@opensips.org>> wrote:
Could you please rephrase / detail your question, as I do not
understand what you are asking.
Thanks,
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com <http://www.opensips-solutions.com>
On 01/24/2017 03:44 PM, Ahmed Munir wrote:
Thanks, have been working on this and it is working.
Btw, I would like to know, is there a way to resume route while
using async avp_db_query? As currently setting/declaring another
async route for DB query, looking for resume route in main
routing script.
On Tue, Jan 24, 2017 at 6:45 AM, Bogdan-Andrei Iancu
<bog...@opensips.org <mailto:bog...@opensips.org>> wrote:
Hi Ahmed, Note the $rc holds the return code of the LAST
executed statement/instruction/function in the script. In the
first case you do it right by saving the ret code of the
avp_db_query into a separate variable, so you can use it even
later. In the sync script, the $rc, when entering the resume
route, it will hold the return code of the avp_db_query()
function. But the $rc will be changed when doing the xlog(),
the if(), etc...So when you do the last xlog(), the $rc will
have nothing to do with the avp_db_query(). If you need it
later in the script, better save it, as you do in the first
example. Regards,
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com
<http://www.opensips-solutions.com>
On 01/20/2017 01:31 AM, Ahmed Munir wrote:
Hi,
Currently I'm trying to use async fucntion for avp_db_query.
The issue I'm facing while using it as not retrieving or
returning correct return code and not execute later part of
the routing script. See old & new DB queries;
Without Async: ---------------------- route[1]{ ...
if($var(Outpluseflag) == 0) {
avp_db_query("SELECT Outpulse_number,setid FROM Prefix_data
where Program_prefix = '$var(pg_prefix)'", "$avp(outpluse),
$avp(trunkid)"); $var(res) = $retcode; # or
you can just use $retcode! xlog("---------
OB Route 1-1 DB fetched value outpluse -> $avp(outpluse) |
trunkid -> $avp(trunkid) | Return Code: $rc | Var Res:
$var(res)-------"); if ($var(res) > 0) {
cache_store("local", "DID_$tU",
"$avp(outpluse)", 60);
cache_store("local", "Trunk_$tU", "$avp(trunkid)", 60);
} #xlog("DB fetched value
outpluse -> $avp(outpluse) | trunkid -> $avp(trunkid) |
Return Code -> $var(res)"); xlog("---------
OB Route 1-2 DB fetched value outpluse -> $avp(outpluse) |
trunkid -> $avp(trunkid) | Return Code: $rc | Var Res:
$var(res)-------"); }
} With Async: -------------------
route[1]{
...
if($var(Outpluseflag) == 0) {
async(avp_db_query("SELECT Outpulse_number,setid FROM
Prefix_data where Program_prefix = '$var(pg_prefix)'",
"$avp(outpluse), $avp(trunkid)"),ob_route_1); } }
route[ob_route_1]{ xlog("--------- OB Route 1-1 DB
fetched value outpluse -> $avp(outpluse) | trunkid ->
$avp(trunkid) | Return Code: $rc-------"); if ($rc >
0) { cache_store("local", "DID_$tU",
"$avp(outpluse)", 60); cache_store("local",
"Trunk_$tU", "$avp(trunkid)", 60); }
xlog("--------- OB Route 1-2 DB fetched value outpluse ->
$avp(outpluse) | trunkid -> $avp(trunkid) | Return Code:
$rc-------"); }
The records in xlog I'm getting without using async; Jan 19
18:05:39 qorblpsisprxyd1 /usr/sbin/opensips[14040]:
--------- OB Route 1-1 DB fetched value outpluse ->
6099020000 <tel:%28609%29%20902-0000> | trunkid -> 117 |
Return Code: 1 | Var Res: 1------- Jan 19 18:05:39
qorblpsisprxyd1 /usr/sbin/opensips[14040]: --------- OB
Route 1-2 DB fetched value outpluse -> 6099020000
<tel:%28609%29%20902-0000> | trunkid -> 117 | Return Code: 1
| Var Res: 1-------
Whereas, records in xlog I'm getting using async; Jan 19
18:10:07 qorblpsisprxyd1 /usr/sbin/opensips[14109]:
--------- OB Route 1-1 DB fetched value outpluse ->
6099020000 <tel:%28609%29%20902-0000> | trunkid -> 117 |
Return Code: 1------- Jan 19 18:10:07 qorblpsisprxyd1
/usr/sbin/opensips[14109]: --------- OB Route 1-2 DB fetched
value outpluse -> 6099020000 <tel:%28609%29%20902-0000> |
trunkid -> 117 | Return Code: 0-------
Is there is way to properly retain the $retcode/$rc in
version 2.2.2? Seems like using async return code(s) are not
properly set or the avp variables are not setting up correct
using async statement.
Please advise, if the above async db statement is correct as
shared in sample above.
--
Regards, Ahmed Munir Chohan
_______________________________________________
Users mailing list
Users@lists.opensips.org <mailto:Users@lists.opensips.org>
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
<http://lists.opensips.org/cgi-bin/mailman/listinfo/users>
--
Regards, Ahmed Munir Chohan
--
Regards, Ahmed Munir Chohan
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users