Aatif Shaikh <aatif.shaikh@ecosmob.com>

Mon, Dec 7, 11:00 AM (3 days ago)
to sr-users
Hello All
   I configure my kamailio.cfg to handle SLA using (SCA module) and shared presence is working but still facing some issue in case of hold invite and BYE and the reason behind of that issue is following error

Nov 26 07:38:40 SBC-4-1 /usr/local/sbin/kamailio[104107]: ERROR: sca [sca_call_info.c:1008]: sca_call_info_invite_request_handler(): Failed to update sip:4569@test.sip.abcd.com appearance-index 0 to active    

actually, in Kamailio appearances, I can see the entry for this call but the index is 1 instead of 0, and Kamailio going to update with a 0 index

[root@SBC-4-1 ntcarfte-kamailio]# kamcmd sca.all_appearances
sip:4569@test.sip.abcd.com 1 active 1606376289 sip:4569@10.xx.xx.xx:5070;transport=udp sip:2003@test.sip.abcd.com 186161_mobile-rel120MTQ5OTcyZjFhMjMyNmI1ZGE1MWY4ODc2M2RkN2VmZmQ 45dc18d8 H6cS9vecZ248B

if I manually update appearances using RPC command with index 1 then the phone started blinking as I change state to held

# kamcmd sca.update_appearance sip:4569@sc4test.sip.teledge.com 1 held
# kamcmd sca.all_appearances
sip:4569@test.sip.abcd.com 1 held 1606376516 sip:4569@10.xx.xx.xx:5070;transport=udp sip:2003@test.sip.abcd.com 186161_mobile-rel120NzE5MDgyZDc1NjJiYjcwMWFlYmI3NzM3NjE2OTRhZjU 08f005cb eK9ratm83g92e

kamailio.cfg


route[SCA] {
        if(is_method("SUBSCRIBE")) {

                if ($hdr(Event) == "call-info" || $hdr(Event) == "line-seize") {
                xlog("L_INFO","(MAIN) :HELLO ($avp(uuid)) : $avp(rsi)  $sp $hdr(Event)");          
                        xdbg("SCA: $hdr(Event) SUBSCRIBE $ru from $si:$sp");
                        sca_handle_subscribe();
                        exit;
                }
                return;
        }

        if (!is_method("BYE|CANCEL|INVITE|PRACK|REFER")) {
                return;
        }  
                        sca_call_info_update();    
}

route[RELAY_OUTBOUND_FS] {
        xlog("L_INFO","(RELAY_OUTBOUND_FS) : ($avp(uuid)) : INSIDE ROUTE ");
   
        if (!has_totag()){
                $avp(set_h) = 1;
        }

        t_on_reply("REPLY_OUTBOUND_FS");
        route(SCA);
        if (!t_relay()) {
                sl_reply_error();
        }
        exit;
}

route[RELAY_INBOUND_FS] {

        if(is_method("INVITE|BYE|UPDATE|CANCEL|ACK")) {
                $avp(s:puburis_caller) = $fu;
                setflag(8);
                dlg_manage();
        }

        if(is_method("REGISTER")) {
            t_on_reply("REPLY_REGISTER");
        } else {
            t_on_reply("REPLY_INBOUND_FS");
        }
        route(SCA);
        if (!t_relay()) {
                sl_reply_error();
        }
        exit;
}

onreply_route[REPLY_INBOUND_FS] {
xdbg("incoming reply\n");

if (status =~ "[456][0-9][0-9]") {
# don't update SCA state here, since there may be
# failure route processing (e.g., call forwarding).
# update state in failure route instead.
   return;
}

route(SCA);
}

onreply_route[REPLY_OUTBOUND_FS] {
xdbg("incoming reply\n");

if (status =~ "[456][0-9][0-9]") {
# don't update SCA state here, since there may be
# failure route processing (e.g., call forwarding).
# update state in failure route instead.
   return;
}

route(SCA);
}

can someone help me with this Did I missed something to handle SLA?