[AsteriskBrasil] RES: Sinalização SIP x Asterisk

Alexandre Abreu abreu em redt.com.br
Terça Fevereiro 19 23:11:15 BRT 2008


Vamos ver se eu entendi seu e-mail.
O código que define um terminal SIP como ocupado é o 'SIP 486 - Busy here'
Então temos esse cenário:

--> INVITE
<-- TRYING
<-- SIP 486 - Busy
--> ACK

Aqui fechamos à primeira transação. Acima temos uma típica sinalização onde
o Asterisk não interpreta como 'answered' (progresso out-of-band).

Acontece que em alguns casos, dada algumas conversões de sinalização, alguns
gateways enviam o progresso de uma sessão (o tom de chamada/sinal de
ocupado) através do que chamamos de EARLY MEDIA (SIP 183/SDP), em pacotes
RTP (inband). Ainda nesse caso, temos um o progresso definido 'inband' e não
temos uma resposta final positiva (200 OK).

Se tivermos:

--> INVITE
<-- TRYING
<-- 180 RINGING 
<-- 200 OK
--> ACK

Nesse caso acima temos um cenário típico de ATENDIMENTO, e por mais que a
mensagem seja 'usuário ocupado' ou afins, o Asterisk interpreta como
'Answered' porque DE FATO o handshake de inicialização da sessão recebeu uma
resposta final positiva.

É claro que a forma como sua ligação vai ser tratada depende do nível de
interconexão que estão te oferecendo. Muitas empresas utilizam o Asterisk
pra revender seus minutos o que tornam as coisas complicadas em certos
aspectos... (Usam o maldito 'r' no Dial, fazem Playback() em caso de
ligações ocupadas, entre outras coisas desconfortáveis). 

Agora em relação à outra questão:

Não, não tem alguma forma. O Asterisk não foi concebido para responder com
códigos SIP a critério do administrador. Se tua solução realmente tende pra
este lado, você precisa de um SIP PROXY como o (Open)SER. Mais
especificamente a função sl_send_reply().

--
Alexandre Abreu
RedT Telecom
http://www.redt.com.br
 
________________________________________
De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de Gmail -
Whinston Rodrigues
Enviada em: sexta-feira, 15 de fevereiro de 2008 14:31
Para: Asterisk - Lista
Assunto: [AsteriskBrasil] Sinalização SIP x Asterisk

   Estou com duas dúvidas que estão relacionadas, então ao invés de mandar
duas mensagens, acho que seria interessante colocar tudo numa única, pois
provavelmente mais gente pode ter essa situação.

   Não sei quantos de vocês operam via interconexão SIP com suas
terminações, mas creio que exista um bom número.
   Pela experiência que tenho com várias terminações, nunca nenhuma me
enviou sinalização 100% correta, ou seja, quando o telefone de destino está
ocupado por exemplo, muitos enviando ring, outros dão uma mensagem de voz
falando que está ocupado, etc.
   O fato que está ocorrendo é que sempre que o fornecedor mandam um ACK-200
e depois passa uma gravação falando que o ramal está ocupado, o Asterisk
interpreta isso como atendida (answered) e gera bilhetagem. O fornecedor
garante que é o padrão RFC e que após a mensagem gravada, ele sinaliza como
ocupado (o que não comprei no debug).
   Alguém tem caso similar? É possível fazer o Asterisk entender que mesmo
que ocorra uma gravação, não é pra bilhetar a chamada se for informado o
código SIP que indica busy ?

   A segunda pergunta, relacionada com essa, é se tem alguma forma da gente
forçar mensagens pelo Asterisk, ou seja, quando chega uma chamada (tipo um
callback), a gente faça o tratamento adequado em cima do número entrante e
devolva códigos SIP pra plataforma que originou a chamada, de forma a melhor
identificar o ocorrido, sem a necessidade de passar o áudio (gravação
falando o que houve).

   Grato antecipadamente.



More information about the AsteriskBrasil mailing list