[Serusers] SER+SERWEB help!!!!

Nils Ohlmeier nils at iptel.org
Sat Apr 24 20:41:41 CEST 2004


I think resending your request multiple times will not improve the response 
time, quality or anything. Especially during the weekend you should not 
expect replies within hours!

Regards
  Nils

On Saturday 24 April 2004 19:25, gaillac harry wrote:
> Hi all,
>
> Here is my ser.cg file. I try to configure send IM, Missed calls,
> Voicemail.
> I just can configure Send IM.
> Now I can call isdngw, ivr
> I need help to configure lookup location logic for missed calls and
> voicemail (offline users)
>
> Anybody could help me to configure the others functions (problem with
> logic !!).
>
> harry
> Regards
>
> #
> # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
> #
> # simple quick-start config script
> #
> #
> # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei 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=192.168.0.1
> port=5060
> children=4
> fifo="/tmp/ser_fifo"
> fifo_mode=0666
> # -- module loading --
>
> # Uncomment this if you want to use SQL database
> loadmodule "/usr/lib/ser/modules/mysql.so"
>
> loadmodule "/usr/lib/ser/modules/sl.so"
> loadmodule "/usr/lib/ser/modules/tm.so"
> loadmodule "/usr/lib/ser/modules/rr.so"
> loadmodule "/usr/lib/ser/modules/maxfwd.so"
> loadmodule "/usr/lib/ser/modules/usrloc.so"
> loadmodule "/usr/lib/ser/modules/registrar.so"
> loadmodule "/usr/lib/ser/modules/domain.so"
> loadmodule "/usr/lib/ser/modules/msilo.so"
> loadmodule "/usr/lib/ser/modules/acc.so"
> loadmodule "/usr/lib/ser/modules/vm.so"
> loadmodule "/usr/lib/ser/modules/uri.so"
>
> # Uncomment this if you want digest authentication
> # mysql.so must be loaded !
> loadmodule "/usr/lib/ser/modules/auth.so"
> loadmodule "/usr/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_url", "mysql://ser:heslo@localhost/ser")
> modparam("usrloc", "db_mode", 2)
> modparam("usrloc", "use_domain", 1)
>
> # -- 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")
>
> # -- rr params --
> # add value to ;lr param to make some broken UAs happy
> modparam("rr", "enable_full_lr", 1)
>
> # --registrar params--
> modparam("registrar", "use_domain", 1)
>
> # --domain params--
> modparam("domain", "db_url", "mysql://ser:heslo@localhost/ser")
> modparam("domain", "db_mode", 1)   # Use chaching
>
> # --acc params--
> modparam("acc", "db_url", "mysql://ser:heslo@localhost/ser")
> modparam("acc", "db_missed_flag", 3)
>
> # --msilo params--
> modparam("msilo", "db_url", "mysql://ser:heslo@localhost/ser")
> modparam("msilo", "db_table", "silo")
> modparam("msilo","registrar","sip:registrar at 192.168.0.1")
>
> # --uri params--
> modparam("uri", "db_url", "mysql://ser:heslo@localhost/ser")
> modparam("uri", "subscriber_table", "subscriber")
>
>
> # --vm params--
> modparam("voicemail", "db_url", "mysql://ser:heslo@localhost/ser")
>
> # --  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;
>         };
>
>         # isdn gateway
>          if(method=="INVITE" || method=="BYE" || method=="CANCEL"){
>                 if (uri=~"sip:[0-9]{10}@.*") {
>                 route(2);
>                 break;
>                 };
>         };
>
>         # ivr conf
>          if(method=="INVITE" || method=="BYE" || method=="CANCEL"){
>                 if (uri=~"sip:5000 at .*") {
>                 route(4);
>                 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 (is_from_local()) {
>
>                 if (method=="REGISTER") {
>
> # Uncomment this if you want to use digest authentication
>                         if (!www_authorize("", "subscriber")) {
>                                 www_challenge("", "0");
>                                 break;
>                         };
>
>                         save("location");
>                         # MSILO - dumping user's offline messages
>                         if (m_dump())
>                         {
>                                 log("MSILO: offline messages dumped - if
> they were\n");
>                         }else{
>                                 log("MSILO: no offline messages
> dumped\n");
>                         };
>                         break;
>                 };
>
>                 # native SIP destinations are handled using our USRLOC
> DB
>                 lookup("aliases");
>                 if (!lookup("location")) {
>
>                         if (! t_newtran()) {
>                                 sl_reply_error();
>                                 break;
>                         };
>                         # we do not care about anything else but
> MESSAGEs
>                         if (!method=="MESSAGE") {
>                                 if (!t_reply("404", "Not found")) {
>                                         sl_reply_error();
>                                 };
>                         break;
>                         };
>                         log("MESSAGE received -> storing using
> MSILO\n");
>                         # MSILO - storing as offline message
>                         if (m_store("0")) {
>                                 log("MSILO: offline message stored\n");
>                                 if (!t_reply("202", "Accepted")) {
>                                         sl_reply_error();
>                                 };
>                         }else{
>                                 log("MSILO: offline message NOT
> stored\n");
>                                 if (!t_reply("503", "Service
> Unavailable")) {
>                                         sl_reply_error();
>                                 };
>                         };
>                         break;
>                 };
>                         # if the downstream UA does not support MESSAGE
> requests
>                         # go to failure_route[1]
>                         t_on_failure("1");
>                         t_relay();
>                         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();
>         };
>
> }
>
>
> failure_route[1] {
>         # forwarding failed -- check if the request was a MESSAGE
>         if (!method=="MESSAGE")
>         {
>         break;
>         };
>
>         log(1,"MSILO: the downstream UA does not support MESSAGE
> requests ...\n");
>         # we have changed the R-URI with the contact address -- ignore
> it now
>         if (m_store("1"))
>         {
>                 log("MSILO: offline message stored\n");
>                 t_reply("202", "Accepted for delivery");
>         }else{
>                 log("MSILO: offline message NOT stored\n");
>                 t_reply("503", "Service Unavailable");
>         };
> }
>
> route[2] {
>                 # ############################## #
>                 # isdngw specific configuration  #
>                 # ############################## #
>                 if(t_newtran()){
>
>                         if(method=="INVITE" || method=="BYE" ||
> method=="CANCEL"){
>
>                                 # send a response right at the start to
> avoid retransmissions
>                                 t_reply("100","Trying -- just wait a
> minute !");
>
>                                 # isdngw only gets activated on invite
> requests
>                                 if(method=="INVITE"){
>
>                                         # filename is defined in
> sems.conf.
>                                         if(uri=~"sip:[0-9]{10}@.*"){
>                                                
> if(!vm("/tmp/am_fifo","isdngw")){ log("could not contact isdngw\n");
>                                                        
> t_reply("500","could not contact isdngw"); };
>                                         # Allow the announcement module
> of sems to be used as well.
>                                         # This can be useful for testing
> the isdngw.
>                                         } else
> if(uri=~"sip:announcement at .*"){
>                                                
> if(!vm("/tmp/am_fifo","announcement")){ log("could not contact
> announcement\n");
>                                                        
> t_reply("500","could not contact announcement"); };
>                                         # we dont feel responsible for
> sip addresses of any other kind,
>                                         # so send the right error code.
>                                         } else {
>                                                 t_reply("404","Not
> Found");
>                                         };
>                                         # stop routing here, the message
> is now processed by the media server
>                                         break;
>                                 };
>
>                                 # The following handles the call
> termination, we must pass these requests
>                                 # to the media server as follows. Again
> make shure the fifo name and permissions
>                                 # are set correctly (like im sems.conf).
>                                 if((method=="BYE")||(method=="CANCEL")){
>                                                
> if(!vm("/tmp/am_fifo","bye")){ log("could not contact the media server\n");
>                                                        
> t_reply("500","could not contact the media server"); };
>                                                 break;
>                                 };
>                         # other methods than INVITE, BYE and CANCEL are
> not handled by this SIP Server
>                         # so we sent an error message
>                         } else {
>                                 log("ERROR: method not supported\n");
>                                 t_reply("500", "sorry, method not
> supported");
>                         };
>                 } else {
>                 # for any reason the transaction could not be created,
> send error code
>                 log("could not create new transaction\n");
>                 sl_send_reply("500","could not create new transaction");
>                 };
>         # in isdngw.conf. Don't change this setting.
>         t_relay();
> # end of routing.
> }
>
> route[3] {
> # 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:*@example.com" ||
> uri=~"sip:*@support.example.com") {
>                                 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");
> }
>
> route[4] {
> # 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;
>                 };
>
>                 t_reply("100","Trying -- just wait a minute !");
>                 if(method=="INVITE"){
>                         log("**************** vm start - begin
> ******************\n");
>                         if (uri=~"sip:5000 at .*") {
>                       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");
> }
>
>
>
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers




More information about the sr-users mailing list