Hi tamas,
Contact me if you need more information. What you can do depend on your billing system.
This is what i have done from OpenSER:
# avpops params modparam("avpops","avp_url","mysql://openser:openserrw@localhost/openser") modparam("avpops", "avp_table", "usr_preferences")
# avp for accounting modparam("avpops","avp_aliases","setup_time=s:setup_time") modparam("avpops","avp_aliases","connect_time=s:connect_time") modparam("avpops","avp_aliases","disconnect_time=s:disconnect_time") modparam("avpops","avp_aliases","remote_address=s:remote_address") modparam("avpops","avp_aliases","valid_call=s:valid_call")
if (!method=="REGISTER") record_route();
# ACCOUNTING if (is_method("INVITE")) { avp_write("$Ts","$avp(setup_time)"); avp_db_store("$ci","$avp(setup_time)");
# invite come from PSTN this call should not be accounted if (src_ip=='PSTNGW') { avp_write("no","$avp(valid_call)"); avp_db_store("$ci","$avp(valid_call)"); } else { # valid call this must accounted avp_write("yes","$avp(valid_call)"); avp_db_store("$ci","$avp(valid_call)"); };
} else if (is_method("ACK")) { avp_write("$Ts","$avp(connect_time)"); avp_db_store("$ci","$avp(connect_time)"); } else if (is_method("BYE")) { avp_write("$Ts","$avp(disconnect_time)"); avp_db_store("$ci","$avp(disconnect_time)");
avp_write("82.215.163.5","$avp(remote_address)"); avp_db_store("$ci","$avp(remote_address)");
};
if (is_method("BYE")) { avp_db_query("select value from usr_preferences where uuid='$ci' and attribute='setup_time'","$avp(setup_time)"); avp_db_query("select value from usr_preferences where uuid='$ci' and attribute='connect_time'","$avp(connect_time)"); avp_db_query("select value from usr_preferences where uuid='$ci' and attribute='disconnect_time'","$avp(disconnect_time)"); avp_db_query("select value from usr_preferences where uuid='$ci' and attribute='valid_call'","$avp(valid_call)");
avp_db_load("$ci","$avp(remote_address)"); avp_print();
# BYE from announcement server or valid call # not account this call if (!src_ip=='ANNSERVER' and avp_check("$avp(valid_call)","eq/yes/g")) { # send radius acct setflag(3); setflag(5); };
};
# clean avps from db if (is_method("BYE|CANCEL")) { avp_db_delete("$ci","$avp(setup_time)"); avp_db_delete("$ci","$avp(connect_time)"); avp_db_delete("$ci","$avp(disconnect_time)"); avp_db_delete("$ci","$avp(remote_address)"); avp_db_delete("$ci","$avp(valid_call)"); };
On Wed, 2006-07-12 at 14:53 +0200, Cseke Tamas wrote:
modparam("acc", "radius_extra", "h323-setup-time=$avp(setup_time); h323-connect-time=$avp(connect_time); h323-disconnect-time=$avp(disconnect_time);
Hello,
I need this time informations for radius accounting, and i must decide to make this avps in openser, or manage this times in radius server (in BSDRadius it's not so difficult...)
I quess it'is not so easy to make this avps in openser, -create timestamp for particular messages (invite, ack, bye) -store the avps in database -and send to radius this attributes on accounting-request
Do you use this method, or is there any better solution?
Thanks any help, Tamas