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