Métodos de envio de alertas

Versão para impressãoVersão para impressãoEnviar por e-mailEnviar por e-mail

Existem varios métodos para enviar uma alerta a um equipamento Motorola na rede da Nextel. Muitas vezes, enviar uma mensagem por SMS ao equipamento é suficiente para notificar ao usuário de algum evento. Mais, á muitas vezes que um aplicativo precisa não somente transmitir uma mensagem, mais também facilitar uma resposta automatizada. Neste artigo, vamos falar de um par de métodos para enviar esse tipo de notificações, e no processo estabelecer uma maneira de controlar o formato de entrada de dados, oferecer opções apropriadas ao usuário, ter um registro de quando e como foi recebida a alerta, e em geral integrar a notificação mais completamente a um fluxo de dados automatizado.

Usando UP.Notify com WAP, podemos estabelecer um processo de chamadas e respostas facilmente, sim ter que escrever um aplicativo em Java ou instalar um cliente no equipamento. Para isso, precisamos que o equipamento esteja dentro da área de cobertura.

Uso de UP.Notify
UP.Notify é uma ferramenta da tecnologia WAP que permite enviar uma alerta de dados ao equipamento. Na alerta se enviam dois dados:

  • O titulo da alerta
  • O URL a onde deve ser dirigido o usuário

Quando o usuário confirmar que deseja ver a alerta, o navegador WAP do equipamento vai ao URL que foi enviado na alerta. Esta funcionalidade permite soluções que não precisam que o usuário esteja pedindo atualizações sem que seja necessário instalar um cliente no equipamento.

Para enviar uma alerta tipo UP.notify, somente é preciso iniciar uma sessão telnet ao servidor HTTP da Nextel, ao porto estabelecido, e enviar um documento XML com as instruções certas para indicar ao gateway que precisa iniciar uma alerta com um URL ao que deve ser dirigido o navegador. A página nesse URL poderia conter informação de uma ordem de trabalho, um formulário que o usuário precisa preencher, uma notificação de um desconto numa loja próxima, uma alerta de segurança, uma notícia, ou qualquer outro tipo de conteúdo que seja importante informar ao usuário.

No exemplo que segue, vamos criar uma alerta que vai dirigir o navegador a uma página XHTML-MP que nos vai dar informação dos cabeçalhos HTTP que enviou o equipamento ao fazer a conexão (o URL indicado é uma boa ferramenta em geral para o seu processo de desenvolvimento, seja ou no com as alertas). Poderiamos indicar ao browser do aparelho visitar cualquier outra página, sempre e quando ela tenha um formato correto (XHTML-MP ou WML 1.3).

Antes de fazer qualquer coisa, precisamos saber dois dados:
- o identificador único do usuário que vai receber a alerta
- o tamanho completo da mensagem XML que vamos enviar.

O identificador x-up-subno

Cada equipamento habilitado com dados na rede da Nextel tem um endereço IP privado e estático. Além de isso, também tem um valor conhecido como o subscriber id, que é um identificador único para os serviços WAP. Este valor o transmite o navegador Openwave no cabeçalho HTTP de cuada sessão que é iniciada; o nome da variável no cabeçalho é 'HTTP_X_UP_SUBNO'.

O formato de um subscriber id é
1234567890-12345_net1.nextelinternational.com

O subscriber id não têm relação com nenhum número que seja identificável pelo usuário -- a único entidade que pode fazer a correspondência entre o subscriber id é a Nextel, ou um desenvolvedor com permissões especiais para obter acesso às nossas bases de dados. Isso faz mais difícil que o subscriber id seja mal utilizado. O subscriber id permite não somente o envio de alertas usando UP.Notify, sino que também pode ser usado como um mecanismo adicional de controle de acesso a uma solução WAP em gera.

Cada vez que o endereço IP do equipamento mudar (por exemplo, se fosse cancelado o serviço de dados) um novo subscriber ID é atribuído.

Para obter o subscriber id, temos uma pequena dificultade: precisamos fazer que o equipamento se conecte com um servidor para poder obter o subscriber ID, mais não podemos enviar uma alerta sem ter o subscriber id. Isso significa que o usuário precisa iniciar uma conexão ao nosso servidor antes de nos podermos lhe enviar uma alerta. Isso e uma vantagem e por desenho -- se fosse fácil obter o subscriber id, seria fácil lhe enviar mensagens não desejados a um assinante de Nextel.

Em produção, a Nextel pôde lhe comunicar o subscriber id ao assinante (seja você ou, se você faz desenvolvimento para um cliente, ao seu cliente). Para as nossas provas, se você precisa obter o subscriber id, visite o endereço http://programa.nii.com/headers.php desde o navegador do seu equipamento, e de alí poderá obter o subscriber id dele.

O tamanho do XML que vamos a enviar na alerta

