[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