[AsteriskBrasil] RES: [mensagem grande] Ecaminhamento (não solicitado ) de notify
Alexandre Abreu
alexandre.abreu em redt.com.br
Terça Maio 26 20:38:28 BRT 2009
O Asterisk (pelo menos o 1.4) não suporta receber o evento 'message-summary'
via NOTIFY como você ta enviando.
É melhor procurar outra abordagem ou implementar essa notificação entrante
de voicemail você mesmo :-)
--
Alexandre Abreu
RedT Telecom
http://www.redt.com.br
-----Mensagem original-----
De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de
pruonckk em pruonckk.org
Enviada em: terça-feira, 26 de maio de 2009 18:47
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: [AsteriskBrasil] [mensagem grande] Ecaminhamento (não solicitado )
de notify
Olá Amigos,
Tenho um cenários que são dois asterisk, um é onde os clientes ficam
logados e por onde as ligações são roteadas , o outro é um "servidor de
aplicação" para voicemail, conferencia e etc....
Eu estou tentando fazer com que o servidor de aplicação encaminhe uma
mensagem para os usuários SIP contendo a informação de voicemail, mas não
estou tendo muito sucesso, eu estou fazendo a verificação através do
servidor de aplicação e gerando um arquivo para ser enviado com o sipsak,
porém quando mando esta mensagem para o asterisk onde estão os usuários
sempre recebo 489 Bad Event como retorno, se eu mando diretamente para o
usuário em questão eu recebo "received ICMP message (type: 3, code: 3):
from XXX.XXX.XXX.XXX".
Infelizmente eu preciso manter separado o correio de voz do roteamento,
estou estudando ainda como fazer isso utilizando o kamailio ou opensips ,
mas no momento é asterisk com asterisk mesmo.
Abaixo coloco o trecho do script referente a pegar os dados e então gerar
o arquivo a ser enviado.
---------------------------------
for contas in $USERS; do
#REALUSER="/usr/bin/perl /usr/local/bin/verifica-vm-alias $contas"
REALUSER=$(/usr/bin/perl /usr/local/bin/verifica-vm-alias $contas)
if [ -n "$REALUSER" ]; then
#echo "OK: $REALUSER"
MAILBOX=$VM_ROOT/$VM_CONTEXT/$REALUSER
if [ ! -d ${MAILBOX} ]; then
logger -t check_vm "Erro: ${MAILBOX} nao existe"
continue
fi
TOTAL_MESSAGE=0
NEW_MESSAGES=0
OLD_MESSAGES=0
if [ -d ${MAILBOX}/INBOX ]; then
tmp=( $( ls ${MAILBOX}/INBOX/*.txt 2>/dev/null ) )
NEW_MESSAGES=${#tmp[*]}
else
NEW_MESSAGES=0
fi
if [ -d ${MAILBOX}/Old ]; then
tmp=( $( ls ${MAILBOX}/Old/*.txt 2>/dev/null ) )
OLD_MESSAGES=${#tmp[*]}
else
OLD_MESSAGES=0
fi
TOTAL_MESSAGES=$(($NEW_MESSAGES + $OLD_MESSAGES))
if [ "$NEW_MESSAGES" == "0" ]; then
HAS_NEW="no"
else
HAS_NEW="yes"
fi
CONTENT_LENGTH=$(( 34 + ${#HAS_NEW} + ${#NEW_MESSAGES} +
${#OLD_MESSAGES} ))
SEQUENCE=$( printf "%06d" $RANDOM )
(
cat <<-EOM
NOTIFY sip:${REALUSER}@${DOMAIN} SIP/2.0
From: <sip:${SIP_FROM}@${SIP_SERVER}>
To: <sip:${REALUSER}@${DOMAIN}>
Contact: <sip:${REALUSER}@${SIP_SERVER}>
Call-ID: ${SEQUENCE}@${SIP_SERVER}
CSeq: ${SEQUENCE} NOTIFY
Event: message-summary
Content-Type: application/simple-message-summary
Content-Length: ${CONTENT_LENGTH}
Messages-Waiting: ${HAS_NEW}
Voicemail: ${NEW_MESSAGES}/${OLD_MESSAGES}
EOM
) > out.msg
cat out.msg | /usr/bin/sipsak -vvv -s sip:${REALUSER}@${DOMAIN} -f -
if [ $? -ne 0 ]; then
logger -t check_vm "Erro: sipsak nao foi enviado
para $REALUSER"
fi
fi
done
exit 0
-------------------------------
Abaixo a mensagem gerada no arquivo out.msg
NOTIFY sip:_CONTA_ em _SERVIDOR_ SIP/2.0
From: <sip:asterisk em _SERVIDOR_APL_>
To: <sip:_CONTA_ em _SERVIDOR_>
Contact: <sip:_CONTA_ em _SERVIDOR_APL_>
Call-ID: 004355 em _SERVIDOR_APL_
CSeq: 004355 NOTIFY
Event: message-summary
Content-Type: application/simple-message-summary
Content-Length: 39
Messages-Waiting: yes
Message-Account: sip:_CONTA_ em _SERVIDOR_
Voice-Message: 2/0
Abaixo acrescento também o log do sipsak
No SRV record: _sip._tcp.srv1.55voip.com
No SRV record: _sip._udp.srv1.55voip.com
using A record: srv1.55voip.com
fqdnhostname: 127.0.1.1
our Via-Line: Via: SIP/2.0/UDP
127.0.1.1:58707;branch=z9hG4bK.3111a880;rport;ali
as
New message with Via-Line:
NOTIFY sip:_CONTA_ em _SERVIDOR_ SIP/2.0
Via: SIP/2.0/UDP 127.0.1.1:58707;branch=z9hG4bK.3111a880;rport;alias
From: <sip:asterisk em _SERVIDOR_APL_>
To: <sip:_CONTA_ em _SERVIDOR_>
Contact: <sip:_CONTA_ em _SERVIDOR_APL_>
Call-ID: 022643 em _SERVIDOR_APL_
CSeq: 022643 NOTIFY
Event: message-summary
Content-Type: application/simple-message-summary
Content-Length: 39
Messages-Waiting: yes
Message-Account: sip:_CONTA_ em _SERVIDOR_
Voice-Message: 2/0
request:
NOTIFY sip:_CONTA_ em _SERVIDOR_ SIP/2.0
Via: SIP/2.0/UDP 127.0.1.1:58707;branch=z9hG4bK.3111a880;rport;alias
From: <sip:asterisk em _SERVIDOR_APL_>
To: <sip:_CONTA_ em _SERVIDOR_>
Contact: <sip:_CONTA_ em _SERVIDOR_APL_>
Call-ID: 022643 em _SERVIDO_APL_
CSeq: 022643 NOTIFY
Event: message-summary
Content-Type: application/simple-message-summary
Content-Length: 39
Messages-Waiting: yes
Message-Account: sip:_SERVIDOR_CONTA_ em _SERVIDOR_APL_
Voice-Message: 2/0
send to: UDP:_SERVIDOR_:5060
message received:
SIP/2.0 489 Bad event
Via: SIP/2.0/UDP
127.0.1.1:58707;branch=z9hG4bK.3111a880;alias;received=_SERVIDOR_;rport=5870
7
From: <sip:asterisk em _SERVIDOR_APL_>
To: <sip:_CONTA_ em _SERVIDOR_>;tag=as005f3511
Call-ID: 022643 em _SERVIDOR_APL_
CSeq: 022643 NOTIFY
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Length: 0
** reply received after 0.908 ms **
SIP/2.0 489 Bad event
final received
Amigos, agradeço se alguém souber dar uma ajuda.
Mais detalhes sobre a lista de discussão AsteriskBrasil