[AsteriskBrasil] [mensagem grande] Ecaminhamento (não solicitado ) de notify

pruonckk em pruonckk.org pruonckk em pruonckk.org
Terça Maio 26 18:47:18 BRT 2009


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=58707
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