|
@@ -0,0 +1,100 @@
|
|
|
+#
|
|
|
+# $Id$
|
|
|
+#
|
|
|
+# 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= # debug level (cmd line: -dddddddddd)
|
|
|
+#fork=no
|
|
|
+#log_stderror=yes # (cmd line: -E)
|
|
|
+
|
|
|
+
|
|
|
+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"
|
|
|
+
|
|
|
+# ------------------ module loading ----------------------------------
|
|
|
+
|
|
|
+loadmodule "/home/srouter/sip_router/modules/sl/sl.so"
|
|
|
+loadmodule "/home/srouter/sip_router/modules/tm/tm.so"
|
|
|
+loadmodule "/home/srouter/sip_router/modules/maxfwd/maxfwd.so"
|
|
|
+loadmodule "/home/srouter/sip_router/modules/mysql/mysql.so"
|
|
|
+loadmodule "/home/srouter/sip_router/modules/vm/vm.so"
|
|
|
+
|
|
|
+# ----------------- setting module-specific parameters ---------------
|
|
|
+
|
|
|
+modparam("voicemail", "db_url","sql://ser:heslo@dbhost/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 (len_gt( 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;
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ # 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 (!vm("/tmp/am_fifo", "announcement")) {
|
|
|
+ log("couldn't contact announcement server\n");
|
|
|
+ t_reply("500", "couldn not contact announcement server");
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ 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(!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");
|
|
|
+}
|