On Thu, Feb 11, 2010 at 3:21 PM, Chandrakant Solanki <solanki.chandrakant@gmail.com> wrote:


On Thu, Feb 11, 2010 at 2:58 PM, Daniel-Constantin Mierla <miconda@gmail.com> wrote:


On 2/11/10 9:34 AM, Chandrakant Solanki wrote:


On Thu, Feb 11, 2010 at 10:26 AM, Chandrakant Solanki <solanki.chandrakant@gmail.com> wrote:


On Wed, Feb 10, 2010 at 11:07 PM, Daniel-Constantin Mierla <miconda@gmail.com> wrote:
Hello,

check your config whether you send a reply and do xlog("Method not supported...") before getting to your condition.

Cheers,
Daniel


On 2/10/10 10:46 AM, Chandrakant Solanki wrote:
Hi

below line is in my configuration...


loadmodule "pua.so"
modparam("pua", "db_url", "mysql://kamailio:kamailio@172.16.0.10:3306/kamailio")
modparam("pua", "db_table", "pua")

----
----

        if(is_method("NOTIFY") && src_ip==172.16.0.15) {
                xlog("L_INFO", "NOTIFY Method found\n");
                if(!t_relay()){
                        sl_reply_error();
                }
        }
----
----


I found following error in log...

Feb 10 15:14:40 kamailio_1 /sbin/kamailio[5597]: Method not supported - M=NOTIFY RURI=sip:172.16.0.15 F=sip:2222222@pbxusers.net T=sip:172.16.0.15 IP=172.18.100.89 ID=17dd4bb9-81d132a0@172.18.100.89

--
Regards,

Chandrakant Solanki
_______________________________________________ Kamailio (OpenSER) - Users mailing list Users@lists.kamailio.org http://lists.kamailio.org/cgi-bin/mailman/listinfo/users http://lists.openser-project.org/cgi-bin/mailman/listinfo/users

-- 
Daniel-Constantin Mierla
eLearning class for Kamailio 3.0.0
* http://www.asipto.com/
      

Hi

Thanks for quick reply,

I didn't specify xlog("Method not supported...") any where...  which module is require to work with NOTIFY method...

--
Regards,

Chandrakant Solanki

Hi

I am implementing MWI and for that i am using http://lists.iptel.org/pipermail/serusers/2004-September/011552.html when I executed sipsak, gives error on kamailio NOTIFY method not supported....

what asterisk version are you using? Latest asterisks have support for MWI, you just need to send SUBSCRIBE to it and asterisk will send NOTIFY back, no need for sipsak workaround.

If you can send the config, some of us can spot if that is generated by kamailio. As said in a previous email, kamailio basically does not care about sip message methods, it can support anything, it is a matter of what routing logic you put in config.

Cheers,
Daniel


NOTIFY sip:1111111@test.com SIP/2.0
From: 2222222 <sip:2222222@test.com>
To: <sip:1111111@test.com>
Contact: <sip:2222222@test.com>
Call-ID: 022270@172.18.100.73
CSeq: 022270 NOTIFY
Event: message-summary
Content-Type: application/simple-message-summary
Accept: application/simple-message-summary
Content-Length: 38

Messages-Waiting: Yes
Message-Account: sip:1111111@test.com
Voicemail: 4/0



--
Regards,

Chandrakant Solanki
_______________________________________________ Kamailio (OpenSER) - Users mailing list

-- 
Daniel-Constantin Mierla
eLearning class for Kamailio 3.0.0
* http://www.asipto.com/

Hi

Thanks for reply.

Here is my config file.. I am using asterisk 1.6.0.5

listen = 0.0.0.0
port = 5060
mpath = "/lib/kamailio/modules"
debug = 9
fork = yes
disable_tcp = no
log_facility = LOG_LOCAL0
log_stderror = no
dns = no
rev_dns = no

