<span class="gmail_quote"></span>
<div>Hi all,</div>
<div> </div>
<div>I ever used SER and I know it will save the From information such as <a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:101@192.168.11.200" target="_blank">101@192.168.11.200</a> to sip_from or from_uri in its acc table.
</div>
<div>But in my openser, I also setup the acc module. Where is my caller info?</div>
<div> </div>
<div>I can find a lot of number such as "2806655523" in my from_tag.</div>
<div>I wanna store the caller and callee info in my acc table when I make an internal call or an external call.</div>
<div> </div>
<div>Can anybody kind to help me to solve it? or give me some tips please.</div>
<div>PS: I got this openser.cfg from <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.sipwise.com/wizard" target="_blank">http://www.sipwise.com/wizard</a>.</div>
<div> </div>
<div>Best regards,</div>
<div>Charles</div>
<div>
<p>########################################################################<br># Parts of my openser.cfg Configuration <br>######################################################################## </p>
<p>loadmodule "acc.so"<br>modparam("acc", "early_media", 0)<br>modparam("acc", "failed_transaction_flag", 24)<br>modparam("acc", "report_ack", 0)<br>modparam("acc", "report_cancels", 0)
<br>modparam("acc", "log_flag", 0)<br>modparam("acc", "log_missed_flag", 0)<br>modparam("acc", "log_level", 2)<br>modparam("acc", "db_flag", 25)
<br>modparam("acc", "db_missed_flag", 0)<br>modparam("acc", "db_table_acc", "acc")<br>modparam("acc", "db_table_missed_calls", "missed_calls")
<br>modparam("acc", "db_url", "mysql://openser:openserrw@localhost<span></span> /openser")<br>modparam("acc", "acc_method_column", "method")<br>modparam("acc", "acc_callid_column", "callid")
<br>modparam("acc", "acc_time_column", "time")<br>modparam("acc", "acc_totag_column", "to_tag")<br>modparam("acc", "acc_from_tag_column", "from_tag")
<br>modparam("acc", "detect_direction", 1)<br>modparam("acc", "acc_sip_code_column", "sip_code")<br>modparam("acc", "acc_sip_reason_column", "sip_reason")
<br>modparam("acc", "multi_leg_info", "src_leg=$avp(i:901);dst_leg=$avp(i:902)")</p>
<p>########################################################################<br># Request route 'main'<br>########################################################################<br>route[0]<br>{<br> xlog("L_INFO", "New request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> force_rport();<br> if(msg:len > max_len)<br> {<br> <br> xlog("L_INFO", "Message too big - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> sl_send_reply("513", "Message Too Big");
<br> exit;<br> }<br> if (!mf_process_maxfwd_header("10"))<br> {<br> <br> xlog("L_INFO", "Too many hops - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> sl_send_reply("483", "Too Many Hops");
<br> exit;<br> }<br> if(!is_method("REGISTER"))<br> {<br> if(nat_uac_test("19"))<br> {<br> record_route(";nat=yes");<br> }<br> else<br> {<br> record_route();<br> }<br> }<br> if(is_method("CANCEL") || is_method("BYE"))
<br> {<br> end_media_session();<br> }<br> if(loose_route())<br> {<br> if(!has_totag())<br> {<br> <br> xlog("L_INFO", "Initial loose-routing rejected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<span></span><br> sl_send_reply("403", "Initial Loose-Routing Rejected");<br> exit;<br> }<br> if(nat_uac_test("19") || search("^Route:.*;nat=yes"))<br> {<br> fix_nated_contact();
<br> if(!search("^Content-Length:[ ]*0")) <br> {<br> setbflag(6);<br> }<br> }<br> if(is_method("BYE"))<br> {<br> setflag(24); # account failed transactions<br> setflag(25); # account successful transactions
<br> }<br> # mark as loose-routed for acc <br> setflag(26);<br> <br> route(11);<br> }<br> if(is_method("REGISTER"))<br> {<br> route(10);<br> }<br> setflag(24); # account failed transactions<br> setflag(25); # account successful transactions
<br> if(is_method("INVITE")) <br> {<br> route(12);<br> }<br> if(is_method("CANCEL") || is_method("ACK"))<br> {<br> route(16);<br> }<br> <br> route(17);<br>}</p>
<p>########################################################################<br># Request route 'clear-usr-preferences-caller'<br>########################################################################<br>route[1]
<br>{<br> xlog("L_INFO", "Clear caller preferences - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> avp_delete("$avp(s:caller_cli)/g");<br> avp_delete("$avp(s:clir)/g");<br> <br>
}</p>
<p>########################################################################<br># Request route 'clear-usr-preferences-callee'<br>########################################################################<br>route[2]
<br>{<br> xlog("L_INFO", "Clear callee preferences - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> avp_delete("$avp(s:callee_fr_inv_timer)/g");<br> avp_delete("$avp(s:cfu)/g");<br>
<br>}</p>
<p>########################################################################<br># Request route 'usr-preferences-caller'<br>############################################################<span></span> ############<br>
route[3]<br>{ <br> route(1);<br> xlog("L_INFO", "Load caller preferences for uuid '$avp(s:caller_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> # load caller avps<br> avp_db_load("$avp(s:caller_uuid)", "*");
<br> avp_copy("$avp(s:cli)", "$avp(s:caller_cli)/d");<br> if(is_avp_set("$avp(s:clir)/n") && avp_check("$avp(s:clir)", "eq/i:1"))<br> {<br> # mark for anonymization
<br> setflag(28);<br> }<br> <br>}</p>
<p>########################################################################<br># Request route 'usr-preferences-callee'<br>########################################################################<br>route[4]<br>{
<br> xlog("L_INFO", "Load callee preferences for uuid '$avp(s:callee_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> # load callee avps<br> avp_db_load("$avp(s:callee_uuid)", "*");
<br> if(is_avp_set("$avp(s:cfu)/s"))<br> {<br> <br> xlog("L_INFO", "Call-forward-unconditional to '$avp(s:cfu)' found - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> route(5);<br>
route(6);<br> avp_delete("$avp(s:caller_uuid)/g");<br> avp_copy("$avp(s:callee_uuid)", "$avp(s:caller_uuid)/d");<br> avp_pushto("$ru", "$avp(s:cfu)");<br> <br> route(3);
<br> route(13);<br> exit;<br> }<br> if(is_avp_set("$avp(s:ringtimeout)/n"))<br> {<br> <br> xlog("L_INFO", "Setting ring timeout to $avp(s:ringtimeout) secs - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> avp_copy("$avp(s:ringtimeout)", "$avp(s:callee_fr_inv_timer)/d");<br> }<br> <br>}</p>
<p>########################################################################<br># Request route 'acc-caller'<br>############################################################<span></span> ############<br>route[5]<br>
{<br> xlog("L_INFO", "Setting acc source-leg for uuid '$avp(s:caller_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n"); <br> avp_printf("$avp(i:901)", "$avp(s:caller_uuid)|$fU|$fd");
<br> <br>}</p>
<p>########################################################################<br># Request route 'acc-callee'<br>########################################################################<br>route[6]<br>{<br> xlog("L_INFO", "Setting acc destination-leg for uuid '$avp(s:callee_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> avp_printf("$avp(i:902)", "$avp(s:callee_uuid)|$rU|$rd");<br> <br>}</p>
<p>########################################################################<br># Request route 'acc-failure'<br>########################################################################<br>route[7]<br>{<br> xlog("L_INFO", "Accounting failed request for uuid '$avp(s:caller_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> route(5);<br> route(6);<br> resetflag(24);<br> acc_db_request("404", "acc");<br> <br>}</p>
<p>########################################################################<br># Request route 'clir'<br>########################################################################<br>route[8]<br>{<br> if(isflagset(28) && !isflagset(27))
<br> {<br> setflag(27);<br> <br> xlog("L_INFO", "Anonymize caller - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> uac_replace_from("Anonymous","<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:sip:anonymous@anonymous.invalid" target="_blank">
sip:anonymous@anonymous.invalid</a>");<br> if(is_present_hf("Privacy"))<br> {<br> remove_hf("Privacy");<br> }<br> append_hf("Privacy: id\r\n");<br> }<br> <br>}</p><span></span>
<p>########################################################################<br># Request route 'stop-media-proxy'<br>########################################################################<br>route[9]<br>{<br> if(isflagset(22))
<br> {<br> end_media_session();<br> }<br> <br>}</p>
<p>########################################################################<br># Request route 'base-route-register'<br>########################################################################<br>route[10]<br>{<br>
sl_send_reply("100", "Trying");<br> if(!www_authorize("", "subscriber")) <br> {<br> <br> xlog("L_INFO", "Register authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> www_challenge("", "0");<br> exit;<br> }<br> if(!check_to()) <br> {<br> <br> xlog("L_INFO", "Spoofed To-URI detected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> sl_send_reply("403", "Spoofed To-URI Detected");
<br> exit;<br> }<br> consume_credentials();<br> if(!search("^Contact:[ ]*\*") && nat_uac_test("19")) <br> {<br> fix_nated_register();<br> setbflag(6);<br> }<br> if(!save("location"))
<br> {<br> <br> xlog("L_ERR", "Saving contact failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> sl_reply_error();<br> exit;<br> }<br> <br> xlog("L_INFO", "Registration successful - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> exit;<br> <br>}</p>
<p>########################################################################<br># Request route 'base-outbound'<br>########################################################################<br>route[11]<br>{<br> if(is_present_hf("P-Asserted-Identity"))
<br> {<br> remove_hf("P-Asserted-Identity");<br> }<br> if(is_present_hf("Remote-Party-ID"))<br> {<br> remove_hf("Remote-Party-ID");<span></span> <br> }<br> if(is_avp_set("$avp(s:caller_cli)/s"))
<br> {<br> if(!isflagset(28))<br> {<br> <br> xlog("L_INFO", "Set caller CLI '$avp(s:caller_cli)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> append_hf("P-Asserted-Identity: <$avp(s:caller_cli)>\r\n");
<br> }<br> }<br> <br> route(8);<br> if(isbflagset(6) && !isflagset(22))<br> {<br> setflag(22);<br> fix_nated_contact();<br> use_media_proxy();<br> <br> t_on_reply("2");<br> }<br> else<br> {<br> <br>
t_on_reply("1");<br> }<br> <br> xlog("L_INFO", "Request leaving server - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> if(!isflagset(21))<br> {<br> <br> t_on_failure("2");<br>
if(!isflagset(26))<br> {<br> <br> route(5);<br> route(6);<br> }<br> }<br> if(!t_relay())<br> {<br> sl_reply_error();<br> if(is_method("INVITE") && isbflagset(6))<br> {<br> end_media_session();
<br> }<br> }<br> exit;<br> <br>}</p>
<p>########################################################################<br># Request route 'base-route-invite'<br>########################################################################<br>route[12]<br>{<br>
sl_send_reply("100", "Trying");<br> if(from_gw())<br> {<br> $avp(s:caller_uuid) = "0";<br> <br> xlog("L_INFO", "Call from PSTN' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> setflag(23);<br> }<br> else<br> {<br> if(allow_trusted())<br> {<br> if(is_avp_set("$avp(s:peer_uuid)/s"))<br> {<br> # use tag-column from trusted-table as uuid for this caller<br> avp_copy("$avp(s:peer_uuid)", "$avp(s:caller_uuid)/d");
<br> }<br> else<br> {<br> # if no uuid is set, use "0" as default uuid<br> $avp(s:caller_uuid) = "0";<br> }<br> <br> xlog("L_INFO", "Call from trusted peer with uuid '$avp(s:caller_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<span></span><br> if(!is_domain_local("$rd"))<br> {<br> <br> xlog("L_INFO", "Rejecting peering attempt with non-local request domain - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> sl_send_reply("403", "Relaying Denied"); <br> exit;<br> }<br> setflag(23);<br> }<br> else<br> {<br> if(!proxy_authorize("", "subscriber")) <br> {<br> <br> xlog("L_INFO", "Proxy authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> proxy_challenge("", "0");<br> exit;<br> }<br> if(!check_from()) <br> {<br> <br> xlog("L_INFO", "Spoofed From-URI detected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> sl_send_reply("403", "Spoofed From-URI Detected");<br> exit;<br> }<br> consume_credentials();<br> }<br> }</p>
<p> route(3);<br> if(nat_uac_test("19")) <br> {<br> setbflag(6);<br> }<br> <br> route(13);<br>}</p>
<p>########################################################################<br># Request route 'invite-find-callee'<br>########################################################################<br>route[13]<br>{<br>
if(lookup("aliases"))<br> {<br> <br> xlog("L_INFO", "Callee was aliased - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> }<br> <br> route(2);<br> if(!is_domain_local("$rd"))<br>
{<br> setflag(20);<br> $avp(s:callee_uuid) = "0";<br> <br> route(15);<br> }<br> avp_delete("$avp(s:callee_uuid)");<br> avp_db_query("select uuid from subscriber where username = '$rU'", "$avp(s:callee_uuid)");
<br> if(is_avp_set("$avp(s:callee_uuid)/s"))<br> {<br> <br> xlog("L_INFO", "Callee is local, uuid='$avp(s:callee_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> route(14);
<br> }<br> else<br> {<br> $avp(s:callee_uuid) = "0";<span></span> <br> <br> xlog("L_INFO", "Callee is not local - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> route(15);<br> }<br> exit;
<br>}</p>
<p>########################################################################<br># Request route 'invite-to-internal'<br>########################################################################<br>route[14]<br>{<br>
route(4);<br> if(!lookup("location")) <br> {<br> xlog("L_INFO", "Local user offline - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> route(7);<br> sl_send_reply("404", "User Offline");
<br> }<br> else<br> {<br> xlog("L_INFO", "Local user online - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> route(11);<br> }<br> exit;<br>}</p>
<p>########################################################################<br># Request route 'invite-to-external'<br>########################################################################<br>route[15]<br>{<br>
if(isflagset(20))<br> {<br> xlog("L_INFO", "Call to foreign domain - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> route(11);<br> exit;<br> }<br> if(!isflagset(23))<br> {<br> # don't allow calls relaying from PSTN to PSTN, if not explicitely forwarded
<br> if(uri =~ "^sip:0[0-9]+@")<br> {<br> # only route numeric users to PSTN<br> xlog("L_INFO", "Loading PSTN gateways - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> if(!load_gws())
<br> {<br> xlog("L_ERR", "Error loading PSTN gateways - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> sl_send_reply("503", "PSTN Termination Currently Unavailable");<br>
exit;<br> }<br> if(!next_gw())<br> { <br> xlog("L_ERR", "No PSTN gateways available - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> sl_send_reply("503", "PSTN Termination Currently Unavailable");
<span></span><br> exit;<br> }<br> setflag(21);<br> t_on_failure("1");<br> route(11);<br> }<br> }<br> xlog("L_INFO", "Call to unknown user - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> route(7);<br> sl_send_reply("404", "User Not Found");<br> exit;<br>}</p>
<p>########################################################################<br># Request route 'base-route-local'<br>########################################################################<br>route[16]<br>{<br> t_on_reply("1");
<br> if(t_check_trans())<br> {<br> xlog("L_INFO", "Request leaving server - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> if(!t_relay())<br> {<br> sl_reply_error();<br> }<br> }<br> else <br> {
<br> xlog("L_INFO", "Dropping mis-routed request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> }<br> exit; <br>}</p>
<p>########################################################################<br># Request route 'base-route-generic'<br>########################################################################<br>route[17]<br>{<br>
xlog("L_INFO", "Method not supported - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");<br> sl_send_reply("501", "Method Not Supported Here");<br> exit;<br> <br>}</p>
<p># Request route 'base-filter-failover'<br>route[18]<br>{<br> if(!t_check_status("408|500|503"))<br> {<br> <br> xlog("L_INFO", "No failover routing needed for this response code - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
<br> route(9);<br> exit; <br> }<br> <br>}</p>
<p># Reply route 'base-standard-reply'<span></span> <br>onreply_route[1] <br>{<br> xlog("L_INFO", "Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n");<br> exit;<br> <br>}</p>
<p># Reply route 'base-nat-reply'<br>onreply_route[2]<br>{<br> xlog("L_INFO", "NAT-Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n");<br> if(nat_uac_test("1"))<br> {<br> fix_nated_contact();
<br> }<br> if(isbflagset(6) && status=~"(180)|(183)|2[0-9][0-9]") <br> {<br> if(!search("^Content-Length:[ ]*0"))<br> {<br> use_media_proxy();<br> }<br> }<br> exit;<br>}</p></div><br clear="all">
<br>-- <br><br>Best Regards<br><span class="sg">Charles </span><br clear="all">