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