loadmodule "usrloc.so"
modparam("usrloc", "user_column", "username")
modparam("usrloc", "domain_column", "domain")
modparam("usrloc", "contact_column", "contact")
modparam("usrloc", "expires_column", "expires")
modparam("usrloc", "q_column", "q")
modparam("usrloc", "callid_column", "callid")
modparam("usrloc", "cseq_column", "cseq")
modparam("usrloc", "methods_column", "methods")
modparam("usrloc", "flags_column", "flags")
modparam("usrloc", "user_agent_column", "user_agent")
modparam("usrloc", "received_column", "received")
modparam("usrloc", "socket_column", "socket")
modparam("usrloc", "use_domain", 0)
modparam("usrloc", "desc_time_order", 0)
modparam("usrloc", "timer_interval", 60)
modparam("usrloc", "db_url", "mysql://openser:openserrw@172.18.100.73/openser")
modparam("usrloc", "db_mode", 1)
modparam("usrloc", "matching_mode", 0)
modparam("usrloc", "cseq_delay", 20)
modparam("usrloc", "nat_bflag", 6)

loadmodule "pv.so"

loadmodule "registrar.so"
modparam("registrar", "default_expires", 3600)
modparam("registrar", "min_expires", 60)
modparam("registrar", "max_expires", 0)
modparam("registrar", "default_q", 0)
modparam("registrar", "append_branches", 1)
modparam("registrar", "case_sensitive", 0)
modparam("registrar", "received_param", "received")
modparam("registrar", "max_contacts", 100)
modparam("registrar", "retry_after", 0)
modparam("registrar", "method_filtering", 0)
modparam("registrar", "path_mode", 2)
modparam("registrar", "path_use_received", 0)
modparam("registrar", "received_avp", "$avp(i:801)")

loadmodule "rr.so"
modparam("rr", "enable_full_lr", 0)
modparam("rr", "append_fromtag", 1)
modparam("rr", "enable_double_rr", 1)
modparam("rr", "add_username", 0)

loadmodule "tm.so"
modparam("tm", "fr_timer", 3)
modparam("tm", "fr_inv_timer", 35)
modparam("tm", "wt_timer", 5)
modparam("tm", "delete_timer", 2)
modparam("tm", "ruri_matching", 1)
modparam("tm", "via1_matching", 1)
modparam("tm", "unix_tx_timeout", 2)
modparam("tm", "restart_fr_on_each_reply", 1)
modparam("tm", "pass_provisional_replies", 0)
modparam("tm", "fr_inv_timer_avp", "$avp(s:callee_fr_inv_timer)")

loadmodule "xlog.so"
modparam("xlog", "buf_size", 4096)
modparam("xlog", "force_color", 0)

loadmodule "mi_fifo.so"
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")

loadmodule "domain.so"
modparam("domain", "db_url", "mysql://openser:openserrw@172.18.100.73/openser")
modparam("domain", "db_mode", 1)
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "domain")

loadmodule "nathelper.so"
#modparam("nathelper", "natping_interval", 60)
#modparam("nathelper", "ping_nated_only", 1)
#modparam("nathelper", "rtpproxy_sock", "unix:/var/run/rtpproxy.sock")
#modparam("nathelper", "rtpproxy_disable_tout", 60)
#modparam("nathelper", "rtpproxy_tout", 1)
#modparam("nathelper", "rtpproxy_retr", 5)
modparam("nathelper", "sipping_method", "OPTIONS")
modparam("nathelper", "received_avp", "$avp(i:801)")

loadmodule "textops.so"

loadmodule "sl.so"
modparam("sl", "enable_stats", 1)

loadmodule "maxfwd.so"
modparam("maxfwd", "max_limit", 256)

loadmodule "db_mysql.so"
modparam("db_mysql", "ping_interval", 300)
modparam("db_mysql", "auto_reconnect", 1)

loadmodule "auth.so"
modparam("auth", "nonce_expire", 300)
modparam("auth", "rpid_suffix", ";party=calling;id-type=subscriber;screen=yes")
modparam("auth", "rpid_avp", "$avp(s:rpid)")

loadmodule "auth_db.so"
modparam("auth_db", "db_url", "mysql://openser:openserrw@172.18.100.73/openser")
modparam("auth_db", "user_column", "username")
modparam("auth_db", "domain_column", "domain")
modparam("auth_db", "password_column", "password")
modparam("auth_db", "password_column_2", "ha1b")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "use_domain", 1)
modparam("auth_db", "load_credentials", "$avp(s:caller_uuid)=uuid")

