<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
Dear Experts,<br>
I have been trying to configure IMC for quite
some time now..when ti try to create the chatroom (using my xlite
phone), using the command #create q, i get the following error.<br>
<b>ERROR:imc:imc_handle_message: room [q] does not exist!<br>
Sep 17 10:25:36 [2562] ERROR:imc:imc_manager: failed to handle 'message'<br>
</b><br>
Iam posting my cfg below.. Your sujjestion would be of immense help to
me..<br>
<br>
<br>
#<br>
# $Id: kamailio.cfg 5881 2009-06-22 09:13:04Z henningw $<br>
#<br>
# Kamailio (OpenSER) SIP Server - basic configuration script<br>
# - web: <a class="moz-txt-link-freetext" href="http://www.kamailio.org">http://www.kamailio.org</a><br>
# - svn: <a class="moz-txt-link-freetext" href="http://openser.svn.sourceforge.net/viewvc/openser/">http://openser.svn.sourceforge.net/viewvc/openser/</a><br>
#<br>
# Direct your questions about this file to:
<a class="moz-txt-link-rfc2396E" href="mailto:users@lists.kamailio.org"><users@lists.kamailio.org></a><br>
<br>
<br>
debug=3<br>
log_stderror=yes<br>
log_facility=LOG_LOCAL0<br>
<br>
fork=yes<br>
children=4<br>
<br>
<br>
<br>
port=5060<br>
<br>
/* uncomment and configure the following line if you want Kamailio to <br>
bind on a specific interface/port/proto (default bind on all
available) */<br>
#listen=udp:192.168.1.2:5060<br>
<br>
<br>
####### Modules Section ########<br>
<br>
#set module path<br>
mpath="/usr/local/lib/kamailio/modules/"<br>
<br>
/* uncomment next line for MySQL DB support */<br>
loadmodule "db_mysql.so"<br>
loadmodule "mi_fifo.so"<br>
loadmodule "sl.so"<br>
loadmodule "tm.so"<br>
loadmodule "rr.so"<br>
loadmodule "pv.so"<br>
loadmodule "maxfwd.so"<br>
loadmodule "usrloc.so"<br>
loadmodule "registrar.so"<br>
loadmodule "textops.so"<br>
loadmodule "uri_db.so"<br>
loadmodule "siputils.so"<br>
loadmodule "xlog.so"<br>
loadmodule "acc.so"<br>
loadmodule "imc.so"<br>
<br>
<br>
/* uncomment next lines for MySQL based authentication support <br>
NOTE: a DB (like db_mysql) module must be also loaded */<br>
loadmodule "auth.so"<br>
loadmodule "auth_db.so"<br>
/* uncomment next line for aliases support<br>
NOTE: a DB (like db_mysql) module must be also loaded */<br>
#loadmodule "alias_db.so"<br>
/* uncomment next line for multi-domain support<br>
NOTE: a DB (like db_mysql) module must be also loaded<br>
NOTE: be sure and enable multi-domain support in all used modules<br>
(see "multi-module params" section ) */<br>
#loadmodule "domain.so"<br>
/* uncomment the next two lines for presence server support<br>
NOTE: a DB (like db_mysql) module must be also loaded */<br>
#p#loadmodule "presence.so"<br>
#p#loadmodule "presence_xml.so"<br>
<br>
#n#loadmodule "nathelper.so"<br>
<br>
# ----------------- setting module-specific parameters ---------------<br>
<br>
<br>
# ----- mi_fifo params -----<br>
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")<br>
<br>
<br>
# ----- rr params -----<br>
# add value to ;lr param to cope with most of the UAs<br>
modparam("rr", "enable_full_lr", 1)<br>
# do not append from tag to the RR (no need for this script)<br>
modparam("rr", "append_fromtag", 0)<br>
<br>
<br>
# ----- rr params -----<br>
modparam("registrar", "method_filtering", 1)<br>
/* uncomment the next line to disable parallel forking via location */<br>
# modparam("registrar", "append_branches", 0)<br>
/* uncomment the next line not to allow more than 10 contacts per AOR */<br>
#modparam("registrar", "max_contacts", 10)<br>
<br>
<br>
# ----- uri_db params -----<br>
/* by default we disable the DB support in the module as we do not need
it<br>
in this configuration */<br>
modparam("uri_db", "use_uri_table", 0)<br>
modparam("uri_db", "db_url", "")<br>
<br>
<br>
# ----- acc params -----<br>
/* what sepcial events should be accounted ? */<br>
modparam("acc", "early_media", 1)<br>
modparam("acc", "report_ack", 1)<br>
modparam("acc", "report_cancels", 1)<br>
/* by default ww do not adjust the direct of the sequential requests.<br>
if you enable this parameter, be sure the enable "append_fromtag"<br>
in "rr" module */<br>
modparam("acc", "detect_direction", 0)<br>
/* account triggers (flags) */<br>
modparam("acc", "failed_transaction_flag", 3)<br>
modparam("acc", "log_flag", 1)<br>
modparam("acc", "log_missed_flag", 2)<br>
modparam("acc", "log_extra", <br>
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
<br>
<br>
<br>
<br>
# ----- auth_db params -----<br>
/* uncomment the following lines if you want to enable the DB based<br>
authentication */<br>
modparam("auth_db", "calculate_ha1", yes)<br>
modparam("auth_db", "password_column", "password")<br>
modparam("auth_db", "db_url",<br>
"mysql://openser:openserrw@localhost/openser")<br>
modparam("auth_db", "load_credentials", "")<br>
<br>
<br>
<br>
#-------tm params-----<br>
modparam("tm", "fr_timer", 10 )<br>
modparam("tm", "fr_inv_timer", 15 )<br>
modparam("tm", "wt_timer", 10 )<br>
<br>
<br>
#-------imc params-----<br>
modparam("imc", "db_url", "mysql://openser:openserrw@localhost/openser")<br>
modparam("imc", "hash_size", 8)<br>
modparam("imc", "imc_cmd_start_char", "#")<br>
<br>
<br>
<br>
<br>
#n#modparam("usrloc", "nat_bflag", 6)<br>
<br>
####### Routing Logic ########<br>
<br>
<br>
# main request routing logic<br>
<br>
route{<br>
<br>
if (!mf_process_maxfwd_header("10")) {<br>
sl_send_reply("483","Too Many Hops");<br>
exit;<br>
}<br>
<br>
# NAT detection<br>
route(4);<br>
<br>
if (has_totag()) {<br>
# sequential request withing a dialog should<br>
# take the path determined by record-routing<br>
if (loose_route()) {<br>
if (is_method("BYE")) {<br>
setflag(1); # do accounting ...<br>
setflag(3); # ... even if the transaction fails<br>
}<br>
route(1);<br>
} else {<br>
if (is_method("SUBSCRIBE") && uri == myself) {<br>
# in-dialog subscribe requests<br>
route(2);<br>
exit;<br>
}<br>
if ( is_method("ACK") ) {<br>
if ( t_check_trans() ) {<br>
# non loose-route, but stateful ACK; must be an ACK
after a 487 or e.g. 404 from upstream server<br>
t_relay();<br>
exit;<br>
} else {<br>
# ACK without matching transaction ... ignore and
discard.\n");<br>
exit;<br>
}<br>
}<br>
sl_send_reply("404","Not here");<br>
}<br>
exit;<br>
}<br>
<br>
#initial requests<br>
<br>
# CANCEL processing<br>
if (is_method("CANCEL"))<br>
{<br>
if (t_check_trans())<br>
t_relay();<br>
exit;<br>
}<br>
<br>
t_check_trans();<br>
<br>
# authentication<br>
route(3);<br>
<br>
# record routing<br>
if (!is_method("REGISTER|MESSAGE"))<br>
record_route();<br>
<br>
# account only INVITEs<br>
if (is_method("INVITE")) {<br>
setflag(1); # do accounting<br>
}<br>
if (!uri==myself)<br>
/* replace with following line if multi-domain support is used */<br>
##if (!is_uri_host_local())<br>
{<br>
append_hf("P-hint: outbound\r\n"); <br>
# if you have some interdomain connections via TLS<br>
##if($rd=="tls_domain1.net") {<br>
## t_relay("tls:domain1.net");<br>
## exit;<br>
##} else if($rd=="tls_domain2.net") {<br>
## t_relay("tls:domain2.net");<br>
## exit;<br>
##}<br>
route(1);<br>
}<br>
<br>
# requests for my domain<br>
<br>
if( is_method("PUBLISH|SUBSCRIBE"))<br>
route(2);<br>
<br>
if (is_method("REGISTER"))<br>
{<br>
if (!save("location"))<br>
sl_reply_error();<br>
<br>
exit;<br>
}<br>
<br>
<br>
<br>
#if(uri=~<a class="moz-txt-link-rfc2396E" href="sip:q.*@">"sip:q.*@"</a>)<br>
if(uri=~<a class="moz-txt-link-rfc2396E" href="sip:q@192.168.64.75">"sip:q@192.168.64.75"</a>)<br>
{<br>
# IMC - message<br>
xdbg("script: message from [$fu] r-uri [$ru] msg [$rb]\n");<br>
if(is_method("MESSAGE"))<br>
{<br>
log("MESSAGE received -> processing with imc\n");<br>
sl_send_reply("200", "ok");<br>
<br>
imc_manager(); <br>
<br>
exit;<br>
} else {<br>
sl_send_reply("404", "not found");<br>
exit;<br>
};<br>
} else {<br>
xdbg("script: message not for room, from [$fu] r-uri [$ru]
msg [$rb]\n");<br>
if(!lookup("location"))<br>
{<br>
sl_send_reply("404", "not found");<br>
exit;<br>
}<br>
t_relay();<br>
#sl_send_reply("200", "ok");<br>
exit();<br>
};<br>
<br>
<br>
<br>
if ($rU==NULL) {<br>
# request with no Username in RURI<br>
sl_send_reply("484","Address Incomplete");<br>
exit;<br>
}<br>
<br>
# apply DB based aliases (uncomment to enable)<br>
##alias_db_lookup("dbaliases");<br>
<br>
if (!lookup("location")) {<br>
switch ($retcode) {<br>
case -1:<br>
case -3:<br>
t_newtran();<br>
t_reply("404", "Not Found");<br>
exit;<br>
case -2:<br>
sl_send_reply("405", "Method Not Allowed");<br>
exit;<br>
}<br>
}<br>
<br>
# when routing via usrloc, log the missed calls also<br>
setflag(2);<br>
<br>
route(1);<br>
}<br>
<br>
<br>
route[1] {<br>
<br>
<br>
/* example how to enable some additional event routes */<br>
if (is_method("INVITE")) {<br>
#t_on_branch("1");<br>
t_on_reply("1");<br>
t_on_failure("1");<br>
}<br>
<br>
if (!t_relay()) {<br>
sl_reply_error();<br>
}<br>
exit;<br>
}<br>
<br>
<br>
# Presence route<br>
/* uncomment the whole following route for enabling presence server */<br>
route[2]<br>
{<br>
<br>
<br>
# if presence enabled, this part will not be executed<br>
if (is_method("PUBLISH") || $rU==null)<br>
{<br>
sl_send_reply("404", "Not here");<br>
exit;<br>
}<br>
return;<br>
}<br>
<br>
# Authentication route<br>
/* uncomment the whole following route for enabling authentication */<br>
route[3] {<br>
if (is_method("REGISTER"))<br>
{<br>
# authenticate the REGISTER requests (uncomment to enable auth)<br>
if (!www_authorize("", "subscriber"))<br>
{<br>
www_challenge("", "0");<br>
exit;<br>
}<br>
<br>
if ($au!=$tU) <br>
{<br>
sl_send_reply("403","Forbidden auth ID");<br>
exit;<br>
}<br>
} else {<br>
# authenticate if from local subscriber (uncomment to enable
auth)<br>
if (from_uri==myself)<br>
{<br>
if (!proxy_authorize("", "subscriber")) {<br>
proxy_challenge("", "0");<br>
exit;<br>
}<br>
if (is_method("PUBLISH"))<br>
{<br>
if ($au!=$tU) {<br>
sl_send_reply("403","Forbidden auth ID");<br>
exit;<br>
}<br>
} else {<br>
if ($au!=$fU) {<br>
sl_send_reply("403","Forbidden auth ID");<br>
exit;<br>
}<br>
}<br>
<br>
consume_credentials();<br>
# caller authenticated<br>
}<br>
}<br>
return;<br>
}<br>
<br>
# Caller NAT detection route<br>
/* uncomment the whole following route for enabling Caller NAT
Detection */<br>
route[4]{<br>
<br>
return;<br>
}<br>
<br>
# RTPProxy control<br>
/* uncomment the whole following route for enabling RTPProxy Control */<br>
route[5] {<br>
<br>
return;<br>
}<br>
<br>
branch_route[1] {<br>
xdbg("new branch at $ru\n");<br>
}<br>
<br>
<br>
onreply_route[1] {<br>
xdbg("incoming reply\n");<br>
<br>
<br>
}<br>
<br>
<br>
failure_route[1] {<br>
<br>
<br>
if (t_was_cancelled()) {<br>
exit;<br>
}<br>
<br>
<br>
}<br>
<br>
<br>
<div class="moz-signature">-<br>
<font color="Blue" face="Trebuchet MS" size="2"> Regards,<br>
Rajesh </font>
</div>
</body>
</html>