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

Reply via email to