loadmodule "uri_db.so"
modparam("uri_db", "db_url", "mysql://openser:openserrw@172.18.100.73/openser")

loadmodule "avpops.so"
modparam("avpops", "db_url", "mysql://openser:openserrw@172.18.100.73/openser")
modparam("avpops", "avp_table", "usr_preferences")
modparam("avpops", "use_domain", 1)
modparam("avpops", "uuid_column", "uuid")
modparam("avpops", "username_column", "username")
modparam("avpops", "domain_column", "domain")
modparam("avpops", "attribute_column", "attribute")
modparam("avpops", "value_column", "value")
modparam("avpops", "type_column", "type")

loadmodule "lcr.so"
modparam("lcr", "db_url", "mysql://openser:openserrw@172.18.100.73/openser")
modparam("lcr", "gw_table", "gw")
modparam("lcr", "gw_name_column", "gw_name")
modparam("lcr", "ip_addr_column", "ip_addr")
modparam("lcr", "port_column", "port")
modparam("lcr", "uri_scheme_column", "uri_scheme")
modparam("lcr", "transport_column", "transport")
modparam("lcr", "grp_id_column", "grp_id")
modparam("lcr", "lcr_table", "lcr")
modparam("lcr", "strip_column", "strip")
modparam("lcr", "prefix_column", "prefix")
modparam("lcr", "from_uri_column", "from_uri")
modparam("lcr", "priority_column", "priority")
modparam("lcr", "flags_avp", "$avp(i:712)")
modparam("lcr", "gw_uri_avp", "$avp(i:1400)")
modparam("lcr", "ruri_user_avp", "$avp(i:1402)")
modparam("lcr", "fr_inv_timer_avp", "$avp(s:fr_inv_timer_avp)")
modparam("lcr", "fr_inv_timer", 90)
modparam("lcr", "fr_inv_timer_next", 30)
modparam("lcr", "rpid_avp", "$avp(s:rpid)")

loadmodule "alias_db.so"
modparam("alias_db", "db_url", "mysql://openser:openserrw@172.18.100.73/openser")
modparam("alias_db", "user_column", "username")
modparam("alias_db", "domain_column", "domain")
modparam("alias_db", "alias_user_column", "alias_username")
modparam("alias_db", "alias_domain_column", "alias_domain")
modparam("alias_db", "use_domain", 0)

loadmodule "uac.so"
modparam("uac", "rr_store_param", "vsf")
modparam("uac", "from_restore_mode", "auto")
modparam("uac", "from_passwd", "s1p:Wiz4rd!")

loadmodule "acc.so"
modparam("acc", "db_url", "mysql://openser:openserrw@172.18.100.73/openser")
# flag to record to db
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
# flag to log to syslog
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
# use extra accounting to record caller and callee username/domain
# - take them from From URI and R-URI
modparam("acc", "log_extra", "src_user=$fU;src_domain=$fd;dst_user=$rU;dst_domain=$rd")
modparam("acc", "db_extra", "src_user=$fU;src_domain=$fd;dst_user=$rU;dst_domain=$rd")

loadmodule "mi_datagram.so"
modparam("mi_datagram", "socket_name", "udp:127.0.0.1:8080" )
modparam("mi_datagram", "children_count", 3 )
modparam("mi_datagram", "unix_socket_mode", 0600 )
modparam("mi_datagram", "unix_socket_group", "root" )
modparam("mi_datagram", "unix_socket_user", "root" )
modparam("mi_datagram", "socket_timeout", 2000 )

loadmodule "mediaproxy.so"
modparam("mediaproxy", "mediaproxy_socket", "/var/run/mediaproxy/dispatcher.sock")
modparam("mediaproxy", "mediaproxy_timeout", 500)
modparam("mediaproxy", "signaling_ip_avp", "$avp(s:nat_ip)")
modparam("mediaproxy", "media_relay_avp", "$avp(s:media_relay)")

#MWI
loadmodule "exec.so"
loadmodule "presence.so"
modparam("presence", "server_address", "sip:172.18.100.73:5060")
modparam("presence", "presentity_table", "presentity")
modparam("presence", "db_url", "mysql://openser:openserrw@172.18.100.73/openser")


loadmodule "presence_mwi.so"
route[0]
{
        xlog("L_INFO", "New Request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        force_rport();

        if(msg:len > max_len)
        {
                xlog("L_INFO", "Message too big - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                sl_send_reply("513", "Message Too Big");
                exit;
        }
        if (!mf_process_maxfwd_header("10"))
        {
                xlog("L_INFO", "Too many hops - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                sl_send_reply("483", "Too Many Hops");
                exit;
        }
        if(!is_method("REGISTER"))
        {
                if(nat_uac_test("19"))
                {
                        record_route(";nat=yes");
                }
                else
                {
                        record_route();
                }
        }
    if (is_method("SUBSCRIBE")) {
        handle_subscribe();
        xlog("L_INFO", "SUBSCRIBE Method\n");
        }

    if(is_method("PUBLISH"))
    {
xlog("L_INFO", "PUBLISH Metdho\n" );
        if($hdr(Sender)!= NULL) {
            handle_publish("$hdr(Sender)");
            xlog("L_INFO", "PUBLISH with $hdr(Sender)");
        }
        else {
            handle_publish();
            xlog("L_INFO", "PUBLISH with ....");
        }
        t_release();
    }

        if(is_method("CANCEL") || is_method("BYE"))
        {
                end_media_session();
        }
        if(loose_route())
        {
                if(nat_uac_test("19") || search("^Route:.*;nat=yes"))
                {
                        fix_nated_contact();
                        setbflag(6);
                }
                route(8);
        }
        if(is_method("REGISTER"))
        {
                route(7);
        }
        if(is_method("INVITE"))
        {
#                use_media_proxy();
                route(9);
        }
#       if(is_method("NOTIFY")){
#               xlog("L_INFO", "NOTIFY Method found\n");

#               if(!t_relay()){
#                       sl_reply_error();
#                       xlog("L_INFO", "t_relay failed\n" );
#               }
#               else {
#                       xlog("L_INFO", "t_relay success\n" );
#               }
#       }
#       if(is_method("SUBSCRIBE")){
#               xlog("L_INFO", "SUBSCRIBE Method found\n");
#               if(!www_authorize("", "subscriber")){
#                       www_challenge("", "0");
#               }
#               exec_msg("/usr/bin/mwi/subscribe $fu");
#               xlog("L_INFO", "SUBSCRIBE script is executed\n");
#       }
        if(is_method("CANCEL") || is_method("ACK"))
        {
                route(13);
        }
        route(14);
}

########################################################################
# Request route 'clear-usr-preferences-caller'
########################################################################
route[1]
{
        xlog("L_INFO", "Clear caller preferences - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        avp_delete("$avp(s:caller_cli)/g");
        avp_delete("$avp(s:clir)/g");
}

########################################################################
# Request route 'clear-usr-preferences-callee'
########################################################################
route[2]
{
        xlog("L_INFO", "Clear callee preferences - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        avp_delete("$avp(s:callee_fr_inv_timer)/g");
        avp_delete("$avp(s:cfu)/g");
        avp_delete("$avp(s:cfc)/g");
}

########################################################################
# Request route 'usr-preferences-caller'
########################################################################
route[3]
{
        route(1);
        xlog("L_INFO", "Load caller preferences for uuid '$avp(s:caller_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        # load caller avps
        avp_db_load("$avp(s:caller_uuid)", "*");
        avp_copy("$avp(s:cli)", "$avp(s:caller_cli)/d");
        if(is_avp_set("$avp(s:clir)/n") && avp_check("$avp(s:clir)", "eq/i:1"))
        {
                # mark for anonymization
                setflag(28);
        }
}

########################################################################
# Request route 'usr-preferences-callee'
########################################################################
route[4]
{
        xlog("L_INFO", "Load callee preferences for uuid '$avp(s:callee_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        # load callee avps
        avp_db_load("$avp(s:callee_uuid)", "*");
        if(is_avp_set("$avp(s:cfu)/s"))
        {
                xlog("L_INFO", "Call-forward-unconditional to '$avp(s:cfu)' found - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                avp_delete("$avp(s:caller_uuid)/g");
                avp_copy("$avp(s:callee_uuid)", "$avp(s:caller_uuid)/d");
                avp_pushto("$ru", "$avp(s:cfu)");

                route(3);
                route(10);
                exit;
        }
        if(is_avp_set("$avp(s:ringtimeout)/n"))
        {
                xlog("L_INFO", "Setting ring timeout to $avp(s:ringtimeout) secs - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                avp_copy("$avp(s:ringtimeout)", "$avp(s:callee_fr_inv_timer)/d");
        }
}

########################################################################
# Request route 'clir'
########################################################################
route[5]
{
        if(isflagset(28) && !isflagset(27))
        {
                setflag(27);

                xlog("L_INFO", "Anonymize caller - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                uac_replace_from("Anonymous","sip:anonymous@anonymous.invalid");
                if(is_present_hf("Privacy"))
                {
                        remove_hf("Privacy");
                }
                append_hf("Privacy: id\r\n");
        }
}

########################################################################
# Request route 'stop-rtp-proxy'
########################################################################
route[6]
{
        if(isflagset(22))
        {
                end_media_session();
        }
}

########################################################################
# Request route 'base-route-register'
########################################################################
route[7]
{
        sl_send_reply("100", "Trying");
        if(!www_authorize("", "subscriber"))
        {
                xlog("L_INFO", "Register authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                www_challenge("", "0");
                exit;
        }
        if(!check_to())
        {

                xlog("L_INFO", "Spoofed To-URI detected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                sl_send_reply("403", "Spoofed To-URI Detected");
                exit;
        }
        consume_credentials();
        if(!search("^Contact:[ ]*\*") && nat_uac_test("19"))
        {
                fix_nated_register();
                setbflag(6);
        }

        if(!save("location"))
        {
                xlog("L_ERR", "Saving contact failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                sl_reply_error();
                exit;
        }
        xlog("L_INFO", "Registration successful - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        exit;
}

########################################################################
# Request route 'base-outbound'
########################################################################
route[8]
{
        if(is_present_hf("P-Asserted-Identity"))
        {
                remove_hf("P-Asserted-Identity");
        }
        if(is_present_hf("Remote-Party-ID"))
        {
                remove_hf("Remote-Party-ID");
        }
        if(is_avp_set("$avp(s:caller_cli)/s"))
        {
                if(!isflagset(28))
                {
                        xlog("L_INFO", "Set caller CLI '$avp(s:caller_cli)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                        append_hf("P-Asserted-Identity: <$avp(s:caller_cli)>\r\n");
                }
        }

        route(5);
        if(isbflagset(6))
        {
                if(!isflagset(22) && !search("^Content-Length:[ ]*0"))
                {
                        setflag(22);
            use_media_proxy();
                }
                t_on_reply("2");
        }
        else
        {
                t_on_reply("1");
        }
        if(!isflagset(21))
        {
                t_on_failure("2");
        }
        if(isflagset(29))
        {
                append_branch();
        }
        if(is_present_hf("Proxy-Authorization"))
        {
                consume_credentials();
        }

        xlog("L_INFO", "Request leaving server, D-URI='$du' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        # no 100 (we already sent it) and no DNS blacklisting
        if(!t_relay("0x05"))
        {
                sl_reply_error();
                if(is_method("INVITE") && isbflagset(6))
                {
                        end_media_session();
                }
        }
        exit;
}

########################################################################
# Request route 'base-route-invite'
########################################################################
route[9]
{
        sl_send_reply("100", "Trying");
        if(from_gw())
        {
                $avp(s:caller_uuid)="0";
                xlog("L_INFO", "Call from PSTN' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                setflag(23);
                $avp(s:ringtimeout)=1000;

                route(3);
                if (nat_uac_test("3"))
        {
                        xlog("L_INFO", "Inside NATed INVITE Processing\n");
                        fix_nated_contact();
                        fix_nated_sdp("3");

                        t_on_reply("1");
                }
                else
        {
                    t_on_reply("1");
                }

                if(nat_uac_test("19"))
                {
                        fix_nated_contact();
                        setbflag(6);
                }

                route(51);
        }
        else
        {
                if(!proxy_authorize("", "subscriber"))
                {
                        xlog("L_INFO", "Proxy authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                        proxy_challenge("", "0");
                        exit;
                }
                if(!check_from())
                {
                        xlog("L_INFO", "Spoofed From-URI detected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                        sl_send_reply("403", "Spoofed From-URI Detected");
                        exit;
                }

                route(3);
                if(nat_uac_test("19"))
                {
                        fix_nated_contact();
                        setbflag(6);
                }
                route(10);
        }
}

########################################################################
# Request route 'invite-find-callee'
########################################################################
route[10]
{
        if(alias_db_lookup("dbaliases"))
        {
                xlog("L_INFO", "Callee was aliased - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        }

        route(2);
        if(!is_domain_local("$rd"))
        {
                setflag(20);
                $avp(s:callee_uuid) = "0";
                route(12);
        }
        avp_delete("$avp(s:callee_uuid)");
        avp_db_query("select uuid from subscriber where username = '$rU'", "$avp(s:callee_uuid)");
        if(is_avp_set("$avp(s:callee_uuid)/s"))
        {
                xlog("L_INFO", "Callee is local, uuid='$avp(s:callee_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                route(11);
        }
        else
        {
                $avp(s:callee_uuid) = "0";
                xlog("L_INFO", "Callee is not local - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
#
#        *86 - sending user direct to access voicemail from sip client
#
                if($rU=="*86")
                {
                        route(12);
                }
                else
                {
                        if($(rU{s.len})<=7)
                        {
                                route(11);
                        }
                        else
                        {
                                route(12);
                        }
                }
        }
        exit;
}

########################################################################
# Request route 'invite-to-internal'
########################################################################

route[11]
{
        route(4);
        revert_uri();
        seturi("sip:*89@openser.org");

        rewritehostport("voicemailserver.testpbx.com:5060");
        route(8);
        exit;
}

########################################################################
# TEST ROUTE 51
########################################################################
route[51]
{
        if(alias_db_lookup("dbaliases"))
        {
                xlog("L_INFO", "Callee was aliased - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        }

        route(2);
        if(!is_domain_local("$rd"))
        {
                setflag(20);
                $avp(s:callee_uuid) = "0";
                route(12);
        }
        avp_delete("$avp(s:callee_uuid)");
        avp_db_query("select uuid from subscriber where username = '$rU'", "$avp(s:callee_uuid)");
        if(is_avp_set("$avp(s:callee_uuid)/s"))
        {
                xlog("L_INFO", "Callee is local, uuid='$avp(s:callee_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                route(52);
        }
        else
        {
                $avp(s:callee_uuid) = "0";
                xlog("L_INFO", "Callee is not local - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                route(12);
        }
        exit;
}

########################################################################
#TEST 52
########################################################################
route[52]
{
        route(4);
        if(!lookup("location"))
        {
                xlog("L_INFO", "Local user offline - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                sl_send_reply("404", "User Offline");
        }
        else
        {
                xlog("L_INFO", "Local user online - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                route(8);
        }
        exit;
}

########################################################################
# Request route 'invite-to-external'
########################################################################
route[12]
{
        if(isflagset(20))
        {
                xlog("L_INFO", "Call to foreign domain - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                route(8);
                exit;
        }
        if(!isflagset(23))
        {
                if(uri =~ "^sip:\*86@.*")
                {
                           xlog("L_INFO", "User accessing Voicemail - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                     rewritehostport("voicemailserver.testpbx.com:5060");
                route(8);
                }
                # don't allow calls relaying from PSTN to PSTN, if not explicitely forwarded
                else if(uri =~ "^sip:[0-9]+@")
                {
                        # only route numeric users to PSTN
                        if(!load_gws())
                        {
                                xlog("L_ERR", "Error loading PSTN gateways - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                                sl_send_reply("503", "PSTN Termination Currently Unavailable");
                                exit;
                        }
                        if(!next_gw())
                        {
                                xlog("L_ERR", "No PSTN gateways available - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                                sl_send_reply("503", "PSTN Termination Currently Unavailable");
                                exit;
                        }
                        setflag(21);
                        t_on_failure("1");
                        route(8);
                }
        }

        xlog("L_INFO", "Call to unknown user - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        sl_send_reply("404", "User Not Found");
        exit;
}

########################################################################
# Request route 'base-route-local'
########################################################################
route[13]
{
        t_on_reply("1");
        if(t_check_trans())
        {
                xlog("L_INFO", "Request leaving server - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        }
        else
        {
                xlog("L_INFO", "Dropping mis-routed request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                exit;

        }
        if(!t_relay())
        {
                sl_reply_error();
        }
        exit;
}


########################################################################
# Request route 'base-route-generic'
########################################################################
route[14]
{
        xlog("L_INFO", "Method not supported - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        sl_send_reply("501", "Method Not Supported Here");
        exit;
}

########################################################################
# Request route 'base-filter-failover'
########################################################################
route[15]
{
        if(!t_check_status("408|500|503"))
        {
                xlog("L_INFO", "No failover routing needed for this response code - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                route(6);
                exit;
        }
}


########################################################################
#Send the call out
########################################################################

route[16]
{
    #send the call outward
     if(method=="INVITE" && !isflagset(10))
     {
          t_on_failure("2");
     }
 
     if (!t_relay())
    {
          xlog("L_WARN", "ERROR: t_relay failed");
          sl_reply_error();
    }
}

########################################################################
# Request route 'Voicemail and Asterisk for further processing'
########################################################################
failure_route[3]
{
         if(!t_was_cancelled())
         {
              revert_uri();
              rewritehostport("voicemailserver.testpbx.com:5060");
              append_branch();
              #PREVENT SOME CRAZY VOICEMAIL LOOP
                xlog("L_INFO", "No Answer Sending the call to Voicemail  - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
               setflag(10);
               route(8);
     }
}

########################################################################
# Reply route 'base-standard-reply'
########################################################################
onreply_route[1]
{
        xlog("L_INFO", "Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n");
        if (nat_uac_test("1"))
        {
            fix_nated_contact();
        }
        exit;
}

########################################################################
# Reply route 'base-nat-reply'
########################################################################
onreply_route[2]
{
        xlog("L_INFO", "NAT-Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n");
        if(nat_uac_test("1"))
        {
                fix_nated_contact();
                xlog("L_INFO", "NAT-Reply==[Fix_nated_contact] - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n");
        }

        if(isbflagset(6) && status=~"(180)|(183)|2[0-9][0-9]")
        {
                if(!search("^Content-Length:[ ]*0"))
                {
                        use_media_proxy();
                        xlog("L_INFO", "NAT-Reply==[Force Rtp proxy] - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n");
                }
        }
        exit;
}

########################################################################
# Failure route 'pstn-failover'
########################################################################
failure_route[1]
{
        xlog("L_INFO", "Failure route for PSTN entered - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        route(15);
        if(!next_gw())
        {
                xlog("L_ERR", "Failed to select next PSTN gateway - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                route(6);
                exit;
        }

        t_on_failure("3");
        route(8);
}

########################################################################
# Failure route 'base-standard-failure'
########################################################################
failure_route[2]
{
        if(!t_was_cancelled())
        {
                revert_uri();
                route(10);
        }
        if(t_check_status("422|481|487"))
        {
                xlog("L_INFO", "Final reply - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                route(6);
                exit;
        }

        t_on_branch("1");
        xlog("L_INFO", "Redirect from UAC intercepted - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
        route(10);
        if($avp(s:cfc) != NULL)
        {
                avp_pushto("$ru", "$avp(s:cfc)");
                setflag(29);
                append_branch();

                t_on_branch("1");
                xlog("L_INFO", "CFC detected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                route(10);
        }

        route(15);
        route(6);
}

########################################################################
# Branch route 'cfc-drop-local'
########################################################################
branch_route[1]
{
        if(is_domain_local("$rd"))
        {
                xlog("L_INFO", "Dropping local branch - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
                drop();
        }
}




--
Regards,

Chandrakant Solanki
Hi Daniel

I have uploaded my config file but it's need admin approval..


--
Regards,

Chandrakant Solanki