如何在opensips中手动进行会计

How can do accounting manually in opensips

我正在使用 Opensips 2.3 并且已经在做会计了。但是我有一个非常不同的数据库,我已经配置为 missing/channel 使用 avp_db.

手动超过 CDRS

有没有一种方法可以对已建立的呼叫进行计费,因为它会自动在 acc table 中进行所有计费,但它也会以相同的方式对已建立、未接和占线的呼叫进行计费,但我想要只做已建立的呼叫 CDRS。对于自动帐户,我使用以下 acc 命令

loadmodule "acc.so"
modparam("acc", "early_media", 0)
modparam("acc", "report_cancels", 0) 
modparam("acc", "detect_direction",0)
modparam("acc", "extra_fields", "db: a->caller_id; b->callee_id") #Extra Data

在路由部分我放了下面的脚本

if (is_method("BYE")) {
    $acc_extra(a) = $fu;
    $acc_extra(b) = $tu;
    do_accounting("db","failed");

我只想要呼叫实际终止的地方,然后我已经有了 $avp(timestart) 值,所以我可以扣除和计算付款并使用 avp_db 插入 CDRS

使用 OpenSIPS 2.2+,您可以通过在接收时指定 do_accounting()cdr 选项,仅对已建立的呼叫启用计费(200 OK +(端点 BYE,对话到期或强制结束))初始邀请:

route {

    if (has_totag()) {
        ...
        exit;
    }

    ...

    if (is_method("INVITE"))
        do_accounting("db", "cdr");

    ...

    t_relay();
}