首页 > 技术文章 > 在opensips中记录通话记录

yeye518 2014-11-05 18:41 原文

1、为acc表增加额外的字段记录主叫被叫
进入mysql,选取opensips的数据库
ALTER TABLE acc ADD from_uri VARCHAR(64) DEFAULT '' NOT NULL ;
ALTER TABLE acc ADD to_uri VARCHAR(64) DEFAULT '' NOT NULL ;

2、opensips的配置

#### ACCounting module
loadmodule "acc.so"
/* account triggers (flags) */
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
modparam("acc", "cdr_flag", 1)
modparam("acc", "db_url",
    "mysql://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME
modparam("acc", "db_extra", "from_uri=$fu; to_uri=$tu")

...
    if (has_totag())
    {
        # sequential request withing a dialog should
        # take the path determined by record-routing
        if (loose_route())
        {
            if (is_method("BYE"))
            {
                setflag(1); # do accounting ...
                setflag(3); # ... even if the transaction fails
            }
            else if (is_method("INVITE"))
            {
                # even if in most of the cases is useless, do RR for
                # re-INVITEs also, as some buggy clients do change route set
                # during the dialog.
                record_route();
            }
            if (check_route_param("nat=yes"))
            {
                setflag(10);
            }
            # route it out to whatever destination was set by loose_route()
            # in $du (destination URI).
            route(1);
        }

...
    # account only INVITEs
    if (is_method("INVITE"))
    {
        # create dialog with timeout
        if ( !create_dialog("B"))
        {
            send_reply("500","Internal Server Error");
            exit;
        }
        setflag(1); # do accounting
    }

推荐阅读