# wapi-autov0620 api integração wapp 06/2020 (upgrade).

INTRODUÇÃO
    Este documento tem por intuito, apresentar de forma didática as funcionalidades de ferramenta de integração de messenger(WP), através da utilização de comunicação via api, a seguem os tópicos que são abordados:

✅ 1. Criar nova Instância;
✅ 2. Enviar Mensagem (texto);
✅ 3. Enviar Arquivo
✅ 4. Verificar Status da instância;
✅ 5. Listar Contatos de uma instância;
✅ 6. Listar Conversas por Contato;
✅ 7. Listar Todas as Mensagens não lidas;
✅ 8.    Retornar Nova mensagem na Instância;

✅ 9.    🆕Checkar número (perfil wp);
✅ 10.    Desconectar uma instância;

Testes:
Para realizar testes pode utilizar servidor: http://144.217.207.169:3000

Exemplo de uso:
http://144.217.207.169:3000/wp/qrcode
Requisições via POST
    Seguem abaixo os parâmetros e exemplos de uso.

Para realizar testes de aquisições pode ser utilizado o POSTMAN (ferramenta para testes de requisições de api: Download Postman

A api é desenvolvida utilizando nodejs, utilizando como padrão a porta 3000 (customizável do ponto de vista técnico).

Exemplo de uso utilizando um servidor local:

 http://localhost:3000/wp/qrcode

👨‍🏫 FUNCIONALIDADES: 👩‍💻

1.    CRIAR NOVA INSTÂNCIA
Gerar Qrcode - Criar nova instância
 Função: /wp/qrcode
Descrição: Recebe a requisição para criar nova instância do WP,

Exemplo: Parâmetros da requisição do tipo POST (formato arrayObject):
{
"instancia":"vendas-001"
 }

retorno(instancia criada):  informações sobre criação ou informar caso a instancia já existe e o status da mesma.
Obs: o codigo qrcode tem validade de 15 segundos, sendo necessário nova consulta para atualizar o novo código.
{
"instancia": "vendas-001",
"qrcode": "ZXRlIOkgdW0gdGVzdGUgZGUgcmVxdWlzaefjbyBhcGkgd2hhdHNhcHAgZnVuY2lvbmFsLCBwYXJh
YmVucyBwZWxhIGFxdWlzaefjbw0K",
"status": “UNPAIRED”
 }

obs.: enquanto o retorno exibir o código qrcode, é necessário consultar novamente após a sincronização do qrcode. O resultado após o sincronismo veja a seguir...

retorno (caso a instância já exista):
{
"instancia": "vendas-001",
"qrcode": "Synchronized",
"status": “CONNECTED”
 }

2.    ENVIAR MENSAGEM SIMPLES (TEXTO)
Função: /wp/sendMsg
Exemplo: Parâmetros da requisição do tipo POST (formato arrayObject):
{
"instancia":"vendas-001",
"number":"5516997141457@c.us",
"msg":"👋Olá, segue sua fatura ref. mes 04/2020. \n link da fatura: https://www.ficticio.com.br/app/public/Admin/relatorio/fatura=FAT042020"
 }

Retorno: Caso haja erro a função retornará false.
{
"status": true
 }

 

3.    ENVIAR ARQUIVO:
Função: /wp/sendMedia
Exemplo: Parâmetros da requisição do tipo POST (formato arrayObject):
{
"instancia":"vendas-001",
"number":"5516997141457@c.us",
"msg":"👋Olá, segue arquivo de sua fatura ref. mes 04/2020.",
"tipo":"FATURA-FTR0098938838992020.docx",
“arquivo”:”UEsDBBQABgAIAAAAIQAwySgMcgEAAKUFAAATAAgCW0NvbnRlbnRfVHlw==”
 }

retorno(pode ser retornado  valores ‘inexistente’(instancia não criada portanto não gerado qrcode) ou ‘’UNPAIRED’(qrcode gerado porém ainda não sincronizado)  e retorno (true mensagem enviada ou false se a mensagem não for enviada):
{
"instancia": "vendas-001",
"status": “CONNECTED”,
“retorno”:true
 }

4. VERIFICAR STATUS DA INSTANCIA (CRIADA ANTERIORMENTE)
Função: /wp/status
Exemplo: Parâmetros da requisição do tipo POST (formato arrayObject):
{
"instancia":"vendas-001"
 }

retorno(pode ser retornado dois valores ‘inexistente’(instancia não criada portanto não gerado qrcode) ou ‘’UNPAIRED’(qrcode gerado porém ainda não sincronizado) :
{
"instancia": "vendas-001",
"status": “UNPAIRED”
 }

5.    LISTAR CONTATOS DE UMA INSTÂNCIA:
Função: /wp/getAllContacts
Exemplo: Parâmetros da requisição do tipo POST (formato arrayObject):
{
"instancia":"vendas-001"
 }

retorno(pode ser retornado dois valores ‘inexistente’(instancia não criada portanto não gerado qrcode) ou ‘’UNPAIRED’(qrcode gerado porém ainda não sincronizado)  e contatos com os dados dos contatos resgatados:
{
"instancia": "vendas-001",
"contatos": [{...}]
 }


6. LISTAR CONVERSAS POR CONTATO:
Função: /wp/get_AllMsgs
Exemplo: Parâmetros da requisição do tipo POST (formato arrayObject):
{
"instancia":"vendas-001",
"number":"556392320847@c.us"
 }

retorno(pode ser retornado dois valores ‘inexistente’(instancia não criada portanto não gerado qrcode) ou ‘’UNPAIRED’(qrcode gerado porém ainda não sincronizado) :
{
"instancia": "vendas-001",
"webhook": [{...}]
 }

7.    LISTAR TODAS AS MENSAGENS NÃO LIDAS:
Função: /wp/getUnreadMsg
Exemplo: Parâmetros da requisição do tipo POST (formato arrayObject):
{
"instancia":"vendas-001"
 }

retorno(pode ser retornado dois valores ‘inexistente’(instancia não criada portanto não gerado qrcode) ou ‘’UNPAIRED’(qrcode gerado porém ainda não sincronizado) :
{
"instancia": "vendas-001",
"msgs": [],
"status": “UNPAIRED”
 }

Obs.: Dentro do arrayObject msgs:[]  será retornado todos os dados de mensagens não lidas tais como dados da mensagen, contato, horarios, etc…

8.    RETORNAR NOVA MENSAGEM NA INSTÂNCIA:
Função: /wp/newMsg
    Descrição: retornar última nova mensagem recebida e não lida.

Exemplo: Parâmetros da requisição do tipo POST (formato arrayObject):            
{
"instancia":"vendas-001"
 }

retorno(pode ser retornado dois valores ‘inexistente’(instancia não criada portanto não gerado qrcode) ou ‘’UNPAIRED’(qrcode gerado porém ainda não sincronizado) hook exibirá os dados de novas mensagens via arrayObject (matriz):
{
"instancia": "vendas-001",
"hook": {...}
 }

 

9. CHECKAR NÚMERO  (WP):<br>
Função: /wp/check_number
    Descrição: Informa dados de um número pertencente a instancia, inclusive se é um número válido.

Exemplo: Parâmetros da requisição do tipo POST (formato arrayObject):        
{
"instancia":"vendas-001",
"number":"5516997141457@c.us"
}

retorno(pode ser retornado dois valores ‘inexistente’(instancia não criada portanto não gerado qrcode) ou ‘’UNPAIRED’(qrcode gerado porém ainda não sincronizado) :

{"instancia":"vendas-001","retorno":{"id":                   {"server":"c.us","user":"5516997141457","_serialized":"5516997141457@c.us"},"status":200,"isBusiness":true,"canReceiveMessage":true,"numberExists":true}

}

se o número for invalido ou inexsitente retronará:

{

"instancia":"vendas-001",

"retorno":false

}


10. DESCONECTAR UMA SESSÃO (INSTANCIA):<br>
Função: /wp/logoff
    Descrição: desconectar e remover a sessão da atividade na api(sistema).

Exemplo: Parâmetros da requisição do tipo POST (formato arrayObject):        
{
"instancia":"vendas-001"
 }

retorno(pode ser retornado dois valores ‘inexistente’(instancia não criada portanto não gerado qrcode) ou ‘’UNPAIRED’(qrcode gerado porém ainda não sincronizado) :
{
"instancia": "vendas-001",
"status": “UNPAIRED”
 }