MPI/API/EvtUser
De uTech Tecnologia
(Diferença entre revisões)
(→Exemplo) |
(→Buitl-in Respose) |
||
(18 edições intermediárias de um usuário não apresentadas) | |||
Linha 6: | Linha 6: | ||
== Evento == | == Evento == | ||
− | {| class="wikitable" width=" | + | {| class="wikitable" width="75%" |
! align="center" colspan="2" | Parâmetros enviados pelo Porteiro | ! align="center" colspan="2" | Parâmetros enviados pelo Porteiro | ||
|- | |- | ||
Linha 12: | Linha 12: | ||
|- | |- | ||
| align="left"| '''user''' || '''Usuário utilizado na tentativa de acesso''' | | align="left"| '''user''' || '''Usuário utilizado na tentativa de acesso''' | ||
+ | |- | ||
+ | | align="left"| '''password''' || '''Senha utilizada na tentativa de acesso''' | ||
|- | |- | ||
| align="left"| '''state''' || '''Status da tentativa de acesso com usuário e senha''' | | align="left"| '''state''' || '''Status da tentativa de acesso com usuário e senha''' | ||
* '''blocked''': Usuário bloqueado. | * '''blocked''': Usuário bloqueado. | ||
* '''granted''': Usuário liberado. | * '''granted''': Usuário liberado. | ||
+ | * '''doublepass''': Passagem dupla detectada (Utilizado para controle de dupla passagem). | ||
+ | * '''detected''': Enviado quando o equipamento não está configurado no modo ''stadalone''. Evento é repassado para a aplicação de terceiros. | ||
+ | * '''panic''': Estado enviado quando o usuário estiver configurado como '''Pânico''' (Campo '''Habilitar Pânico''' de cada usuário do porteiro). | ||
+ | |- | ||
+ | | align="left"| '''interface''' || Identificação da interface acessada/acionada. | ||
+ | * '''0''': Interface de acionamento 1 e 2 do porteiro (Quando selecionado para acionamento simultâneo das interfaces 1 e 2) | ||
+ | * '''1''': Interface de acionamento 1 do porteiro. | ||
+ | * '''2''': Interface de acionamento 2 do porteiro. | ||
+ | * '''3 a 32''': Interface de acionamento externo. Leitor ou Porteiro ''slave''. Ver [[MPI/ConfiguracaoWEB#Leitores|Leitores Externos]] | ||
+ | |- | ||
+ | | align="left"| '''key''' || Chave primária do usuário (Se configurado). | ||
|- | |- | ||
− | | align="left"| ''' | + | | align="left"| '''time''' || Data/Hora do evento no formato '''ddmmYYYYHHMMSS''' onde: |
+ | * '''dd''': Dia do mês. (01 a 31) | ||
+ | * '''mm''': Mês do ano. (01 a 12). | ||
+ | * '''YYYY''': Ano no formato 1970. | ||
+ | * '''HH''': Hora do dia no formato 24H. (00 a 23). | ||
+ | * '''MM''': Minuto da hora. (00 a 59). | ||
+ | * '''SS''': Segundo. (00 a 59). | ||
|} | |} | ||
Linha 24: | Linha 43: | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! style="text-align: left; font-weight: bold;" | <pre>http://ip:porta/url/?request=user&user= | + | ! style="text-align: left; font-weight: bold;" | <pre>http://ip:porta/url/?request=user&user=1234&password=4567&interface=14&state=granted&time=26032019113933 |
</pre> | </pre> | ||
|} | |} | ||
+ | |||
+ | '''Ou para pânico''': | ||
+ | {| class="wikitable" | ||
+ | ! style="text-align: left; font-weight: bold;" | <pre>http://ip:porta/url/?request=user&user=4567&password=7890&interface=14&state=panic&time=26032019113544 | ||
+ | </pre> | ||
+ | |} | ||
+ | |||
+ | |||
'''Resposta:''' A aplicação deve responder: | '''Resposta:''' A aplicação deve responder: | ||
Linha 32: | Linha 59: | ||
* '''401''' => Erro de Autenticação. | * '''401''' => Erro de Autenticação. | ||
* '''200''' => OK. | * '''200''' => OK. | ||
+ | |||
+ | <br/><br/> | ||
+ | === Buitl-in Respose === | ||
+ | |||
+ | No próprio evento, é possível executar outros comandos, inserindo no corpo da resposta (no caso '''200 OK''') enviado pela aplicação, um ''array'' com os dados do comando a ser executado. Os parâmetros aceiros são descritos abaixo: | ||
+ | |||
+ | {| class="wikitable" width="65%" | ||
+ | ! align="center" colspan="2" | Parâmetros enviados para o Porteiro | ||
+ | |- | ||
+ | | align="left"| request || Comando a ser enviado. Comandos aceitos: '''relay''' ou '''play'''. | ||
+ | |- | ||
+ | | align="left"| interface || '''Para relay''': Define qual relê será habilitado ou desligado | ||
+ | * '''0''': Ambas interfaces (1 e 2). | ||
+ | * '''1''': Interface 1. | ||
+ | * '''2''': Interface 2. | ||
+ | |- | ||
+ | | align="left"| state || '''Para relay''': Define o estado do relê: | ||
+ | * '''on:''' => Ligado | ||
+ | * '''off:''' => Desligado | ||
+ | * '''hold:''' => Mantem aberta porta/relê até receber um evento '''off''' da API ou um comando externo (ex. interface WEB, DTMF). | ||
+ | |- | ||
+ | | align="left"| message || '''Para play''': Define a mensagem a reproduzir. Ver mensagens na documentação do comando [[MPI/API/PlayMessage|'''PlayMessage''']] | ||
+ | |} | ||
+ | |||
+ | '''Exemplo - acionando o relê para abertura da interface 1''': | ||
+ | {| class="wikitable" | ||
+ | ! style="text-align: left; font-weight: bold;" | <pre>HTTP/1.1 200 OK | ||
+ | Content-Type: application/json | ||
+ | Content-Length: 167 | ||
+ | { | ||
+ | "request" :"relay", | ||
+ | "interface": "1", | ||
+ | "state" :"on" | ||
+ | } | ||
+ | </pre> | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | '''Exemplo - acionando o relê para abertura da interface 1 e reproduzindo a mensagem de ''acesso liberado''''': | ||
+ | {| class="wikitable" | ||
+ | ! style="text-align: left; font-weight: bold;" | <pre>HTTP/1.1 200 OK | ||
+ | Content-Type: application/json | ||
+ | Content-Length: 167 | ||
+ | |||
+ | [ | ||
+ | { | ||
+ | "request" :"relay", | ||
+ | "interface": "1", | ||
+ | "state" :"on" | ||
+ | }, | ||
+ | { | ||
+ | "request" :"play", | ||
+ | "message" :"access_allowed" | ||
+ | } | ||
+ | ] | ||
+ | |||
+ | </pre> | ||
+ | |} | ||
+ | |||
<br/><br/> | <br/><br/> | ||
Linha 55: | Linha 142: | ||
printf("Evento: %s<BR>\n", $vars['request']); | printf("Evento: %s<BR>\n", $vars['request']); | ||
printf("=> User: %s<BR>\n", $vars['user']); | printf("=> User: %s<BR>\n", $vars['user']); | ||
+ | printf("=> Pass: %s<BR>\n", $vars['password']); | ||
printf("=> State: %s<BR>\n", $vars['state']); | printf("=> State: %s<BR>\n", $vars['state']); | ||
printf("=> key: %s<BR>\n", $vars['key']); | printf("=> key: %s<BR>\n", $vars['key']); | ||
+ | printf("==> Data: %s<BR>\n", $vars['time']); | ||
?> | ?> | ||
</source> | </source> | ||
Linha 62: | Linha 151: | ||
<br/> | <br/> | ||
+ | <br/> | ||
+ | == Evento com Resposta Built-in == | ||
+ | |||
+ | {| class="wikitable" width="65%" | ||
+ | | | ||
+ | <source lang="php"> | ||
+ | <?php | ||
+ | |||
+ | $vars = $_REQUEST; | ||
+ | |||
+ | if(!isset($vars)) | ||
+ | exit(0); | ||
+ | |||
+ | if(isset($vars['request']) && strcmp($vars['request'],"card") == 0) | ||
+ | $event = $vars['request']; | ||
+ | else { | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | # Dados recebido no evevento do porteiro | ||
+ | #printf("Evento: %s<BR>\n", $vars['request']); | ||
+ | #printf("=> Card: %s<BR>\n", $vars['card']); | ||
+ | #printf("=> State: %s<BR>\n", $vars['state']); | ||
+ | #printf("=> Time: %s<BR>\n", $vars['time']); | ||
+ | #printf("=> Key: %s<BR>\n", $vars['key']); | ||
+ | |||
+ | |||
+ | ## Verificar se o usuário tem acesso e responder com o comando de liberação. | ||
+ | ## | ||
+ | |||
+ | $data = array ( | ||
+ | 0 => array ('request' => 'relay', | ||
+ | 'interface' => '1', | ||
+ | 'state' => 'on'), | ||
+ | |||
+ | 1 => array ('request' => 'play', | ||
+ | 'message' => 'access_allowed'), | ||
+ | ); | ||
+ | |||
+ | header('Content-type: application/json'); | ||
+ | echo json_encode( $data ); | ||
+ | |||
+ | ?> | ||
+ | |||
+ | </source> | ||
+ | |} | ||
+ | |||
<br/> | <br/> | ||
<br/> | <br/> | ||
[[MPI/API#Eventos|'''Voltar''']] | [[MPI/API#Eventos|'''Voltar''']] | ||
----- | ----- |
Edição atual tal como 22h07min de 29 de julho de 2019
Tabela de conteúdo |
O Evento de Usuário e Senha é enviado do porteiro para a aplicação, informando uma tentativa de acesso via usuário e senha pelo teclado numérico do porteiro.
[editar] Evento
Parâmetros enviados pelo Porteiro | |
---|---|
request | user |
user | Usuário utilizado na tentativa de acesso |
password | Senha utilizada na tentativa de acesso |
state | Status da tentativa de acesso com usuário e senha
|
interface | Identificação da interface acessada/acionada.
|
key | Chave primária do usuário (Se configurado). |
time | Data/Hora do evento no formato ddmmYYYYHHMMSS onde:
|
[editar] Exemplo
http://ip:porta/url/?request=user&user=1234&password=4567&interface=14&state=granted&time=26032019113933 |
---|
Ou para pânico:
http://ip:porta/url/?request=user&user=4567&password=7890&interface=14&state=panic&time=26032019113544 |
---|
Resposta: A aplicação deve responder:
- 401 => Erro de Autenticação.
- 200 => OK.
[editar] Buitl-in Respose
No próprio evento, é possível executar outros comandos, inserindo no corpo da resposta (no caso 200 OK) enviado pela aplicação, um array com os dados do comando a ser executado. Os parâmetros aceiros são descritos abaixo:
Parâmetros enviados para o Porteiro | |
---|---|
request | Comando a ser enviado. Comandos aceitos: relay ou play. |
interface | Para relay: Define qual relê será habilitado ou desligado
|
state | Para relay: Define o estado do relê:
|
message | Para play: Define a mensagem a reproduzir. Ver mensagens na documentação do comando PlayMessage |
Exemplo - acionando o relê para abertura da interface 1:
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 167 { "request" :"relay", "interface": "1", "state" :"on" } |
---|
Exemplo - acionando o relê para abertura da interface 1 e reproduzindo a mensagem de acesso liberado:
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 167 [ { "request" :"relay", "interface": "1", "state" :"on" }, { "request" :"play", "message" :"access_allowed" } ] |
---|
[editar] PHP
<?php $vars = $_REQUEST; if(!isset($vars)) exit(0); if(isset($vars['request']) && strcmp($vars['request'],"user") == 0) $event = $vars['request']; else { echo "Evento invalido!\n"; exit(1); } printf("Evento: %s<BR>\n", $vars['request']); printf("=> User: %s<BR>\n", $vars['user']); printf("=> Pass: %s<BR>\n", $vars['password']); printf("=> State: %s<BR>\n", $vars['state']); printf("=> key: %s<BR>\n", $vars['key']); printf("==> Data: %s<BR>\n", $vars['time']); ?> |
[editar] Evento com Resposta Built-in
<?php $vars = $_REQUEST; if(!isset($vars)) exit(0); if(isset($vars['request']) && strcmp($vars['request'],"card") == 0) $event = $vars['request']; else { exit(1); } # Dados recebido no evevento do porteiro #printf("Evento: %s<BR>\n", $vars['request']); #printf("=> Card: %s<BR>\n", $vars['card']); #printf("=> State: %s<BR>\n", $vars['state']); #printf("=> Time: %s<BR>\n", $vars['time']); #printf("=> Key: %s<BR>\n", $vars['key']); ## Verificar se o usuário tem acesso e responder com o comando de liberação. ## $data = array ( 0 => array ('request' => 'relay', 'interface' => '1', 'state' => 'on'), 1 => array ('request' => 'play', 'message' => 'access_allowed'), ); header('Content-type: application/json'); echo json_encode( $data ); ?> |