Cutting the call off is not that big of deal, these are whole sale partners
and if they go a little over it is not a concern.
-----Original Message-----
From: serusers-bounces(a)iptel.org [mailto:serusers-bounces@lists.iptel.org]On
Behalf Of Jan Janak
Sent: Wednesday, November 26, 2003 11:33 AM
To: Gregory D. Burns
Cc: serusers(a)lists.iptel.org
Subject: Re: [Serusers] Ser CDRs
Hello,
the scenario like this can't be done just with SER, you need at least a
B2BUA to be able to terminate the call when the user runs out of credit.
We have a prepaid card application built on top of ser, but it is not
free, a commercial license is needed.
Jan.
On 26-11 08:28, Gregory D. Burns wrote:
Guys,
I?m new with ser, but it seem great so far. The customer I?m working with
want to get reliable CDR?s from his SER SIP Server. He also has pre-paid
customers on it so it need to check to see if they have monies to make the
call, and when the call is done, it need to calculate and deduct the cost
of
the call from their balance.
I have been using exec_msg command to try and do this, but I been having a
hard time getting it to work right because I get more then one invite?s
and
ack?s. Also sometime they miss-dial and I only get
Invite?s.
So I guess my is, are exec_msg?s the right way to go? Is anyone else doing
the same thing, if so could you share you config with me?
-Greg
Voipin.com
#
# $Id: ser.cfg,v 1.21.2.1 2003/07/30 16:46:18 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
debug=4 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
debug=7
fork=yes
log_stderror=yes
*/
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
#port=5060
children=4
fifo="/tmp/ser_fifo"
mhomed=yes
# ------------------ module loading ----------------------------------
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/exec.so"
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/uri.so"
#loadmodule "/usr/local/lib/ser/modules/group.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc","db_mode",2)
modparam("usrloc", "timer_interval", 30)
modparam("usrloc","db_url",
"sql://ser:dc74uc@localhost/Tigris")
# -- auth params --
modparam("auth_db", "db_url",
"sql://ser:dc74uc@localhost/Tigris")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# ------------------------- request routing logic -------------------
# main routing logic
route{
/* ********* ROUTINE CHECKS ********************************** */
# Take take of Max hops
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
break;
};
# Too big for a SIP msg.
if (len_gt( max_len )) {
sl_send_reply("513", "Message too big");
break;
};
# Authorize
if (method=="REGISTER")
{
if (!www_authorize("64.81.40.173", "subscriber")) {
www_challenge("64.81.40.173", "0");
log(1, "BAD REGISTER\n");
break;
};
save("location");
break;
};
exec_msg('`/root/bin/logcdr.pl`');
loose_route();
if (method=="INVITE")
{
record_route();
if (!exec_msg('`/root/bin/test.pl`'))
{
t_reply("404", "Low Funds");
break;
};
};
if (uri =~"^sip:[0-1]") {
if (uri =~"^sip:1666") {
rewritehostport("216.91.9.42:5060");
if (!t_relay()) { sl_reply_error(); };
break;
};
if (uri =~"^sip:1") {
rewritehostport("128.121.29.99:5060");
if (!t_relay()) { sl_reply_error(); };
break;
};
if (uri =~"^sip:011") {
rewritehostport("128.121.29.99:5060");
if (!t_relay()) { sl_reply_error(); };
break;
};
if (uri =~"^sip:00") {
strip(2);
prefix("011");
rewritehostport("128.121.29.99:5060");
if (!t_relay()) { sl_reply_error(); };
break;
};
} else {
if (!lookup("location")) {
sl_send_reply("404", "User Not Found");
log("SER: Dest User Not in location table.\n");
break;
};
if (!t_relay()) { sl_reply_error(); };
break;
};
}
_______________________________________________
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