Hello Glynn,
the ser.cfg I use to test the ivr is attached, but you will not want to
use this, as it doesn't check for registration etc. but simply forwards
all calls to the ivr.
If you have made make install within ser and do not start ser in the ser
ser source directory you'll have to change the "loadmodules" from
loadmodule "modules/sl/sl.so"
to
loadmodule "modules/sl.so" etc.
You'll also want to change this line
modparam("vm","db_url","dbtext:///home/sanchez/sip_router/modules/vm/db")
to point to some directory where there exists a file called "subscriber".
(Hopefully I won't get flamed by the ser people for this poor ser.cfg
script... ;)
HTH Stefan
Glynn Condez wrote:
hi stefan,
can you post an example of a working ivr config in ser. thanks
----- Original Message -----
From: "Stefan Sayer" <sayer(a)cs.tu-berlin.de>
To: "Shirley Toh" <shirleytoh(a)jpcomputers.com.sg>
Cc: "Serusers (E-mail)" <serusers(a)lists.iptel.org>rg>; "'Sems
(E-mail)"
<sems(a)lists.iptel.org>
Sent: Monday, June 07, 2004 9:06 PM
Subject: [Serusers] Re: [Sems] Sems Configuration
Hello,
the IVR uses the script with the name of the called party. If it doesn't
exist the default script will be used.
Stefan
On Mon, 7 Jun 2004, Shirley Toh wrote:
>Hi all,
>
>Sorry if this is a veruy stupid question as I am a newbie to sems.
>
>I need to have a different IVR script pointed from ser.cfg to have
>difference features, may I know how can I add another script file to
call
>from the sems.conf using the IVR.so module
again but with different
scripts.
>>Please help.
>>
>>Regards,
>>Shirley
>>
>>_______________________________________________
#
# $Id: ser.cfg.ivr,v 1.1 2004/05/25 16:09:06 ssa Exp $
#
# this script is configured for use as voicemail UAS; it processes
# INVITEs and BYEs and asks SEMS to record media via "vm"; in this
# script, all record-routing and other constructs known from proxy
# scripts are not present -- it is a simple UAS
#
# ----------- global configuration parameters ------------------------
debug=3 # 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"
#listen=195.37.78.184
# ------------------ module loading ----------------------------------
loadmodule "modules/sl/sl.so"
loadmodule "modules/tm/tm.so"
loadmodule "modules/rr/rr.so"
loadmodule "modules/maxfwd/maxfwd.so"
loadmodule "modules/usrloc/usrloc.so"
loadmodule "modules/registrar/registrar.so"
loadmodule "modules/vm/vm.so"
loadmodule "modules/dbtext/dbtext.so"
# ----------------- setting module-specific parameters ---------------
# You may want to define things like databases here. Please refer to
# the extensive SER documentation for this purpose. Module parameters
# are always described in the modules README files.
#
# For pure ivr functionality only a database is needed, we use
# a simple textfile for this purpose. Actually this is only neccessary until
# the vm module is reworked. Simply copy the etc/db directory from the ivr
# directory somewhere and specify it in the following statement:
modparam("vm",
"db_url","dbtext:///home/sanchez/sip_router/modules/vm/db")
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with
# max_forwars==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;
};
if (!uri==myself) {
sl_send_reply("404", "not reponsible for host in r-uri");
break;
};
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;
};
# ivr specific configuration - begin
if(method=="ACK" || method=="INVITE" || method=="BYE"){
if (!t_newtran()) {
log("could not create new transaction\n");
sl_send_reply("500","could not create new transaction");
break;
};
if (uri=~"sip:ivr+*@.*") {
log("VM URI FOUND ?§?§?§?§?§??§?§?§§§§§§§§§§§§§§§§§§§§§3");
route(1);
};
t_reply("100","Trying -- just wait a minute !");
if(method=="INVITE"){
log("**************** vm start - begin ******************\n");
#if (uri=~"sip:ivr@.*") {
if (!vm("/tmp/am_fifo", "ivr")) {
log("couldn't contact ivr server\n");
t_reply("500", "couldn not contact ivr server");
};
#};
log("**************** vm start - end ******************\n");
} else if(method=="BYE"){
log("**************** vm end - begin ******************\n");
if(!vm("/tmp/am_fifo","bye")){
log("could not contact ivr\n");
t_reply("500","could not contact ivr");
};
log("**************** vm end - end ******************\n");
};
break;
};
if (method=="CANCEL") {
sl_send_reply("200", "cancels are junked here");
break;
};
sl_send_reply("501", "method not understood here");
}
route[1]
{
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
log("route[1] -- start -------------------");
if (!t_relay()) {
sl_reply_error();
};
log("route[1] -- end -------------------");
}