# # $Id: voicemail.cfg,v 1.2 2003/10/10 06:27:18 jiri 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=no # (cmd line: -E) log_facility=LOG_LOCAL1 check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) port=5090 children=4 fifo="/tmp/vm_ser_fifo" fifo_mode=438 listen= listen=127.0.0.1 # ------------------ module loading ---------------------------------- loadmodule "/usr/local/lib/ser/modules/sl.so" loadmodule "/usr/local/lib/ser/modules/tm.so" loadmodule "/usr/local/lib/ser/modules/maxfwd.so" loadmodule "/usr/local/lib/ser/modules/mysql.so" 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{ # 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; }; # lookup("aliases"); # Since we're not using registrar, we can't use # lookup("aliases"); above, so we must use a regex # to verify that we handle the voicemail for the URI if (!uri=~"@") { sl_send_reply("404", "not reponsible for host in r-uri"); log(1, "LOG: Not responsible for host in r-uri"); break; }; # Voicemail 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; }; t_reply("100","Trying -- just wait a minute !"); if(method=="INVITE"){ log("**************** vm start - begin ******************\n"); if (uri=~"sip:as_welcome@.*" || uri=~"sip:as_nomoney@.*") { # if (!t_write_unix("/tmp/am_sock", "announcement")) { if (!vm("/tmp/am_fifo", "announcement")) { log("couldn't contact announcement server\n"); t_reply("500", "couldn not contact announcement server"); }; } else { # if(!t_write_unix("/tmp/am_sock","voicemail")){ if(!vm("/tmp/am_fifo","voicemail")) { log("could not contact the answer machine\n"); t_reply("500","could not contact the answer machine"); }; }; log("**************** vm start - end ******************\n"); } else if(method=="BYE"){ log("**************** vm end - begin ******************\n"); # if(!t_write_unix("/tmp/am_sock","bye")){ if(!vm("/tmp/am_fifo","bye")){ log("could not contact the answer machine\n"); t_reply("500","could not contact the answer machine"); }; 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"); }