[AsteriskBrasil] Opensips + msg erro asterisk

marcelo ferreira marcelobaxo em hotmail.com
Quinta Outubro 14 20:16:12 BRT 2010


Fernando,
obrigado pela resposta. Detalhes:

São 2 servidores distintos em IPs diferentes (arquivos conf no final).

Serv.1: Opensips 1.6.3 
Serv.2: Asterisk 1.6 + A2Billing 1.4

UPDATE: Eu consegui "me desviar" do erro do email anterior:
Depois dos erros que estavam ocorrendo em relação ao FROM, eu fui no opensips e alterei o cabeçalho para enviar o IP no lugar do ramal de origem.
Isso fez com que o asterisk aceitasse a chamada e a encaminhasse para o contexto do Peer.

Daí, agora eu precisava dar um GOTO para o contexto do A2Billing, só que não vai dar certo porque no FROM existe um IP, e não o ramal que quero bilhetar.

Entendeu o que eu estou tentando fazer? Bilhetar no A2Billing o ramal chamador do Opensips. Você já fez alguma coisa parecida?
opensips+(asterisk+a2billing)?

Obrigado pela ajuda!

Abraços!

Marcelo Amorim Ferreira



##################### SIP.CONF
[general]
port = 5060
bindaddr = 0.0.0.0
alwaysauthreject=yes
srvlookup=yes
canreinvite=no
allow=all
defaultexpiry = 900
ignoreregexpire=yes

[208.109.223.40]
type=peer
context=opensips
host=100.101.102.103
fromdomain=100.101.102.103
insecure=very

;RAMAL DO A2BILLING
[99999]
accountcode=99999
regexten=99999
amaflags=billing
callerid=99999
canreinvite=yes
context=a2billing
dtmfmode=RFC2833
host=dynamic
nat=yes
qualify=no
secret=99999
type=friend
username=99999
disallow=all
allow=gsm
allow=g729
allow=ulaw
allow=alaw
regseconds=0
cancallforward=yes
cid_number=99999



##################### OPENSIPS.CONF

debug=3
log_stderror=no
log_facility=LOG_LOCAL0

fork=yes
children=4

port=5060

####### Modules Section ########
mpath="//lib/opensips/modules/"

loadmodule "db_mysql.so"
loadmodule "signaling.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
loadmodule "uri.so"
loadmodule "acc.so"

#maf:modulo para alterar o from
loadmodule "uac.so"
loadmodule "dialog.so" #dependencia para o uac

loadmodule "auth.so"
loadmodule "auth_db.so"

modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
modparam("rr", "enable_full_lr", 1)
modparam("usrloc", "db_mode",   0)
modparam("uri", "use_uri_table", 0)
modparam("acc", "early_media", 1)
modparam("acc", "report_ack", 1)
modparam("acc", "report_cancels", 1)
modparam("acc", "detect_direction", 0)
modparam("acc", "failed_transaction_flag", 3)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")

####### Routing Logic ########
route{

    if (!mf_process_maxfwd_header("10")) {
        sl_send_reply("483","Too Many Hops");
        exit;
    }

    if (has_totag()) {
        if (loose_route()) {
            if (is_method("BYE")) {
                setflag(1); # do accounting ...
                setflag(3); # ... even if the transaction fails
            } else if (is_method("INVITE")) {
                record_route();
            }
            route(1);
        } else {
            if ( is_method("ACK") ) {
                if ( t_check_trans() ) {
                    t_relay();
                    exit;
                } else {
                    exit;
                }
            }
            sl_send_reply("404","Not here");
        }
        exit;
    }

    if (is_method("CANCEL"))
    {
        if (t_check_trans())
            t_relay();
        exit;
    }

    t_check_trans();

    if (loose_route()) {
        xlog("L_ERR",
        "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");
        if (!is_method("ACK"))
            sl_send_reply("403","Preload Route denied");
        exit;
    }

    if (!is_method("REGISTER|MESSAGE"))
        record_route();

    if (is_method("INVITE")) {
        setflag(1); # do accounting

        if (uri =~ "sip:0[0-9]@*"){ 
            xlog("Enviado para o Asterisk!\n");
            uac_replace_from("sip:208.109.223.40 em 208.109.223.40");
              route(2);
              exit;
        };

    }

    if (!uri==myself)
    {
        append_hf("P-hint: outbound\r\n"); 
        route(1);
    }

    if (is_method("PUBLISH"))
    {
        sl_send_reply("503", "Service Unavailable");
        exit;
    }
    
    if (is_method("REGISTER"))
    {
        if (!www_authorize("208.109.223.40", "subscriber"))
        {
            www_challenge("208.109.223.40", "0");
            exit;
        }
        
        if (!db_check_to()) 
        {
            sl_send_reply("403","Forbidden auth ID");
            exit;
        }

        if (!save("location"))
            sl_reply_error();

        exit;
    }

    if ($rU==NULL) {
        sl_send_reply("484","Address Incomplete");
        exit;
    }

    if (!lookup("location","m")) {
        switch ($retcode) {
            case -1:
            case -3:
                t_newtran();
                t_reply("404", "Tone: Nao Encontrado");
                exit;
            case -2:
                sl_send_reply("405", "Method Not Allowed");
                exit;
        }
    }

    setflag(2);

    route(1);
}


