[OpenSIPS-Users] Regarding cdrs table in opensips

Mike Tesliuk mike.tesliuk at ultra.net.br
Sat Aug 17 16:15:46 CEST 2013


Maybe i dont understand well, but show us a debug of this, you can generate
with ngrep ( ngrep -W byline "username" port 5060 )


2013/8/17 Nandini madhu <sermj2012 at gmail.com>

> Hi Mike,
>
> I have checked and it is working fine with my system and i got the call
> details in both acc and cdrs tables. thanks a lot.
>
> But i have a small doubt regarding the voice call in opensips. Even i
> installed media proxy and rtp proxy with opensips, when i am trying to call
> clients from one among other. i am getting *"wating for ack"*,  appearing
> on the callee side of sip client display and i am unable to listen voice
> from callee side to caller while i can listen voice from caller to callee.
>
> Isthere any configuration changes need to done with i the configuration
> file.
>
> Please let me know.
>
> Regards
>
> sermj
>
>
> On Tue, Aug 6, 2013 at 6:34 PM, Mike Tesliuk <mike.tesliuk at ultra.net.br>wrote:
>
>> the opensips-cp come with a sql procedure called opensips_cdrs_1_6() (or
>> something like) did you check if you have this created ?
>>
>>
>> 2013/8/6 Nandini madhu <sermj2012 at gmail.com>
>>
>>> Hi all,
>>>
>>> I am using opensips-1.9.1-tls vaersion. And opensips-cp-5.0.
>>>
>>> I am able to see some changes in acc table after made calling between
>>> clients.
>>>
>>> But i did't see any changes in cdrs table.
>>>
>>> I loaded dialog module and enabled cdr_flag in acc.
>>>
>>> Please help me to solve this issue.
>>>
>>> Here is my accounting module parameters:
>>> #### ACCounting module
>>> loadmodule "acc.so"
>>> modparam("acc", "failed_transaction_flag", "FAIL_TRANS_FLAG")
>>> modparam("acc", "report_cancels", 1)
>>> ##modparam("acc", "report_ack", 0)
>>> modparam("acc", "early_media", 0)
>>> modparam("acc", "log_level", 1)
>>> modparam("acc", "log_flag", "LOG_FLAG")
>>> modparam("acc", "log_missed_flag", "LOG_MISSED_FLAG")
>>> modparam("acc", "db_flag", "DB_FLAG")
>>> modparam("acc", "cdr_flag", "CDR_FLAG")
>>> modparam("acc", "db_missed_flag", "DB_MISSED_FLAG")
>>> modparam("acc", "db_url", "mysql://opensips:opensipsrw@opensips
>>> /opensips")
>>> modparam("acc", "db_table_acc", "acc")
>>> modparam("acc", "acc_method_column", "method")
>>> modparam("acc", "acc_from_tag_column", "from_tag")
>>> modparam("acc", "acc_to_tag_column", "to_tag")
>>> modparam("acc", "acc_callid_column", "callid")
>>> modparam("acc", "acc_sip_code_column", "sip_code")
>>> modparam("acc", "acc_sip_reason_column", "sip_reason")
>>> modparam("acc", "acc_time_column", "time")
>>> modparam("acc", "db_extra",
>>> "src_uri=$fU;caller_domain=$fd;dst_uri=$rU;callee_domain=$rd;legtype=$avp(s:LEG)")
>>>
>>> And this is my script
>>>
>>> # main request routing logic
>>>
>>> route{
>>>     if (!mf_process_maxfwd_header("10")) {
>>>         sl_send_reply("483","Too Many Hops");
>>>         exit;
>>>     }
>>>
>>>     if (has_totag()) {
>>>         # sequential requests within a dialog should
>>>         # take the path determined by record-routing
>>>         if (loose_route()) {
>>>             if (is_method("BYE")) {
>>>                 create_dialog();
>>>                 setflag(TRACE_FLAG);
>>>                 setflag(DB_FLAG); # do accounting ...
>>>                 setflag(CDR_FLAG); # ... even if the transaction fails
>>>             } else if (is_method("INVITE")) {
>>>                 # even if in most of the cases is useless, do RR for
>>>                 # re-INVITEs alos, as some buggy clients do change route
>>> set
>>>                 # during the dialog.
>>>                 record_route();
>>>             }
>>>
>>>             # route it out to whatever destination was set by
>>> loose_route()
>>>             # in $du (destination URI).
>>>             route(relay);
>>>         } else {
>>>             if ( is_method("ACK") ) {
>>>                 if ( t_check_trans() ) {
>>>                     # non loose-route, but stateful ACK; must be an ACK
>>> after
>>>                     # a 487 or e.g. 404 from upstream server
>>>                     t_relay();
>>>                     exit;
>>>                 } else {
>>>                     # ACK without matching transaction ->
>>>                     # ignore and discard
>>>                     exit;
>>>                 }
>>>             }
>>>             sl_send_reply("404","Not here");
>>>         }
>>>         exit;
>>>     }
>>>
>>>     # CANCEL processing
>>>     if (is_method("CANCEL"))
>>>     {
>>>         if (t_check_trans())
>>>             t_relay();
>>>         exit;
>>>     }
>>>
>>>     t_check_trans();
>>>
>>>     if ( !(is_method("REGISTER")  ) ) {
>>>         if (from_uri==myself)
>>>         {
>>>         } else {
>>>             # if caller is not local, then called number must be local
>>>             if (!uri==myself) {
>>>                 send_reply("403","Rely forbidden");
>>>                 exit;
>>>             }
>>>         }
>>>     }
>>>
>>>     # preloaded route checking
>>>     if (loose_route()) {
>>>         xlog("L_ERR",
>>>         "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");
>>>         if (!is_method("ACK"))
>>>             sl_send_reply("403","Preload Route denied");
>>>         exit;
>>>     }
>>>
>>>     # record routing
>>>     if (!is_method("REGISTER|MESSAGE"))
>>>         record_route();
>>>
>>>     # account only INVITEs
>>>     if (is_method("INVITE")) {
>>>         setflag(DB_FLAG); # do accounting
>>>     }
>>>
>>>
>>>     if (!uri==myself) {
>>>         append_hf("P-hint: outbound\r\n");
>>>         route(relay);
>>>     }
>>>
>>>     # requests for my domain
>>>     if (is_method("PUBLISH|SUBSCRIBE"))
>>>     {
>>>         sl_send_reply("503", "Service Unavailable");
>>>         exit;
>>>     }
>>>
>>>     if (is_method("REGISTER"))
>>>     {
>>>         if (   0 ) setflag(TCP_PERSISTENT);
>>>
>>>         if (!save("location"))
>>>             sl_reply_error();
>>>
>>>         exit;
>>>     }
>>>
>>>     if ($rU==NULL) {
>>>         # request with no Username in RURI
>>>         sl_send_reply("484","Address Incomplete");
>>>         exit;
>>>     }
>>>
>>>     # do lookup with method filtering
>>>     if (!lookup("location","m")) {
>>>         t_newtran();
>>>         t_reply("404", "Not Found");
>>>         exit;
>>>     }
>>>
>>>     # when routing via usrloc, log the missed calls also
>>>     setflag(ACC_MISSED);
>>>     route(relay);
>>> }
>>>
>>>
>>> route[relay] {
>>>     # for INVITEs enable some additional helper routes
>>>     if (is_method("INVITE")) {
>>>         t_on_branch("per_branch_ops");
>>>         t_on_reply("handle_nat");
>>>         t_on_failure("missed_call");
>>>     }
>>>
>>>     if (!t_relay()) {
>>>         send_reply("500","Internal Error");
>>>     };
>>>     exit;
>>> }
>>>
>>>
>>> branch_route[per_branch_ops] {
>>>     xlog("new branch at $ru\n");
>>> }
>>>
>>>
>>> onreply_route[handle_nat] {
>>>
>>>     xlog("incoming reply\n");
>>> }
>>>
>>>
>>> failure_route[missed_call] {
>>>     if (t_was_cancelled()) {
>>>         exit;
>>>     }
>>>
>>>     # uncomment the following lines if you want to block client
>>>     # redirect based on 3xx replies.
>>>     ##if (t_check_status("3[0-9][0-9]")) {
>>>     ##t_reply("404","Not found");
>>>     ##    exit;
>>>     ##}
>>>
>>> }
>>>
>>> Kindly help me
>>>
>>> Thanks in advance
>>>
>>> Regards
>>>
>>> sermj
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20130817/78383b5e/attachment-0001.htm>


More information about the Users mailing list