Hi<BR><BR>I'm tryin to configure ser with sems, on a RedHat version 9.
<BR><BR>I'm receiving this errors: <BR><BR>Feb 9 01:36:00 sip
ser[4781]: ERROR: fifo_server: command DB is not available <BR>Feb 9
01:36:00 sip ser[4781]: ERROR: fifo_server:n command must begin with ::
<BR>email_address <BR>Feb 9 01:36:00 sip ser[4781]: ERROR:
fifo_server: command must begin with :: <BR>subscriber <BR>Feb 9
01:36:00 sip ser[4781]: ERROR: fifo_server: command must have at least <BR>3
chars <BR>Feb 9 01:36:00 sip Sems[4816]: Error:
(AmSession.cpp)(startSession)(468): 404 <BR>voicemail: no email address for
user <1002> <BR>Feb 9 01:36:00 sip ser[4781]: ERROR:
fifo_server: command t_reply is not <BR>available <BR>Feb 9 01:36:00
sip ser[4781]: ERROR: fifo_server: command must begin with :: <BR>voicemail:
no email address for user <1002> <BR>Feb 9 01:36:00 sip
ser[4781]: ERROR: fifo_server: command must begin with ::
<BR>000012D07BAA2BC1 <BR>Feb 9 01:36:00 sip ser[4781]: ERROR:
fifo_server: command must have at least <BR>3 chars <BR>Feb 9 01:36:00
sip Sems[4816]: Error: (AmRequest.cpp)(reply)(335): <BR>AmRequestUAS::reply:
500 command 't_reply' not available <BR><BR>Can anyone help me with this,
thank you in advanced. I've attached my ser.cfg <BR>and sems.conf below.
<BR><BR>----- start of ser.cfg ----- <BR><BR># <BR># $Id: ser.cfg,v 1.21.4.1
2003/11/10 15:35:15 andrei Exp $ <BR># <BR># simple quick-start config
script <BR># <BR><BR># ----------- global configuration parameters
------------------------ <BR><BR>#debug=3 #
debug level (cmd line: -dddddddddd) <BR>#fork=yes <BR>#log_stderror=no
# (cmd line: -E) <BR><BR>/* Uncomment these lines
to enter debugging mode <BR>debug=7 <BR>fork=no <BR>log_stderror=yes <BR>*/
<BR><BR>check_via=no # (cmd. line: -v) <BR>dns=no
# (cmd. line: -r) <BR>rev_dns=no #
(cmd. line: -R) <BR>port=5060 <BR>children=4 <BR>listen=192.168.0.2
<BR>alias="sip.nhadzter.com" <BR>alias="nhadzter.com"
<BR>alias="192.168.0.2" <BR>fifo="/tmp/ser_fifo" <BR><BR>#
------------------ module loading ----------------------------------
<BR><BR># Uncomment this if you want to use SQL database <BR>loadmodule
"/usr/local/lib/ser/modules/mysql.so" <BR><BR>loadmodule
"/usr/local/lib/ser/modules/sl.so" <BR>loadmodule
"/usr/local/lib/ser/modules/tm.so" <BR>loadmodule
"/usr/local/lib/ser/modules/rr.so" <BR>loadmodule
"/usr/local/lib/ser/modules/maxfwd.so" <BR>loadmodule
"/usr/local/lib/ser/modules/usrloc.so" <BR>loadmodule
"/usr/local/lib/ser/modules/registrar.so" <BR>loadmodule
"/usr/local/lib/ser/modules/vm.so" <BR><BR># Uncomment this if you want
digest authentication <BR># mysql.so must be loaded ! <BR>loadmodule
"/usr/local/lib/ser/modules/auth.so" <BR>loadmodule
"/usr/local/lib/ser/modules/auth_db.so" <BR><BR># ----------------- setting
module-specific parameters --------------- <BR><BR># -- usrloc params --
<BR><BR>#modparam("usrloc", "db_mode", 0) <BR><BR># Uncomment this if
you want to use SQL database <BR># for persistent storage and comment the
previous line <BR>modparam("usrloc", "db_mode", 2) <BR><BR># -- auth params
-- <BR># Uncomment if you are using auth module <BR>#
<BR>modparam("auth_db", "calculate_ha1", yes) <BR># <BR># If you set
"calculate_ha1" parameter to yes (which true in this config), <BR>#
uncomment also the following parameter) <BR># <BR>modparam("auth_db",
"password_column", "password") <BR><BR># -- rr params -- <BR># add value to
;lr param to make some broken UAs happy <BR>modparam("rr", "enable_full_lr",
1) <BR><BR># ----------------- voicemail parameters ---------------
<BR><BR>#modparam("voicemail",
"db_url","/home/rco/cvs/ser/sip_router/modules/vm/db")
<BR>modparam("voicemail", "db_url", "mysql://ser:heslo@localhost/ser")
<BR>modparam("voicemail", "email_column", "email_address")
<BR>modparam("voicemail", "subscriber_table", "subscriber")
<BR>modparam("voicemail", "user_column", "username")
<BR>modparam("voicemail", "domain_column", "domain") <BR><BR>#
------------------------- request routing logic -------------------
<BR><BR># main routing logic <BR><BR>route{ <BR><BR>
# initial sanity checks -- messages with <BR>
# max_forwards==0, or excessively long requests <BR>
if (!mf_process_maxfwd_header("10")) { <BR>
sl_send_reply("483","Too Many Hops");
<BR> break; <BR>
}; <BR> if ( msg:len >
max_len ) { <BR>
sl_send_reply("513", "Message too big"); <BR>
break; <BR> };
<BR><BR> # we record-route all messages -- to make
sure that <BR> # subsequent messages will go
through our proxy; that's <BR> # particularly good
if upstream and downstream entities <BR> # use
different transport protocol <BR> record_route();
<BR> # loose-route processing <BR>
if (loose_route()) { <BR>
t_relay(); <BR>
break; <BR> }; <BR><BR>
# if the request is for other domain use UsrLoc <BR>
# (in case, it does not work, use the following command
<BR> # with proper names and addresses in it)
<BR> if (uri==myself) { <BR><BR>
if (method=="REGISTER") { <BR><BR>#
Uncomment this if you want to use digest authentication <BR>
if
(!www_authorize("nhadzter.com", "subscriber")) { <BR>
www_challenge("nhadzter.com", "0"); <BR>
break; <BR>
}; <BR><BR>
save("location");
<BR>
break; <BR>
}; <BR><BR> #
Voicemail specific configuration - begin <BR><BR>
if(method=="ACK" || method=="INVITE" ||
method=="BYE" || <BR>method=="REFER"){ <BR><BR>
if(t_newtran()){
<BR><BR>
t_reply("100","Trying --
just wait a <BR>minute !"); <BR><BR>
if(method=="INVITE" || method=="REFER"){ <BR>
log("**************** vm start -
begin <BR>******************\n"); <BR>
if( uri =~ "conference" ){
<BR><BR>if(!vm("/tmp/am_fifo","conference")){ <BR>
log("could not contact <BR>conference server\n");
<BR>
t_reply("500","could <BR>not
contact conference server"); <BR>
}; <BR>
} <BR>
else if( uri =~ "echo" ){ <BR>
if(!vm("/tmp/am_fifo","echo")) <BR>{ <BR>
log("could not contact <BR>echo\n"); <BR>
t_reply("500","could <BR>not contact echo"); <BR>
}; <BR>
} <BR>
else { <BR><BR>if(!vm("/tmp/am_fifo","voicemail")){ <BR>
log("could not contact <BR>voicemail\n");
<BR>
t_reply("500","could <BR>not
contact voicemail"); <BR>
}; <BR>
}; <BR>
log("**************** vm start - end
<BR>******************\n"); <BR>
break; <BR>
};
<BR><BR>
if(method=="BYE"){
<BR>
log("**************** vm end/refer - <BR>begin ******************\n");
<BR>
if(!vm("/tmp/am_fifo","bye")){ <BR>
log("could not
contact the <BR>media server\n"); <BR>
t_reply("500","could
not <BR>contact the media server"); <BR>
}; <BR>
log("**************** vm end/refer - <BR>end
********************\n"); <BR>
break; <BR>
};
<BR>
} <BR>
else { <BR>
log("could
not create new transaction\n"); <BR>
sl_send_reply("500","could not create new <BR>transaction"); <BR>
}; <BR> };
<BR><BR> # Voicemail
specific configuration - end <BR><BR>
# native SIP destinations are handled using our USRLOC
DB <BR> if
(!lookup("location")) { <BR>
sl_send_reply("404", "Not Found");
<BR>
break; <BR>
}; <BR> }; <BR> #
forward to current uri now; use stateful forwarding; that <BR>
# works reliably even if we forward from TCP to UDP <BR>
if (!t_relay()) { <BR>
sl_reply_error(); <BR> };
<BR><BR>} <BR><BR>------------- end of ser.cfg ------------------
<BR><BR>---------start of sems.conf ----------------------- <BR><BR># $Id:
sems.conf.sample,v 1.11.2.1 2004/01/27 15:08:28 rco Exp $ <BR># <BR>#
sems.conf.sample <BR># <BR># Sip Express Media Server (sems) <BR># <BR>#
sample configuration file <BR># <BR># <BR># whitespaces (spaces and tabs)
are ignored <BR># comments start with a "#" and may be used inline <BR>#
<BR># example: option=value1, value2 # i like this option <BR>#
<BR><BR>################################## <BR># global parameters
#
<BR>################################## <BR><BR># optional parameter:
fork={yes|no} <BR># <BR># - specifies if sems should run in daemon mode
(background) <BR># (fork=no is the same as -E) <BR>fork=yes <BR><BR>#
optional parameter: stderr={yes|no} <BR># <BR># - debug mode: do not fork
and log to stderr <BR># (stderr=yes is the same as -E) <BR>stderr=no
<BR><BR># optional parameter: loglevel={0|1|2|3} <BR># <BR># - sets log
level (error=0, warning=1, info=2, debug=3) <BR># (same as -D)
<BR>loglevel=1 <BR><BR># optional parameter: fifo_name=<filename>
<BR># <BR># - path and file name of our fifo file (same as -i)
<BR>fifo_name=/tmp/am_fifo <BR><BR># optional parameter:
ser_fifo_name=<filename> <BR># <BR># - path and file name of Ser's
fifo file (same as -o) <BR>ser_fifo_name=/tmp/ser_fifo <BR><BR># optional
parameter: plugin_path=<path> <BR># <BR># - sets the path to the
plug-ins <BR># - may be absolute or relative to CWD
<BR>plugin_path=/usr/local/lib/sems/plug-in/ <BR><BR># optional parameter:
smtp_server=<hostname> <BR># <BR># - sets address of smtp server
<BR>smtp_server=localhost <BR><BR># optional parameter:
smtp_port=<port> <BR># <BR># - sets port of smtp server
<BR>smtp_port=25 <BR><BR>################################## <BR># module
specific parameters # <BR>##################################
<BR><BR># sample voicemail configuration (inline)
<BR>config.voicemail=inline <BR><BR># optional parameter:
announce_path=<path> <BR># <BR># - sets the path where announce files
are searched for <BR># - the file to be played is determined the following
way: <BR>#
<announce_path>/<domainname>/<username>.wav <BR>#
if this file is not available <announce_path>/<default_anounce>
is used <BR>announce_path=/usr/local/lib/sems/audio/ <BR><BR># parameter:
default_announce=<filename> <BR># <BR># - sets the name of the default
announce WAV file <BR>default_announce=default_en.wav <BR><BR># parameter:
max_record_time=<seconds> <BR># <BR># - maximum record time
<BR>max_record_time=30 <BR><BR># parameter: accept_delay=<x> <BR>#
<BR># - delays accepting of the call for x seconds <BR># - default value is
0 <BR>accept_delay=20 <BR><BR># end of configuration section <BR># for
voicemail module <BR>config.voicemail=end <BR><BR># sample announcement
configuration (inline) <BR>config.announcement=inline <BR><BR># optional
parameter: announce_path=<path> <BR># <BR># - sets the path where
announce files are searched for <BR>announce_path=/usr/local/lib/sems/audio/
<BR><BR># parameter: default_announce=<filename> <BR># <BR># - sets
the name of the default announce WAV file
<BR>default_announce=default_en.wav <BR><BR># end of configuration section
for announcement module <BR>config.announcement=end <BR><BR># sample isdngw
module configuration (external file) <BR># config.isdngw=/etc/isdngw.conf
<BR><BR># sample ivr module configuration (inline) <BR>config.ivr=inline
<BR><BR>#parameter: python_script_path=<full path>
<BR>python_script_path=/etc/ivr <BR><BR>#parameter:
python_script_file=<filename> <BR>python_script_file=example.py
<BR><BR># end of configuration section for ivr module <BR>config.ivr=end
<BR><BR># sample conference configuration (inline)
<BR>config.conference=inline <BR><BR># parameter:
default_announce=<filename> <BR># <BR># - sets the full pathed name of
the default announce WAV file. <BR># Will be played to lonely users.
<BR>default_announce=/usr/local/lib/sems/audio/first_participant.wav
<BR><BR># end of configuration section for conference module
<BR>config.conference=end <BR><BR># example configuration for number reader
<BR>config.number_reader=inline
<BR><BR>number_path=/usr/local/lib/sems/audio/
<BR><BR>prolog_file=welcome_to_number_reader.wav
<BR><BR>epilog_file=thanks_calling_number_reader.wav <BR><BR># end of
number_reader configuration <BR>config.number_reader=end <BR><BR># add more
module configurations here (inline or external): <BR># <BR>#
config.mymodule=<filename> <BR># or <BR># config.mymodule=inline
<BR># ... <BR># config.mymodule=end <BR><BR>------------- end of sems.conf
------------------- <BR>