Antes de iniciar a sessão para enviar a alerta, devemos saber quantos caracteres tem o XML que vamos enviar com a alerta. Porém, precisamos criar o XML antes de estabelecer a conexão.

O XML que vamos usar é o seguinte:

<?xml version="1.0"?>
<!DOCTYPE ALERT PUBLIC "-//PHONE.COM//DTD ALERT 1.0//EN" "http://www.phone.com/dtd/alert1.xml">
<ALERT LABEL="UP SUBNO" COUNT="1" HREF="http://developer.nii.com/waptools.wml" URGENCY="HIGH" />
</xml>

As primeira filas comunicam que estamos enviando um documento XML, e estabelecem a versão e o DTD do XML de alerta definido pela Openwave (antes conhecido como phone.com). A alerta e definida na quarta linha:

LABEL
define o texto que o usuário vai ver quando a alerta seja recebida no equipamento.
URGENCY
Especifica qual atividade debe executar o equipamento -- os resultados variam de equipamento a equipamento, então recomendamos usar HIGH para causar uma alerta visual e gerar um tono quando o equipo receba a alerta.
COUNT
É um parâmetro opcional que se pode usar para comunicar estado, mais geralmente não tem muita utilidade nos equipamentos iDEN
HREF
Si o valor de HREF já foi recebido numa alerta anterior, o equipo, em vez de adicionar uma nova alerta à caixa de recibo, vai substituir a alerta anterior; porém, si é necessário manter um registro de alertas enviadas no equipamento, o valor HREF deve permanecer sem preencher.

Este XML tem 221 caracteres em total.

Envio da alerta

Primeiro, precisamos estabelecer uma sessão com o servidor da Nextel pelo UP.Notify. Abrimos uma sessão direta ao servidor com telnet ao porto 4445

telnet net1.nextelinternational.com 4445

e de alí enviamos os comandos que vão estabelecer e controlar a sessão HTTP que vamos usar para enviar o XML ao servidor. Precisamos dizer que o servidor não vai dar confirmação nenhuma depois de enviar um de esses comandos);

POST /ntfn/add HTTP/1.0

O comando estabelece a sessão HTTP ao serviço que processa as alertas.

Depois, os cabeçalhos HTTP:

Accept: text
Content-type: application/vnd.uplanet.alert
Content-length: 185
x-up-upnotifyp-version: upnotifyp/3.0

Os três indicam que enviaremos texto de tipo alerta versão 3.0, com um conteúdo total de 221 caracteres (o tamanho do XML). Os outros cabeçalhos seguem:

x-up-subno:0000000000-000000_net1.nextelinternational.com

Os zeros são substituidos com o subscriber id que obtivemos anteriormente.

x-up-ntfn-channel:push
x-up-ntfn-ttl: 0

Os dois comandos indicam ao servidor que deve enviar a transação ao equipamento, e que deve tentar de faze-lo no número de sengudos especificados em ttl antes de fechar a conexão com um erro. Um valor de zero indica ao servidor que deve esperar o tempo máximo permitido pelo sistema.

Content-Location: http://developer.nii.com/waptools.wml

O cabeçalho Content-Location contêm o URL ao que deve ser dirigido o usuário -- é aqui onde você substituiria o URL da sua página WML ou XHTML-MP.

Depois dos cabeçalhos, devemos incluir uma linha em branco antes de enviar o XML:

<?xml version="1.0"?>
<!DOCTYPE ALERT PUBLIC "-//PHONE.COM//DTD ALERT 1.0//EN" "http://www.phone.com/dtd/alert1.xml">
<ALERT LABEL="UP SUBNO" COUNT="1" HREF="" URGENCY="HIGH" />
</xml>

Terminamos a transmissão com duas linhas em branco.

O servidor confirmará o êxito da operação indicando o seguinte:

HTTP/1.0 204 No Content
x-upnotify-response-status: 0
Content-Length: 0
x-up-upnotifyp-version: upnotifyp/3.0

Uma resposta sem conteúdo é uma resposta com êxito. Se recebemos conteúdo, ele indica o tipo de error que foi gerado -- por exemplo, se não existe um usuário com o subscriber id indicado:

HTTP/1.0 400 Invalid subscriber ID 0000000000-000000_net1.nextelinternational.com
Content-Type: text/html
x-upnotify-response-status: 205
Content-Length: 148
x-up-upnotifyp-version: upnotifyp/3.0

<HTML>
  <TITLE>Error</TITLE>
  <BODY>
    <H1>Error 400: Invalid subscriber ID 0000000000-000000_net1.nextelinternational.com</H1>
  </BODY>
</HTML>

Em caso de êxito, o usuário recebe uma alerta no equipamento. Ao ver a alerta, o usuário poderá ver a página indicada.

0
Your rating: Nenhum