I have setup ACCDB module to save missed / failed and successful calls.
My issue is that i am getting duplicated entries for INVITE / BYE in acc database table.
For example:
id;method;from_tag;to_tag;callid;sip_code;sip_reason;time;src_ip;dst_user;dst_domain;src_user;src_domain;cdr_id
231838;INVITE;21-7FC1D85;1914472180948750;KKyIdaaJceAu7pzN@172.16.0.35;200;OK;2020-02-11 19:16:28;22.33.44.55;nlb124#78019989897056;11.11.11.11;asterisk;172.16.0.35;0
231839;INVITE;21-7FC1D85;1914472180948750;KKyIdaaJceAu7pzN@172.16.0.35;200;OK;2020-02-11 19:16:28;22.33.44.55;nlb124#78019989897056;11.11.11.11;asterisk;172.16.0.35;0
231840;INVITE;21-7FC1D85;1914472180948750;KKyIdaaJceAu7pzN@172.16.0.35;200;OK;2020-02-11 19:16:28;22.33.44.55;nlb124#78019989897056;11.11.11.11;asterisk;172.16.0.35;0
231841;BYE;21-7FC1D85;1914472180948750;KKyIdaaJceAu7pzN@172.16.0.35;200;OK;2020-02-11 19:16:36;22.33.44.55;;190.196.153.130;asterisk;172.16.0.35;0
231842;BYE;21-7FC1D85;1914472180948750;KKyIdaaJceAu7pzN@172.16.0.35;200;OK;2020-02-11 19:16:36;22.33.44.55;;190.196.153.130;asterisk;172.16.0.35;0
231844;BYE;21-7FC1D85;1914472180948750;KKyIdaaJceAu7pzN@172.16.0.35;200;OK;2020-02-11 19:16:36;22.33.44.55;;190.196.153.130;asterisk;172.16.0.35;0
Following way:
# ----- acc params -----
/* what special events should be accounted ? */
modparam("acc", "early_media", 0)
modparam("acc", "report_ack", 0)
modparam("acc", "report_cancels", 0)
/* by default ww do not adjust the direct of the sequential requests.
* if you enable this parameter, be sure the enable "append_fromtag"
* in "rr" module */
modparam("acc", "detect_direction", 0)
/* account triggers (flags) */
modparam("acc", "log_flag", FLT_ACC)
modparam("acc", "log_missed_flag", FLT_ACCMISSED)
modparam("acc", "log_extra",
"src_user=$fU;src_domain=$fd;src_ip=$si;"
"dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
modparam("acc", "failed_transaction_flag", FLT_ACCFAILED)
/* enhanced DB accounting */
#!ifdef WITH_ACCDB
modparam("acc", "db_flag", FLT_ACC)
modparam("acc", "db_missed_flag", FLT_ACCMISSED)
modparam("acc", "db_url", DBURL)
#modparam("acc", "db_extra",
# "src_user=$fU;src_domain=$fd;src_ip=$si;"
# "dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
modparam("acc", "db_extra",
"src_user=$fU;src_domain=$fd;dst_user=$rU;dst_domain=$rd;src_ip=$si")
# our lines
modparam("acc", "cdrs_table", "acc_cdrs")
modparam("acc", "cdr_on_failed", 1)
#!endif
Then in routing config i set setflag(FLT_ACC FLT_ACCMISSED FLT_ACCFAILED in several places.
My question is - each setflag cause an entry to be saved in DB?
How can i debug and resolve the issue of duplicates.
I am trying to use a CDR script found somewhere on siremis sites to do the accounting but it's making trouble because due to duplicates in acc table i am getting cdrs unique key violations.
Secondary question is - if a BYE is not received / lost is there any way to send a check triggered by kamailio to each caller and callee side to check if dialog is still active.
I would not like to use session timers (as endpoints need to support it).
Best regards,
Tom