Hey,
Am 21.12.2011 um 07:03 schrieb sunny_day:
My object: get the dialog-based CDRs
SIP proxy: kamailio-3.2.0
My script:
loadmodule "dialog.so"
......
modparam("dialog","dlg_flag",4)#Must be set to create the dialog
associated to an initial request.
modparam("dialog","db_url","mysql://xxx:xxx@localhost/albert")
modparam("dialog","table_name","dialog")
.......
request_route{
if( is_method("INVITE") && !has_totag())
{
dlg_setflag(4);
dlg_var(start_time)=$TS;
dlg_var(caller)=$fU;
dlg_var(caller)=$tU;
}
dlg_manage();
......
# dispatch destinations to PSTN
route(PSTN);
# user location service
route(LOCATION);
route(RELAY);
}
.........
route[WITHINDLG] {
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
if (is_method("BYE")) {
setflag(FLT_ACC); # do accounting ...
setflag(FLT_ACCFAILED); # ... even if the transaction fails
sql_query("cd", "insert into
cdr(caller,callee,start_time,duration)
values($dlg_var(caller),$dlg_var(callee),$dlg_var(start_time),$DLG_lifetime)",
"rd");
sql_result_free("rd");
}
if (is_method("ACK")) {
route(NATMANAGE); # ACK is forwarded statelessy
}
route(RELAY);
}
........
My issue is :
The dialog records can be wrritten into the dialog table. But , the sql_query
can not executed. So the cdr table will not get the CDRs. I don't know why. Who can
help me ?
This is a simple script for testing.
Any suggestion will be appreciated.
Thank you in advance.
It's very hard to help with any Kamailio error unless you provide the actual error
message. Whatever the issue is with the sqlops module, Kamailio will tell you, so please
tell us.
Until then, I can only speculate what's gone wrong: Did you possibly forget to specify
the sqlcon module parameter? You need to setup the MySQL connection parameters in there.
See
http://sip-router.org/docbook/sip-router/branch/master/modules_k/sqlops/sql…
for sqlcon's documentation and
http://sip-router.org/docbook/sip-router/branch/master/modules_k/sqlops/sql…
for the reference regarding sql_query(). Please note how that part states that "the
result parameter should normally only be omitted when no result is expected (INSERT,
UPDATE, DELETE)" (which is the case in your test script). In consequence, you
won't need to free the result set which could be another source of error.
Finally, please note that the dialog module itself is capable of producing CDRs directly
from the dialog machinery. It's yet lacking support for direct output to a database
(AFAIK), however, so you'd have to post-process the CDR results (which are being
written to file as of now) in order to get them persisted into a database.
For some reason, the CDR documentation I wrote seems to have disappeared from the git
repository. I'll investigate that further and provide you with a link to the
dialog-way-of-creating-CDRs when available (and desired from your side).
HTH,
--Timo