route[1] {
    if (is_method("INVITE")) {
        t_on_branch("2");
        t_on_reply("2");
        t_on_failure("1");
    }

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

#asterisk
route[2] {
  rewritehostport("sip.liguetone.com.br");
  route(1);
}

branch_route[2] {
    xlog("new branch at $ru\n");
}


onreply_route[2] {
    xlog("incoming reply\n");
}

failure_route[1] {
    if (t_was_cancelled()) {
        exit;
    }
}



Date: Thu, 14 Oct 2010 14:04:26 -0300
From: fernando em 7billing.com.br
To: asteriskbrasil em listas.asteriskbrasil.org
Subject: Re: [AsteriskBrasil] Opensips + msg erro asterisk
















Boa tarde amigo.
 
Tenho esse tipo de solução rodando com Opensips 1.5, Kamailio 1.5 e Kamailio 3.0.
 
Poste como está seu sip.conf e seu openser.cfg. 
 
Os passos para esse tipo de integração é simples. Visto que o OpenSIPS deve rodar em uma porta, e o asterisl em outra, segue-se a lógica:
 

Asterisk deve estar impedido de receber REGISTER.
Asterisk só aceita chamadas do sip opensips que vc deve cadastrar como peer no sip.conf
OpenSIPS gerencia REGISTER, chamadas de voipxvoip e Roteamento para o Asteris.
Mas sem seus arquivos de configuração e uma melhor explicação do seu cenário fica meio difícil ajudar.
 
 


____________________________________
Fernando da Silva Santos
Desenvolvedor - 7Billing
http://www.7billing.com.br
-------Original Message-------
 

From: marcelo ferreira
Date: 13/10/2010 19:39:15
To: asteriskbrasil em listas.asteriskbrasil.org
Subject: [AsteriskBrasil] Opensips + msg erro asterisk
 Pessoal,
sou novato ainda nas tecnologias sip+asterisk+opensips+afins.
Mas estou trabalhando e estudando há lgum tempo.
Então, esta semana eu configurei um Opensips em um servidor (A) e o Asterisk em um servidor (B).

As primeiras configurações e testes pelos quais passei foi ligar de ramal para ramal utilizando somente o opensips. Deram OK.

A partir disso, efetuei o rewrite do osips para enviar chamadas pstn para os troncos do asterisk e serem bilhetadas no A2Billing.

Bem o problema é que agora aparece o (famoso) warning: username mismatch, have <100.200.250.1>, digest has <35418>.
Com o debug ativado, o cabeçalho é o seguinte:
O opensips está no ip 100.200.250.1
O meu softphone é o 150.150.200.132

<--- SIP read from UDP:100.200.250.1:5060 --->
INVITE sip:01799998888 em sip.liguetone.com.br SIP/2.0
Record-Route: <sip:100.200.250.1;lr=on;ftag=eubeh>
Via: SIP/2.0/UDP 100.200.250.1;branch=z9hG4bKded3.f8b73e07.0
Via: SIP/2.0/UDP 192.168.0.18:5060;received=150.150.200.132;rport=5060;branch=z9hG4bKkhfpcdbl
Max-Forwards: 69
To: <sip:01799998888 em 100.200.250.1>
From: "35418" <sip:35418 em 100.200.250.1>;tag=eubeh
Call-ID: soljjmshjthguwo em calango
CSeq: 616 INVITE
Contact: <sip:35418 em 192.168.0.18:5060>
Content-Type: application/sdp
Allow: INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,REFER,NOTIFY,SUBSCRIBE,INFO,MESSAGE
Supported: replaces,norefersub,100rel
User-Agent: Twinkle/1.4.2
Content-Length: 308

Bem, a partir dessa tentativa, o asterisk está mostrando o warning e depois responde com 403: Forbidden.

No asterisk configurei um contexto padrão "context=opensips"
e inclusive já tentei o "Autocreatepeer=yes" que não fez diferença.

Tentei utilizar no osips o uac_replace_from setando para o numero do ramal, mas fica na mesma (óbvio :)
e tentei colocar alguns cabeçalhos no osips para testar se era algum parâmetro que falta pro asterisk.

O que os senhores acham? Eu tenho de enviar/alterar algum cabeçalho pelo osips?
Eu estou fazendo dessa maneira simplesmente para poder aproveitar o meu A2Billing que já está em produção no asterisk.

Abraços e muito obrigado!

Marcelo Amorim Ferreira

 

_______________________________________________
KHOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk. 
- Hardware com alta disponibilidade de recursos e qualidade KHOMP
- Suporte t�cnico local qualificado e gratuito 
Conhe�a a linha completa de produtos KHOMP em www.khomp.com.br
_______________________________________________
Temos tudo para seu projeto VoIP com Asterisk!
Descontos especiais para assinantes da AsteriskBrasil.org.
Registre-se e receba um cupom exclusivo de desconto!
Acesse agora www.voipmania.com.br
______________________________________________
Lista de discuss�es AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscribe em listas.asteriskbrasil.org 		 	   		  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20101014/4398e866/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil