Note, you may be legally required to log all calls if you are selling this
commercially rather than just a corporate PBX type of thing.
-----Original Message-----
From: serusers-bounces(a)iptel.org [mailto:serusers-bounces@lists.iptel.org]On
Behalf Of Ozan Blotter
Sent: Tuesday, July 12, 2005 10:23 AM
To: Iqbal
Cc: serusers(a)lists.iptel.org
Subject: Re: [Serusers] Broken Calls not written to Database
Dear Iqbal,
Thanks for your help and btw i've found the way how to prevent database not
to write 833 to 833 calls which are free and has nothing to do with, so my
database not grows with them. I think the broken calls can be set in MERA
VoIP which is used as PSTN Gateway by our Carrier.
Thanks Again,
Ozan
# -----------------------------------------------------------------
# Record Route Section and Acc section
# -----------------------------------------------------------------
if (method=="INVITE" && client_nat_test("3")) {
record_route_preset("212.XXX.104.XXX:5060;nat=yes");
} else if (method!="REGISTER") {
if!(uri=~"^sip:833[0-9]*@") {
record_route();
setflag(1);
}
};
# -----------------------------------------------------------------
----- Original Message -----
From: "Iqbal" <iqbal(a)gigo.co.uk>
To: "Ozan Blotter" <cosmocid(a)ispro.net.tr>
Cc: <serusers(a)lists.iptel.org>
Sent: Tuesday, July 12, 2005 8:06 PM
Subject: Re: [Serusers] Broken Calls not written to Database
oh completely forgot to answer the question, if the
user unplugs, then who
will send the BYE, only the pstn gateway can, and most can (someone
confirm) send a BYE if they receive nothing for a transaction for 30secs
or so, hence ur billing might be out for 30secs.
However what i do for a "broken" call, is to complete it when I do my
billing, by how much, well thats upto what mood I am in :-), but usually
round it up to the next minute. This is not accurate, because the user may
bypass this and not send a BYE but might have carried on his
call...soooooo get the CDR from the gateway, and for open calls, I am
trying to match the cdr data with that in ser, which aint easy sinc ethe
cdr have no username of them.
Again these are just methods to reduce/remove the inaccuracies, it wont be
100% but over time it will get close
Iqbal
Ozan Blotter wrote:
> Dear List,
> I'm making a call to PSTN, it's okay i can talk with the other party via
> ATA, but suddenly i unplug power from it, and in accounting module it
> does not write line with BYE message so i cannot understand whether the
> call is finished or not. only INVITE and ACK are written, no BYE :(
> This may be a security hole for customers, because they talk for a long
> time and they may unplug their units or cut power so it does not tell SER
> it's over. How i can prevent this, also what i need to add as a line for
> telling ACC module not to write calls from 833 to 833 into database,
> which are free SIP2SIP calls ?
> Btw, a Postpaid Billing System is on the way for OpenSER built in PHP,
> later i will need OpenSER group's help to place it onto hosting site.
> Shortly it will have features:
> * Nothing extra from package, default MySql Database which comes with
> OpenSER Release is being used,
> * All routing is done via OpenSER's ser.cfg ,
> * Initial Rate, Initial Time, Increment Rate, Increment Time will be user
> variable ,
> * Account Creation/Deletion done in PHP ,
> * Invoice Generation and CDR will include many variables ,
> * Rating will be in PHP,
> * And everything is totaly free :)
> If you have ideas and/or suggestion please write back to me so i can
> work for it too.
> Reqs: OpenSER & PHP & MySql & Apache
> Thanks,
> Ozan
>
> debug=3
> fork=yes
> log_stderror=no
> listen=212.XXX.104.XXX
> port=5060
> children=4
> alias=212.XXX.104.XXX
> dns=no
> rev_dns=no
> fifo="/tmp/openser_fifo"
> fifo_db_url="mysql://openser:openserrw@localhost/openser"
> loadmodule "/usr/local/lib/openser/modules/mysql.so"
> loadmodule "/usr/local/lib/openser/modules/sl.so"
> loadmodule "/usr/local/lib/openser/modules/tm.so"
> loadmodule "/usr/local/lib/openser/modules/rr.so"
> loadmodule "/usr/local/lib/openser/modules/maxfwd.so"
> loadmodule "/usr/local/lib/openser/modules/usrloc.so"
> loadmodule "/usr/local/lib/openser/modules/registrar.so"
> loadmodule "/usr/local/lib/openser/modules/auth.so"
> loadmodule "/usr/local/lib/openser/modules/auth_db.so"
> loadmodule "/usr/local/lib/openser/modules/uri.so"
> loadmodule "/usr/local/lib/openser/modules/uri_db.so"
> loadmodule "/usr/local/lib/openser/modules/mediaproxy.so"
> loadmodule "/usr/local/lib/openser/modules/nathelper.so"
> loadmodule "/usr/local/lib/openser/modules/textops.so"
> loadmodule "/usr/local/lib/openser/modules/domain.so"
> loadmodule "/usr/local/lib/openser/modules/acc.so"
> #modparam("auth_db|uri_db|usrloc", "db_url",
> "mysql://ser:heslo@localhost/ser")
> modparam("auth_db", "calculate_ha1", 1)
> modparam("auth_db", "password_column", "password")
> modparam("auth_db", "use_domain", 1)
> modparam("domain", "db_mode", 1)
> modparam("nathelper", "rtpproxy_disable", 1)
> modparam("nathelper", "natping_interval", 0)
> modparam("mediaproxy","natping_interval", 30)
> modparam("mediaproxy","mediaproxy_socket",
"/var/run/mediaproxy.sock")
>
modparam("mediaproxy","sip_asymmetrics","/usr/local/etc/openser/sip-asymmetr
ic-clients")
>
modparam("mediaproxy","rtp_asymmetrics","/usr/local/etc/openser/rtp-asymmetr
ic-clients")
>> modparam("usrloc", "db_mode", 2)
>> modparam("usrloc", "use_domain", 1)
>> modparam("registrar", "default_expires", 60)
>> modparam("registrar", "min_expires", 30)
>> modparam("registrar", "nat_flag", 6)
>> modparam("registrar", "use_domain", 1)
>> modparam("rr", "enable_full_lr", 1)
>> modparam("acc", "db_url",
"mysql://openser:openserrw@localhost/openser")
>> modparam("acc", "log_level", 1)
>> modparam("acc", "log_flag", 1)
>> modparam("acc", "db_flag", 1)
>> route {
>> # -----------------------------------------------------------------
>> # Sanity Check Section
>
#
-----------------------------------------------------------------
>> if (!mf_process_maxfwd_header("10")) {
>> sl_send_reply("483", "Too Many Hops");
>> break;
>> };
>> if (msg:len > max_len) {
>> sl_send_reply("513", "Message Overflow");
>> break;
>> };
>> # -----------------------------------------------------------------
>> # Record Route Section and Acc section
>
#
-----------------------------------------------------------------
>> if (method=="INVITE" && client_nat_test("3"))
{
>> # INSERT YOUR IP ADDRESS HERE
>> record_route_preset("212.XXX.104.XXX:5060;nat=yes");
>> } else if (method!="REGISTER") {
>> record_route();
>> setflag(1);
>> };
>> # -----------------------------------------------------------------
>> # Call Tear Down Section
>
#
-----------------------------------------------------------------
>> if (method=="BYE" || method=="CANCEL") {
>> end_media_session();
>> };
>> # -----------------------------------------------------------------
>> # Loose Route Section
>
#
-----------------------------------------------------------------
>> if (loose_route()) {
>> if (has_totag() && (method=="INVITE" ||
method=="ACK")) {
>> if (client_nat_test("3") || search("^Route:.*;nat=yes")) {
>> setflag(6);
>> use_media_proxy();
>> };
>> };
>> route(1);
>> break;
>> };
>> # -----------------------------------------------------------------
>> # Call Type Processing Section
>
#
-----------------------------------------------------------------
>> if (uri!=myself) {
>> route(1);
>> break;
>> };
>> if (uri==myself) {
>> if (method=="CANCEL") {
>> route(3);
>> break;
>> } else if (method=="INVITE") {
>> route(3);
>> break;
>> } else if (method=="REGISTER") {
>> route(2);
>> break;
>> };
>> lookup("aliases");
>> if (uri!=myself) {
>> route(1);
>> break;
>> };
>> if (!lookup("location")) {
>> sl_send_reply("404", "User Not
Found");
>> break;
>> };
>> };
>> route(1);
>> }
>> route[1] {
>> # -----------------------------------------------------------------
>> # Default Message Handler
>
#
-----------------------------------------------------------------
>> t_on_reply("1");
>> if (!t_relay()) {
>> if (method=="INVITE" || method=="ACK") {
>> end_media_session();
>> };
>> sl_reply_error();
>> };
>> }
>> route[2] {
>> # -----------------------------------------------------------------
>> # REGISTER Message Handler
>
#
----------------------------------------------------------------
>> if (!search("^Contact:\ +\*") &&
client_nat_test("7")) {
>> setflag(6);
>> fix_nated_register();
>> force_rport();
>> };
>> sl_send_reply("100", "Trying");
>> if (!www_authorize("","subscriber")) {
>> www_challenge("","0");
>> break;
>> };
>> if (!check_to()) {
>> sl_send_reply("401", "Unauthorized");
>> break;
>> };
>> consume_credentials();
>> if (!save("location")) {
>> sl_reply_error();
>> };
>> }
>> route[3] {
>> # -----------------------------------------------------------------
>> # CANCEL and INVITE Message Handler
>
#
-----------------------------------------------------------------
>> if (client_nat_test("3")) {
>> setflag(7);
>> force_rport();
>> fix_nated_contact();
>> };
>> lookup("aliases");
>> if (uri!=myself) {
>> route(1);
>> break;
>> };
>> if (uri=~"^sip:0[0-9]*@*") {
>> rewritehost("212.XXX.59.XXX");
>> route(1);
>> break;
>> };
>> if (!lookup("location")) {
>> sl_send_reply("404", "User Not Found");
>> break;
>> };
>> if (method=="CANCEL") {
>> route(1);
>> break;
>> };
>> if (!proxy_authorize("","subscriber")) {
>> proxy_challenge("","0");
>> break;
>> } else if (!check_from()) {
>> sl_send_reply("403", "Use From=ID");
>> break;
>> };
>> consume_credentials();
>> if (isflagset(6) || isflagset(7)) {
>> use_media_proxy();
>> };
>> route(1);
>> }
>> onreply_route[1] {
>> if ((isflagset(6) || isflagset(7)) &&
>> (status=~"(180)|(183)|2[0-9][0-9]")) {
>> if (!search("^Content-Length:\ +0")) {
>> use_media_proxy();
>> };
>> };
>> if (client_nat_test("1")) {
>> fix_nated_contact();
>> };
>> }
>
>>------------------------------------------------------------------------
>
>>_______________________________________________
>>Serusers mailing list
>>serusers(a)lists.iptel.org
>>http://lists.iptel.org/mailman/listinfo/serusers
>
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers