Hello!

I'm new with kamailio, so may be don't understand some basic.
I'm tryin to load balance asterisk servers with kamailio and dispatcher module. My ip phones registered at kamailio, for example:

[root@sipchel ~]# kamctl ul show 101
{
  "jsonrpc":  "2.0",
  "result": {
    "AoR":  "101",
    "Contacts": [{
        "Contact":  {
          "Address":  "sip:101@192.168.2.62;line=4733c4bfa459eea",
          "Expires":  2953,
          "Q":  -1,
          "Call-ID":  "1361221648",
          "CSeq": 136,
          "User-Agent": "Linphone/3.6.1 (eXosip2/3.6.0)",
          "Received": "[not set]",
          "Path": "[not set]",
          "State":  "CS_SYNC",
          "Flags":  0,
          "CFlags": 0,
          "Socket": "udp:192.168.10.54:5060",
          "Methods":  -1,
          "Ruid": "uloc-596f5abc-2ce5-2",
          "Instance": "[not set]",
          "Reg-Id": 0,
          "Last-Keepalive": 1500530337,
          "Last-Modified":  1500530337
        }
      }]
  },
  "id": 15024
}


I have realtime asterisk server.
[root@sipchel ~]# kamctl dispatcher dump
{
  "jsonrpc":  "2.0",
  "result": {
    "NRSETS": 1,
    "RECORDS":  [{
        "SET":  {
          "ID": 1,
          "TARGETS":  [{
              "DEST": {
                "URI":  "sip:192.168.4.16",
                "FLAGS":  "IX",
                "PRIORITY": 0
              }
            }, {
              "DEST": {
                "URI":  "sip:192.168.10.47",
                "FLAGS":  "AX",
                "PRIORITY": 0
              }
            }]
        }
      }]
  },
  "id": 15087
}


So I want if 101 call to 102 it will process by asterisk(for call recording and other features). Now if I call from 101 to 102 kamailio will forward to asterisk and asterisk dialplan cannot find that extesion(as expected, because it is not registed on asterisk)
[kamailio]
exten => _1XX,1,Dial(SIP/${EXTEN})
exten => _1XX,n,Hangup
If I change dialplan to Dial(SIP/KAMAILIO/${EXTEN}) call wil return to kamailio, but kamailio send it back to asterisk...

I hope I explained correctly, my English is terrible.
Is my screnario proper? How this usually done? Should I forward sip registrations to asterisks?




My kamailio config
# dispatcher params
modparam("dispatcher", "db_url", "mysql://kamailio:kamailiorw@localhost/kamailio")
modparam("dispatcher", "ds_ping_interval", 30)
modparam("dispatcher", "table_name", "dispatcher")
modparam("dispatcher", "flags", 2)
modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")
modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")
modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")

modparam("auth_db", "db_url", DBASTURL)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "user_column", "name")
modparam("auth_db", "password_column", "sippasswd")
modparam("auth_db", "load_credentials", "")
#modparam("auth_db", "version_table", 0)


request_route {

<------># per request initial checks
<------>route(REQINIT);

<------># NAT detection
<------>route(NATDETECT);

<------># CANCEL processing
<------>if (is_method("CANCEL")) {
<------><------>if (t_check_trans()) {
<------><------><------>route(RELAY);
<------><------>}
<------><------>exit;
<------>}

<------># handle retransmissions
<------>if (!is_method("ACK")) {
<------><------>if(t_precheck_trans()) {
<------><------><------>t_check_trans();
<------><------><------>exit;
<------><------>}
<------><------>t_check_trans();
<------>}

<------># handle requests within SIP dialogs
<------>route(WITHINDLG);

<------>### only initial requests (no To tag)

<------># authentication
<------>route(AUTH);

<------># record routing for dialog forming requests (in case they are routed)
<------># - remove preloaded route headers
<------>remove_hf("Route");
<------>if (is_method("INVITE|SUBSCRIBE")) {
<------><------>record_route();
<------>}

<------># account only INVITEs
<------>if (is_method("INVITE")) {
<------><------>setflag(FLT_ACC); # do accounting
<------>}

<------># dispatch requests to foreign domains
<------>route(SIPOUT);
------>### requests for my local domains

<------># handle presence related requests
<------>route(PRESENCE);

<------># handle registrations
<------>route(REGISTRAR);

<------>if ($rU==$null) {
<------><------># request with no Username in RURI
<------><------>sl_send_reply("484","Address Incomplete");
<------><------>exit;
<------>}

<------># dispatch destinations to PSTN
<------>route(PSTN);

<------># user location service
<------>route(LOCATION);
}

# User location service
route[LOCATION] {

#!ifdef WITH_SPEEDDIAL
<------># search for short dialing - 2-digit extension
<------>if($rU=~"^[0-9][0-9]$") {
<------><------>if(sd_lookup("speed_dial")) {
<------><------><------>route(SIPOUT);
<------><------>}
<------>}
#!endif

#!ifdef WITH_ALIASDB
<------># search in DB-based aliases
<------>if(alias_db_lookup("dbaliases")) {
<------><------>route(SIPOUT);
<------>}
#!endif

<------>$avp(oexten) = $rU;
<------>if (!lookup("location")) {
<------><------>$var(rc) = $rc;
<------><------>route(TOVOICEMAIL);
<------><------>t_newtran();
<------><------>switch ($var(rc)) {
<------><------><------>case -1:
<------><------><------>case -3:
<------><------><------><------>send_reply("404", "Not Found");
<------><------><------><------>exit;
<------><------><------>case -2:
<------><------><------><------>send_reply("405", "Method Not Allowed");
<------><------><------><------>exit;
<------><------>}
<------>}

<------># when routing via usrloc, log the missed calls also
<------>if (is_method("INVITE")) {
<------><------>setflag(FLT_ACCMISSED);
<------>}

        route(DISPATCH);
<------>route(RELAY);
<------>exit;
}

# Dispatch requests
route[DISPATCH] {
<------># round robin dispatching on gateways group '1'
<------>if(!ds_select_dst("1", "4"))
<------>{
<------>    xlog("aaaa--- SCRIPT: going to <$ru> via <$du>\n");
<------>    send_reply("404", "No destination");
<------>    exit;
<------>}
<------>xlog("--- SCRIPT: going to <$ru> via <$du>\n");
<------>t_on_failure("RTF_DISPATCH");
<------>return;
}


--
Aydar A. Kamalov