hi tnx but that dont change anything
now fifo for ser.cfg is /tmp/ser_fifo
and for voicemail is /tmp/vm_ser_fifo
and SEMS have /tmp/am_fifo
and use /tmp/vm_ser_fifo to comunicate with SER
but have absolutly the same error
is it posible becouse i use SER 0.8.14 ?
----- Original Message -----
From: "Juan" <juan(a)korreo.com.ar>
To: "Veselin Iordanov" <veselin_iordanov(a)hotmail.com>
Cc: <serusers(a)lists.iptel.org>
Sent: Wednesday, August 25, 2004 3:08 PM
Subject: Re: [Serusers] VoiceMail Help
Hello Veselin,
For t_reply not available, check attached email.
In ser.cfg take into account that fifo should be different for ser proxy
(port 5060) and ser voicemail (port 5090). You have the same fifo for
both (fifo="/tmp/ser_fifo" ); check the other attached email.
Juan Priotti
Veselin Iordanov wrote:
> ok i found example configuration fails for making ser+sems+voice mail
> somewhare in the mailing list but have one strange problem..
> all of the servers are on one PC
> This is a configuration files
> 1. conf file for main ser server
> #
> # $Id: ser.cfg,v 1.21 2003/06/04 13:47:36 jiri 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)
> listen=80.72.85.178
> port=5060
> children=4
> fifo="/tmp/ser_fifo"
>
alias=testinfo.intersoftpro.com 127.0.0.1 80.72.85.178
>
> # ------------------ 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/textops.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"
>
> # load the voicemail module
> #loadmodule "/usr/local/lib/ser/modules/vm.so"
>
> # load the enum module
> loadmodule "/usr/local/lib/ser/modules/enum.so"
>
> # load the group module, to verify if a user forwards to voicemail
> loadmodule "/usr/local/lib/ser/modules/group.so"
>
> # load the nathelper module
> loadmodule "/usr/local/lib/ser/modules/nathelper.so"
>
> # ----------------- setting module-specific parameters ---------------
>
> # -- registrar parameter
> # special NAT flag indicates that a registered client is behind NAT
> modparam("registrar", "nat_flag", 6)
>
> # -- 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)
> modparam("usrloc", "db_url",
"mysql://ser:heslo@localhost/ser")
>
> # -- 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("auth_db", "db_url",
"mysql://ser:heslo@localhost/ser")
>
> # -- rr params --
> # add value to ;lr param to make some broken UAs happy
> modparam("rr", "enable_full_lr", 1)
>
> # -- voicemail params --
> #modparam("voicemail",
"db_url","mysql://ser:heslo@localhost/ser")
>
> # -- voicemail params --
> modparam("group",
"db_url","mysql://serro:heslo@localhost/ser")
>
> # -- nathelper params --
> modparam("nathelper", "natping_interval", 60)
> modparam("nathelper", "ping_nated_only", 1)
>
> modparam("tm", "fr_inv_timer", 30 )
> #modparam("tm", "fr_inv_timer", 8 )
>
> # ------------------------- request routing logic -------------------
>
> # main routing logic
>
> route{
> log(1, "-------------------------------------------\n");
> log(1, "entering main loop\n");
>
> if (nat_uac_test("2")) {
> log(1, "src address different than via header->NAT
detected\n");
> log(1, "force_rport and fix_nated_contact and setflag(5)\n");
> #try NAT traversal, works only if the client is symmetrical
> force_rport();
> fix_nated_contact();
> append_hf("P-hint: fixed NAT contact for request\r\n");
> # flag 5 indicates that incoming request is from NATed client
> setflag(5);
> };
>
> if (method=="REGISTER")
> log(1, "REGISTER message received\n");
>
> if (method=="INVITE")
> log(1, "INVITE message received\n");
>
> if (method=="ACK")
> log(1, "ACK message received\n");
>
> if (method=="BYE")
> log(1, "BYE message received\n");
>
> if (method=="CANCEL")
> log(1, "CANCEL message received\n");
>
> if (method=="SUBSCRIBE")
> log(1, "SUBSCRIBE message received\n");
>
> if (method=="NOTIFY")
> log(1, "NOTIFY message received\n");
>
> if (method=="OPTIONS")
> log(1, "OPTIONS message received\n");
>
> if (method=="INFO")
> log(1, "INFO message received\n");
>
> if (method=="MESSAGE")
> log(1, "MESSAGE message received\n");
>
> if (method=="REFER")
> log(1, "REFER message received\n");
>
> # 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) {
> #if (len_gt( max_len )) {
> sl_send_reply("513", "Message too big");
> break;
> };
>
> # loose-route processing
> if (loose_route()) {
> log(1, "loose_route processing\n");
> t_relay();
> break;
> };
>
> # create transaction state; abort if error occured
> # if ( !t_newtran()) {
> # sl_reply_error();
> # 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") {
> log(1, "analyzing REGISTER request\n");
> # Uncomment this if you want to use digest authentication
> if (!www_authorize("80.72.85.178", "subscriber")) {
> www_challenge("80.72.85.178", "0");
> break;
> };
>
> if (isflagset(5)) {
> #register from nated client, save nat_flag=6
> #in location table
> setflag(6);
> };
> if (!save("location")) {
> log(1, "save location error\n");
> sl_reply_error();
> };
> break;
> };
>
> lookup("aliases");
>
> # check if number beginns with 00, then convert it into a +
> if (uri=~"^sip:359[0-9]*@") {
> log(1, "00 International number detected\n");
> # strip booth leading "0"
> strip(2);
> prefix("+");
> };
> # check if request uri begins with an internation phone
> number, if yes, try enum to resolve
> if (uri=~"^sip:\+[0-9]*@") {
> log(1, "+ International number detected\n");
> if (!enum_query("voice")) {
> log(1, "ENUM query failed, try enum without voice
> prefix\n");
> if (enum_query("")) {
> log(1, "ENUM without voice prefix also failed\n");
> };
> };
>
> if (uri != myself) {
> log(1, "ENUM lookup revealed an external address,
> relaying...");
> route(1);
> break;
> };
> };
>
> #mark transaction for voicemail
> if (is_user_in("Request-URI", "voicemail\n")) {
> log(1, "requested user is in voicemail group");
> setflag(4);
> };
>
> # native SIP destinations are handled using our USRLOC DB
> if (!lookup("location")) {
> # handle user which was not found
> log(1, "requested user not found\n");
> route(4);
> break;
> };
> };
>
> #add failure route which should be performed if response code >=300
> if (method=="INVITE" && isflagset(4)) {
> log(1, "invite for voicemail user->initiate
failureroute[1]\n");
> t_on_failure("1");
> };
>
> # forward to current uri now; use stateful forwarding; that
> # works reliably even if we forward from TCP to UDP
>
> route(1);
> }
>
> route[1]{
> log(1, "-------------------------------------------\n");
> log(1, "entering route[1] - relaying SIP message\n");
> if ((isflagset(5)) || (isflagset(6))) {
> log(1, "at least one of the participants is
> NATed->record_route\n");
> record_route();
> log(1, " -->setting up reply
processing
->onreply_route[1]");
> t_on_reply("1");
> if (method=="INVITE") {
> log(1, " INVITE request-->force_rtp_proxy, set
> NATED-INVITE flag(7)");
> force_rtp_proxy();
> append_hf("P-hint: request forced to rtp proxy\r\n");
> setflag(7);
> };
> };
>
> log(1, "relaying message ...\n");
> if (!t_relay()) {
> log(1, "t_relay error occured\n");
> sl_reply_error();
> };
>
> }
>
> # all incoming replies for t_onrepli-ed transactions enter here
> onreply_route[1] {
> log(1, "-------------------------------------------\n");
> log(1, "onreply_route[1] entered\n");
>
> if (isflagset(6)) {
> log(1, "transaction was sent to a NATED client -> fix nated
> contact\n");
> fix_nated_contact();
> append_hf("P-hint: fixed NAT contact for response\r\n");
> }
>
> if ( (status=~"100") ) {
> log(1, "status 100 received\n");
> };
>
> if ( (status=~"180") ) {
> log(1, "status 180 received\n");
> };
>
> if ( (status=~"202") ) {
> log(1, "status 202 received\n");
> };
>
> if ( (status=~"200" || status=~"183") ) {
> log(1, "status 2xx or 183");
> if ( isflagset(7) ) {
> log(1, "marked(7) as NATED-INVITE -> force_rtp_proxy \n");
> force_rtp_proxy();
> append_hf("P-hint: response forced to rtp proxy\r\n");
> };
> };
> }
>
> route[4]{
> log(1, "-------------------------------------------\n");
> log(1, "entering route[4] = requested user not online\n");
> # non-Voip -- just send "off-line"
> if (!(method == "INVITE" || method == "ACK" || method ==
"CANCEL"
> || method == "REFER" || method == "BYE")) {
> log(1, "no invite,ack,cancel,refer->return 404\n");
> sl_send_reply("404", "Not Found");
> break;
> };
>
> # not voicemail subscriber and no echo/conference call
> if ( isflagset(4)) {
> log(1, "flag(4) active\n");
> };
> if (uri =~ "conference") {
> log(1, "conference call\n");
> };
> if (uri =~ "echo") {
> log(1, "echo call\n");
> };
> if ( !( isflagset(4) || (uri =~ "conference") || (uri =~
"echo") )
> ) {
> log(1, "no voicemail subscriber->return 404");
> sl_send_reply("404", "Not Found and no voicemail turned
on");
> break;
> };
>
> if ( isflagset(5) ) {
> log(1, "caller is NATed->record_route\n");
> record_route();
> log(1, " -->setting up reply processing
> ->onreply_route[1]");
> t_on_reply("1");
> if (method=="INVITE") {
> log(1, " INVITE
request-->force_rtp_proxy");
> force_rtp_proxy();
> };
> };
>
> # forward to voicemail now
> #rewritehostport("machtnix.ict.tuwien.ac.at:5060");
> log(1, "forward to voicemail\n");
> t_relay_to_udp("80.72.85.178", "5090");
>
> #klaus
> #forward(machtnix.ict.tuwien.ac.at, 5060)
> }
>
>
>
> failure_route[1] {
> /* XX: note: unsafe if preloaded routes without username used */
> log(1, "-------------------------------------------\n");
> log(1, "failureroute[1] entered\");
> revert_uri();
> #rewritehostport("machtnix.ict.tuwien.ac.at:5060");
> # append_branch();
> t_relay_to_udp("machtnix.ict.tuwien.ac.at", "5060");
> }
>
> 2. Conf File for second instance of the ser server (voice mail )
> #
> # $Id: voicemail.cfg,v 1.21 2003/06/04 13:47:36 jiri 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)
> listen=80.72.85.178
> port=5090
> children=4
> fifo="/tmp/ser_fifo"
>
alias=testinfo.intersoftpro.com 127.0.0.1 80.72.85.178
>
> # ------------------ 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"
>
> # load the voicemail module
> loadmodule "/usr/local/lib/ser/modules/vm.so"
>
> # ----------------- setting module-specific parameters ---------------
>
> modparam("voicemail",
"db_url","mysql://ser:heslo@localhost/ser")
>
> # ------------------------- request routing logic -------------------
>
> # main routing logic
>
> route{
> log(1, "entering main loop\n");
> if (method=="REGISTER")
> log(1, "REGISTER message received\n");
>
> if (method=="INVITE")
> log(1, "INVITE message received\n");
>
> if (method=="ACK")
> log(1, "ACK message received\n");
>
> if (method=="BYE")
> log(1, "BYE message received\n");
>
> if (method=="CANCEL")
> log(1, "CANCEL message received\n");
>
> if (method=="SUBSCRIBE")
> log(1, "SUBSCRIBE message received\n");
>
> if (method=="NOTIFY")
> log(1, "NOTIFY message received\n");
>
> if (method=="OPTIONS")
> log(1, "OPTIONS message received\n");
>
> if (method=="INFO")
> log(1, "INFO message received\n");
>
> if (method=="MESSAGE")
> log(1, "MESSAGE message received\n");
>
> if (method=="REFER")
> log(1, "REFER message received\n");
>
> # lookup("aliases");
>
> # 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;
> };
>
> # check changed from 0.8.11 to 0.8.12
> # if (len_gt( max_len )) {
> 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
request-uri");
> # break;
> # };
>
>
>
> # Voicemail specific configuration - begin
>
> if(method=="ACK" || method=="INVITE" ||
method=="BYE" ||
> method=="REFER" || method=="CANCEL"){
> log(1, "Entering voicemail processing\n");
>
> log(1, "check if new transaction ... \n");
> if(t_newtran()){
> log(1, "... yes, new transaction\n");
> t_reply("100","voicemail ser - Trying -- just wait a
> minute !");
> t_reply("100","voicemail ser - Trying 2 -- just wait a
> minute !");
> if(method=="INVITE" || method=="REFER"){
> log("**************** vm start - begin
> ******************\n");
> if( uri =~ "conference" ){
> log(1, "incoming conference call\n");
> 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" ){
> log(1, "incoming echo call\n");
> if(!vm("/tmp/am_fifo","echo")){
> log("could not contact echo\n");
> t_reply("500","could not contact
echo");
> };
> }
> else {
> log(1, "incoming voicemail call\n");
> 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" || method=="CANCEL"){
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
sl_send_reply("501", "method not understood here");
log(1, "method not understood here\n");
}
3 Sems configuration fail
# $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
and i got this error into second instance of the ser server
0(19586) **************** vm start - end ******************
0(19586) DEBUG:destroy_avp_list: destroing list (nil)
0(19586) receive_msg: cleaning up
2(19588) ERROR: fifo_server: command t_reply is not available
2(19588) ERROR: fifo_server: command must begin with :: ringing
2(19588) ERROR: fifo_server: command must begin with :: 00004C89728793F0
2(19588) ERROR: fifo_server: command must have at least 3 chars
2(19588) INFO: fifo_server: command empty
2(19588) ERROR: fifo_server: command t_reply is not available
2(19588) ERROR: fifo_server: command must have at least 3 chars
2(19588) ERROR: fifo_server: command must begin with :: 00004C89728793F0
2(19588) ERROR: fifo_server: command must begin with :: Content-Type:
application/sdp
2(19588) ERROR: fifo_server: command must begin with :: v=0
2(19588) ERROR: fifo_server: command must begin with :: s=session
2(19588) ERROR: fifo_server: command must begin with :: t=0 0
2(19588) ERROR: fifo_server: command must begin with :: a=rtpmap:0 /
2(19588) INFO: fifo_server: command empty
2(19588) ERROR: fifo_server: command t_reply is not available
2(19588) ERROR: fifo_server: command must begin with :: could not send
response.
2(19588) ERROR: fifo_server: command must begin with :: 00004C89728793F0
2(19588) ERROR: fifo_server: command must have at least 3 chars
2(19588) INFO: fifo_server: command empty
Tnx in advance
_________________________________________________________________
Help STOP SPAM with the new MSN 8 and get 2 months FREE*
http://join.msn.com/?page=features/junkmail
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers