Hi,
Thanks for the response.I realized that http_query can not
resolve the domain.When I use ip address instead of domain name I get no
error.Is there any module other than http_query module that I can use with web
service?
Best Regards
From: davy
Sent: Tuesday, August 12, 2014 5:28 PM
To: Kamailio (SER) - Users Mailing
List
Subject: Re: [SR-Users] Dialog module event_route
problem
why don’t you hook your http_queries up to the relevant SIP packets passing
by?
INVITE -> start
180/183 -> ringing
200 -> pickup
BYE/CANCEL -> end
It’s quite straightforward to get that cleanly in your
configfile, and it give you a massive control over things. (just be aware of
packets arriving twice ;) )
Anyhow, that’s how I typically handle this one. You can always
also combine it with CNXCC, which is great for prepaid! Or do something from
external with dlg.dlg_end to kill specific calls which are going over their
limit.
But, I’m sure others will have even better ideas !
Grtz,
Davy Van De Moere
Op 12-aug.-2014, om 15:00 heeft <betul.cerit@netgsm.com.tr> <betul.cerit@netgsm.com.tr> het
volgende geschreven:
Hello;
I am trying to build a prepaid accounting system. I use
dialog module's
start/end event-route. When even_route[dialog:started]
triggered, a
http_query works for the started call. When
event_route[dialog:end] triggered , a
http_query works for call is ended. When http_query
works in
event_route[dialog:started], i get some CRITICAL ERROR
like
'Aug 12 12:16:09
/usr/local/sbin/kamailio[10151]: CRITICAL: dialog
[dlg_timer.c:205]: update_dlg_timer(): Trying to update a
bogus dlg
tl=0x7f7634d925d8 tl->next=(nil) tl->prev=(nil)'
'Aug 12 12:16:09
/usr/local/sbin/kamailio[10151]: ERROR: dialog
[dlg_handlers.c:1263]: dlg_onroute(): failed to update
dialog lifetime'
Http_query works very well. I can get all call information
on Web
Servers but default_time out or other timeout isn't
working.
After i commented out http_query in
event_route[dialog:started] , it stopped giving
ERROR but i realized that dialog cannot uptade dialog hash
map .I can see all finished call with "kamctl dialog show". After i closed
http_query in even_route[dialog:end] , all problems are
solved.
I think a problem occured between http_query and dialog
event_routes.It
cannot control dialog lifetime.Any idea about this problem
or suggest an alternative way will be appreciated.My configuration is as
follows.
Best Regards
Betül.
#---------------- dialog params -------------
#!ifdef WITH_DIALOG
modparam("dialog", "enable_stats", 1)
modparam("dialog", "hash_size", 8192)
modparam("dialog", "rr_param", "did")
modparam("dialog", "dlg_flag",4)
modparam("dialog", "timeout_avp", "$avp(i:10)")
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "default_timeout", 3600)
modparam("dialog", "detect_spirals", 1)
modparam("dialog", "profiles_with_value", "userid ; opkodu
; useropkodu ")
modparam("dialog", "dlg_extra_hdrs", "Hint: Hell
Yeah\r\n")
modparam("dialog", "send_bye", 1)
#!endif
route[CHCK_DLG]{
xlog("L_INFO","DLG:AVP=>
:>:$avp(i:77):$avp(op_kodu):$avp(i:69) ");
$dlg_ctx(timeout_bye)=1;
$avp(unique_id)=$sruid;
/* Time out suresi i:10 konusabilecegi sure saniye */
$avp(i:10)=0;
$avp(i:10)=(int)$avp(i:77);
#$avp(i:10)=10;
$dlg_ctx(timeout_route)=33;
$dlg_var(uniqueid)=$avp(unique_id);
$dlg_var(userid)=$avp(userid);
$dlg_var(opkodu)=$avp(op_kodu);
set_dlg_profile("userid","$avp(userid)");
set_dlg_profile("opkodu","$avp(op_kodu)");
set_dlg_profile("useropkodu","$avp(userid):$avp(op_kodu)");
if(get_profile_size("useropkodu","$avp(d_user_opkodu)")){
xlog("L_INFO","Userid_Size:$avp(d_user_opkodu) kk :
$avp(userid):$avp(op_kodu) ");
xlog("L_INFO","Userid_Limit:$sht(sayac=>$avp(userid):$avp(op_kodu))");
if(!($sht(sayac=>$avp(userid):$avp(op_kodu))>$avp(d_user_opkodu))){
sl_send_reply("403","Kapasite Asildi.");
exit;
}
}
dlg_manage();
return;
}
event_route[dialog:start]{
xlog("L_ALERT","START:CI:$dlg(callid):u_id:$dlg_var(uniqueid):U_id:$dlg_var(userid)
");
xlog("L_ALERT","START:lifetime:$avp(i:10):opkodu:$dlg_var(opkodu):$avp(aranan)"
);
#!ifdef WITH_UTILS
$var(http_res)=http_query("http://bla.com/somestuff.php?userid=$avp(userid)&aranan=$avp(aranan)&callid=$ci&uniqueid=$dlg_var(uniqueid)&lifetime=$avp(i:10)&opkodu=$dlg_var(opkodu)","$var(result)");
if($var(http_res)=="200"){
json_get_field("$var(result)","sonuc","$var(snc)");
json_get_field("$var(result)","yorum","$var(yorum)");
json_get_field("$var(result)","yorum","$var(debug)");
if($var(snc)!=200){
xlog("L_ERR","START:CI:$ci:Sonuc:$var(snc):Yorum:$var(yorum):Debug:$var(debug)");
}else{
xlog("L_INFO","START:CI:$ci:Sonuc:$var(snc)");
}
}else{
xlog("L_ERR","START:CI:$ci:HTTP_RESULT:$var(http_res)");
}
#!endif
}
event_route[dialog:end]{
xlog("L_ALERT","END
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :");
xlog("L_ALERT","END:CI:$ci:START_TIME:$dlg(start_ts):NOW:$TS");