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@lists.kamailio.org' sr-users@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