代码之家  ›  专栏  ›  技术社区  ›  Kamal Panhwar

如何在opensips中手工记帐

  •  1
  • Kamal Panhwar  · 技术社区  · 6 年前

    我正在使用opensips 2.3并且已经在做会计了。但是我有一个非常不同的数据库,在那里我已经配置为使用avp_db手动执行丢失/通道超过cdr。

    有没有一种方法可以对建立的呼叫进行记帐,就像在automatic中一样,它在acc表中执行所有记帐,但它也以相同的方式执行建立的、丢失的和繁忙的呼叫,但我只想执行建立的呼叫cdr。对于自动帐户,我使用以下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插入cdr

    1 回复  |  直到 6 年前
        1
  •  1
  •   Liviu Chircu    6 年前

    使用opensips 2.2+,您可以通过指定 cdr 选择 do_accounting() 收到初始邀请后:

    route {
    
        if (has_totag()) {
            ...
            exit;
        }
    
        ...
    
        if (is_method("INVITE"))
            do_accounting("db", "cdr");
    
        ...
    
        t_relay();
    }