[SR-Users] I: - w_ro_ccr(): Unable to find dialog and cannot do Ro charging without it

Angelo Colucci angelo.colucci at welcomeitalia.it
Fri Feb 9 18:39:56 CET 2018


Hello Everyone,
I've been resolved the problem.
It was the setflag(FLT_ACC) at the beginning of the block  if (is_method("INVITE")) {

setflag(FLT_ACC); <-----

using instead following function now the dialog is correctly created.

setflag(FLT_DIALOG);

Best Regards
Angelo




Da: Angelo Colucci 
Inviato: giovedì 8 febbraio 2018 18:33
A: 'sr-users at lists.kamailio.org' <sr-users at lists.kamailio.org>
Oggetto: [SR-Users] - w_ro_ccr(): Unable to find dialog and cannot do Ro charging without it

Hello Everyone,
I'm new in Kamailio environment. We trying to setup a  IMS Credit Control Client as per RFC 4006. 
We've trying to implement the suggesting configuration in ims_charging module doc.
The Kamailio version is 5.1.1 Stable.
The Server is configured with two local users (A and B) registered on local mysql database.

The scenario is the following:
1. In the request_route object we trying to intercept the first INVITE and trigger
a diameter credit control request using Ro_CCR function.
2. When A calls B without triggering mechanism the call is fine.
3. When A calls B with credit control triggering, the calls failed and the diamater request is not generated.

In the debug we find the following error:

exec: *** cfgtrace:request_route=[DEFAULT_ROUTE] c=[/etc/kamailio/kamailio.cfg] l=540 a=25 n=xlog
ERROR: <script>: Individuato primo INVITE: generata nuova transazione
exec: *** cfgtrace:request_route=[DEFAULT_ROUTE] c=[/etc/kamailio/kamailio.cfg] l=541 a=63 n=assign
exec: *** cfgtrace:request_route=[DEFAULT_ROUTE] c=[/etc/kamailio/kamailio.cfg] l=541 a=29 n=Ro_CCR
DEBUG: ims_charging [ims_charging_mod.c:494]: w_ro_ccr(): Ro CCR initiated: direction:orig, reservation_units:30, route_name:CHARGING_CCR_REPLY, incoming_trunk_id:1 outgoing_trunk_id:1
DEBUG: ims_dialog [dlg_hash.c:926]: internal_get_dlg(): no dialog callid='yH5kdBGSrM6CowdkkRHTUw..' found
DEBUG: ims_dialog [dlg_hash.c:956]: get_dlg(): no dialog callid='yH5kdBGSrM6CowdkkRHTUw..' found
DEBUG: ims_dialog [dlg_handlers.c:1950]: dlg_get_msg_dialog(): dlg with callid 'yH5kdBGSrM6CowdkkRHTUw..' not found
ERROR: ims_charging [ims_charging_mod.c:511]: w_ro_ccr(): Unable to find dialog and cannot do Ro charging without it

The error indicates that w_ro_ccr function doesn't find any dialog.
Following you can find the relative configuration of kamailio.cfg. The request_route block is equal to default configuration except the following command:

#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB
#!define WITH_DEBUG

loadmodule "cdp"
loadmodule "cdp_avp"
loadmodule "ims_charging"
loadmodule "ims_dialog"


modparam("ims_charging", "origin_host", "kcc-t-lu-03.mnc049.mcc222.3gppnetwork.org") 
modparam("ims_charging", "origin_realm", "mnc049.mcc222.3gppnetwork.org")
modparam("ims_charging", "destination_realm", "mnc049.mcc222.3gppnetwork.org")
modparam("ims_charging","interim_update_credits",30)
modparam("ims_charging","timer_buffer",5)
# -- ims_dialog params --
modparam("ims_dialog", "dlg_flag", FLT_DIALOG)

request_route {

...
       if (is_method("INVITE")) {
              setflag(FLT_ACC); # do accounting
            t_newtran();
            $var(cc_ret) = Ro_CCR("CHARGING_CCR_REPLY", "orig", 30, "1", "1");
            if ($var(cc_ret) < 0) {
                xlog("Chiamata a Ro_CCR() fallita\n");
                sl_send_reply("402","Payment required");
                exit;
            }
     }  
...
}

route[CHARGING_CCR_REPLY]{
    xlog("cca_return code is $avp(s:cca_return_code): $avp(s:cca_result_code)\n");
    switch ($avp(s:cca_return_code)){
        case 1: #success
            break;
        case -1: #failure
            switch ($avp(s:cca_result_code)){
                case 4010:
                    send_reply("402", "Payment required - Unsufficient funds");
                    break;
                case 5006:
                    send_reply("486", "Line limit exceeded");
                    break;
                default:
                    send_reply("402","Payment required ($avp(s:cca_result_code))");
                    break;
            }
        default:
            xlog("L_ERR", "Unknown return code from CCR: [$avp(s:cca_return_code)] \n");
            send_reply("500", "Charging Error");
            break;
        }
}

What's goes wrong?
Thanks in advance
Angelo Colucci





More information about the sr-users mailing list