1

我试图让 Kamailio 将其 CDR 记录到文本文件而不是数据库。呼叫路由正常,但我的 CDR 目录中什么也没有。以下是我认为 kamailio.cfg 文件的相关部分。显然,这不是全部,但大部分是 3.3.1 发行版附带的默认设置。呼叫根据分发文件进行路由,但在呼叫终止时不会在 /var/log/kamailio 目录中写入任何内容。Kamailio 以 kamailio:kamailio 的身份运行,并且该目录由其所有。Wireshark 跟踪显示正确的信令代码顺序(邀请 IVR、尝试、200、再见)并且有音频。

谢谢。

`...
loadmodule "dialog.so"
loadmodule "db_flatstore.so"
...
modparam("acc", "db_url", "flatstore:/var/log/kamailio") 
modparam("acc", "early_media", 0)
modparam("acc", "report_ack", 0) 
modparam("acc", "report_cancels", 0)
modparam("acc", "detect_direction", 0)
modparam("acc", "log_flag", FLT_ACC)
modparam("acc", "log_missed_flag", FLT_ACCMISSED)
modparam("acc", "log_extra", 
modparam("acc", "failed_transaction_flag", FLT_ACCFAILED)
modparam("acc", "cdr_enable", 1)
modparam("acc", "cdr_flag", 3)
...
request_route {
    ...
        remove_hf("Route");
        if (is_method("INVITE")) {
                record_route();   
                setflag(FLT_ACC); 
                ds_select_dst("1","4");
                forward();
                exit();   
        }
        ...
}

`

4

1 回答 1

1

被驱赶半便便后发现了问题。问题在于“forward()”——在这种情况下没有写入会计记录。

而不是使用 forward() 使用

if (!t_relay()) {
    sl_reply_error();
}

会计记录被神奇地写下来。我的 acc 模块的 modparams 也到处都是,但这仍然是一项正在进行的研究,不会影响我在这里遇到的基本问题。

如果比我聪明的人能解释为什么前锋不写 CDR,那么如果你能写评论,我将不胜感激。

于 2012-09-19T19:43:03.173 回答