Introdução ao Push

Na comunicação através do Push, o equipamento busca proativamente por comandos a executar através de requisições HTTP enviadas periodicamente ao servidor externo para o qual esteja configurado.

Quando não há nenhum comando a ser executado pelo equipamento, o servidor deve enviar uma resposta vazia. Caso contrário, o servidor deve responder o comando a ser realizado e os parâmetros correspondentes.

Após o equipamento executar o comando lido do servidor, ele envia nova requisição contendo o resultado da operação realizada. A esta requisição é esperada uma resposta vazia, que encerra a transação de Push. Após cada comando executado, o equipamento já realizará nova requisição de /push, possibilitando a execução de múltiplos comandos em sequência.

Para utilizar o Push é necessário definir alguns parâmetros de configuração descritos em push_server.

Endpoints

Um endpoint de um web server é a URL pela qual um de seus serviços pode ser acessado por uma aplicação cliente. Portanto, endpoints são interfaces entre a API e a aplicação consumidora.

A URL final para a qual os eventos serão envidados pelo equipamento será:

hostname:port/endpoint

Exemplos de Endpoints:

  • http://meuservidor.com.br/push
  • 192.168.110.200:80/push

Evento: busca de comando no servidor

O equipamento faz requisições periódicas ao servidor para verificar se há algum push do servidor.

O método HTTP usado é o GET e todos os parâmetros são enviados através da query string.

GET /push

Parâmetros

  • deviceId (int 64) : Id do equipamento que está fazendo a request.

Respostas

Retorno de comando para o equipamento

Mensagem de retorno do servidor para o equipamento após um evento de tentativa de push.

Resultado da análise da tentativa de push.

Campo Tipo Descrição
verb string Especifica o método HTTP (GET ou POST) que será utilizado para executar o comando no equipamento. O valor padrão é POST. (Opcional)
endpoint string Especifica o comando que será executado no equipamento. Consulte as seções de API para obter os comandos possíveis. (Opcional)
body string Envia os parâmetros de execução do comando no equipamento. Consulte a documentação do comando para obter os parâmetros necessários.(Opcional)
contentType string Especifica o tipo de dados que será enviado no corpo da requisição. O valor padrão é application/json. Caso o contentType seja um application/octet-stream, o conteúdo do body deve ser enviado na forma de uma única string que represente esse conteúdo em base64. (Opcional)
queryString string Envia os parâmetros de query string necessários para executar o comando. (Opcional)

Exemplo da resposta à requisição /push

{
   verb: "POST",
   endpoint: "load_objects",
   body: { object: "users" },
   contentType: "application/json"
}

Uma resposta vazia significa que não há nenhum push para ser executado.

Evento: resultado de comando

Envia o resultado da execução do push para o servidor. Essa requisição contém o resultado do comando executado no equipamento.

O método HTTP utilizado é o POST.

POST /result

Parâmetros

  • deviceId (int) : Id do equipamento que está fazendo a request. (Este parâmetro é enviado na query string)
  • response (string) : Contém a resposta dada pela API com a execução do push. Consulte a documentação do comando para informações do formato da resposta. Note que este parâmetro estará presente somente se não ocorrer erro durante a operação
  • error (string) : Especifica o erro que ocorreu durante a execução do push. Note que este parâmetro estará presente somente se ocorrer algum erro.

Exemplo de requisição

Requisição com o resultado de listar usuários.

{
    "response": {
        "users": [
            {
                "id":1,
                "registration": "Teste",
                "name": "Walter White",
                "password": "Heisenberg",
                "salt": "",
                "expires": 0,
                "user_type_id": 0,
                "begin_time": 0,
                "end_time": 0
            }
        ]
    }
}

Exemplo de resposta:

A resposta para essa requisição é vazia.