Hello list,
i have successfully completed my trails with voice
mail
now my aim is to do the ivr enableing with sems.
iam useing the ser-0.8.12 of stable version and sems
of stable and latest cvs version.
i have compiled my ivr plugin with the python and i
got the binary file ivr.so
so my doubts are
1) does i need to load this binary file into ser.cfg
2)if so how do i need to load the module into the my
ser.cfg
3) the following is my configuration files of ser.cfg
and sems.conf
4) my expectations with the current configurtions is
that when i invite any other user agent it has to
go to the ivr but instead of this it gives the error
as follows
out put while running sems in debug mode
------------------------------------------
[root@server1 answer_machine]# ./sems -D 3 -E
(1281) ERROR: reportConfigError
(SemsConfiguration.cpp:274):
/usr/local/etc/sems/sems.conf:197 configuration:
inline module definitions may not be nested
sems.conf
******************************************************
[root@server1 sems]# cat sems.conf
# $Id: sems.conf.sample,v 1.20 2004/08/30 11:03:26 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: socket_name=<filename>
#
# - path and file name of our unix socket
socket_name=/tmp/am_sock
# optional parameter: ser_socket_name=<filename>
#
# - path and file name of Ser's unix socket
ser_socket_name=/tmp/ser_sock
# optional parameter: send_method=<filename>
#
# - sets which method will be used to contact Ser:
# FIFO or unix socket server.
# - values: fifo (default), unix_socket
#
# - PLEASE NOTE THAT: if you use 'fifo', make sure
that
# fifo_name and ser_fifo_name have been set. if you
use 'unix_socket',
# make sure that socket_name and ser_socket_name
have been set.
#
send_method=unix_socket
# 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
# optional parameter: rtp_low_port=<port>
#
# - sets port of rtp lowest server
#rtp_low_port=1024
# optional parameter: rtp_high_port=<port>
#
# - sets port of rtp highest server
#rtp_high_port=65535
##################################
# module specific parameters #
##################################
# sample voicemail configuration (inline)
config.voicemail=inline
# optional parameter: rec_file_extension=<ext>
#
# - sets the file extension which will be used
# to record messages.
# - example 1: wav
# - example 2: mp3
#
# WARNING: you must compile the mp3 plug-in
# in order to use 'mp3' as default
# extension. You will need the lame
# encoder for that.
# See plug-in/mp3/ReadmeMP3.txt for
# more information.
#
rec_file_extension=wav
# 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=0
# parameter: email_template_path=<filename>
#
# - email templates path
#
# See the README file in <sems-src>/plug-in/voicemail
# for more information on the syntax used.
#
email_template_path=/usr/local/etc/sems/
# 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
#
#
# The IVR checks for a script with the named of the
callee
# (<local part in r-uri>.py for python, <local part in
r-uri>.pl for perl)
# in the directory <ivr_script_path><domain>, then for
# <ivr_script_path><domain><ivr_script_file>. If this
is not found,
# <ivr_script_path>/<local part in r-uri>.py if
searched,
# and if this is not found,
<ivr_script_path>/<ivr_script_file> is used.
config.ivr=inline
python_scrit_path=/root/answer_machine/plugin/ivr/
python_script_file=ivr.py
config.ivr=end
#parameter: ivr_script_path:
# path to ivr scripts.
#
ivr_script_path=/etc/ivr/
# default script file: this will be executed if
<user>.py does not exist.
#
ivr_script_file=ivr.py
# parameter : tts_caching
# y or n
# text will be read from waves already
synthesized and
# cached in cache_path
tts_caching=y
# parameter : tts_cache_path
# path to cache waves
# path must exist!
tts_cache_path=/tmp/wavs
# end of configuration section for ivr module
******************************************************
ser.cfg
*******************************************************
# ----------- global configuration parameters
debug=8 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=yes # (cmd line: -E)
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
children=4
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")
modparam("usrloc","db_url","mysql://ser:heslo@localhost:3306/ser")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
#voicemail
modparam("voicemail","db_url","mysql://ser:heslo@localhost:3306/ser")
modparam("voicemail","subscriber_table","subscriber")
modparam("voicemail","email_column","email_address")
# ------------------------- 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("iptel.org", "subscriber")) {
#
www_challenge("iptel.org", "0");
# break;
# };
save("location");
break;
};
if ( method=="ACK" || method=="INVITE" ||
method=="BYE" || method=="CANCEL" )
{
if (!t_newtran())
{
sl_send_reply("500","could not create transaction");
break;
};
t_reply("100","Trying - just wait
a minute !");
if (method=="INVITE")
{
log("in to the invite");
if(!vm("/tmp/am_fifo","ivr"))
{
log("could not contact announcement server");
t_reply("500","error contacting sems");
};
break;
}
else if (method=="BYE" ||
method=="CANCEL")
{
if(!vm("/tmp/am_fifo","bye"))
{
t_reply("500","error
contacting sems");
};
break;
};
};
# 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();
};
}
*******************************************************
your help will be highly appreciated
with regards
serdiehard
__________________________________
Do you Yahoo!?
Yahoo! Mail - now with 250MB free storage. Learn more.
http://info.mail.yahoo.com/mail_250