Documentação completa da integração por JSON de envio de mensagens pra whatsapp
Introdução
Bem-vindo! É através desta API que você irá integrar seu sistema ao nosso, todas operações que podem ser feitas com a API se encontra abaixo.
Nossa API é RESTful e todas as respostas são JSON.
Endpoint
https://www.solutek.online/api/whatsapp/gateway/json/ (Retorno em JSON)
Atenção: Todas as funções do endpoint são acessadas usando uma chamada POST.
Autenticação
Usamos autenticação por meio de um e-mail , token e id da aplicação gerado pelo sistema! Estas informações pode ser obtidas acessando a aréa interna na página "Credenciais" .
Após ter suas credenciais em mãos você poderá usar nossa API enviando-as sempre no corpo da requisição.
Enviar Mensagens
Endpoint: https://www.solutek.online/api/whatsapp/gateway/json/enviar (Retorno em JSON)
Neste endpoint será processado um chamado para que sua mensagem seja enviada para o seu destinatário apartir do seu número cadastro na api.
Parâmetros
Bem-vindo! É através desta API que você irá integrar seu sistema ao nosso, todas operações que podem ser feitas com a API se encontra abaixo.
Nossa API é RESTful e todas as respostas são JSON.
Endpoint
https://www.solutek.online/api/whatsapp/gateway/json/ (Retorno em JSON)
Atenção: Todas as funções do endpoint são acessadas usando uma chamada POST.
Autenticação
Usamos autenticação por meio de um e-mail , token e id da aplicação gerado pelo sistema! Estas informações pode ser obtidas acessando a aréa interna na página "Credenciais" .
Após ter suas credenciais em mãos você poderá usar nossa API enviando-as sempre no corpo da requisição.
Enviar Mensagens
Endpoint: https://www.solutek.online/api/whatsapp/gateway/json/enviar (Retorno em JSON)
Neste endpoint será processado um chamado para que sua mensagem seja enviada para o seu destinatário apartir do seu número cadastro na api.
Parâmetros
Nome
Descrição
Tipo
email
E-mail de sua aplicação gerada no sistema
String
token
Token de sua aplicação gerada no sistema
String
idapp
ID de sua aplicação gerada no sistema
String
idmsg
ID Único da mensagem (Uma ID para cada mensagem - Caso Repetida não dispara)
String
midia
Se é texto ou imagem ("texto" , "imagem" ou "arquivo")
String
url_anexo
URL do anexo a ser enviado. Extensões suportadas: JPG , PNG , PDF e MP3
String
whatsapp
Numero do whatsapp do cliente que vai receber a mensagem
String
mensagem
Sua mensagem para o cliente
String
Exemplo de uso
<?php $email= "SEU E-MAIL AQUI"; $token= "SEU TOKEN AQUI"; $idapp= "ID DA APLICACAO AQUI"; $idmsg= "000001"; $emoji= "nao"; //"sim" ou "nao" $whatsapp= "NUMERO DO WHATSAPP AQUI"; //EX: 5581988888888 $mensagem= "SUA MENSAGEM AQUI"; $dados['email']= $email; $dados['token']= $token; $dados['idapp']= $idapp; $dados['idmsg']= $idmsg; $dados['midia']= "texto"; //"texto" , "imagem" ou "arquivo" $dados['url_anexo']= ""; //opcional. necessário se midia="imagem" ou midia="arquivo"; $dados['whatsapp']= $whatsapp; $dados['mensagem']= $mensagem; $dados['emoji']= $emoji; $endpoint="https://www.solutek.online/api/whatsapp/gateway/json/enviar"; $curl = curl_init($endpoint); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $dados); $executa_api= curl_exec($curl); curl_close($curl); $retorno= json_decode($executa_api); //Retorno da API $erro= $retorno->erro; $sobre_o_erro= $retorno->sobre_o_erro; $whatsapp_retorno= $retorno->whatsapp; $mensagem_retorno= $retorno->mensagem; $status= $retorno->status; $idlog= $retorno->idlog; ?>
Retorno da requisição acima:
Nome
Descrição
Tipo
erro
sim - existe erro , nao - sucesso na requisição.
String
sobre_o_erro
Descrição do erro.
String
whatsapp
Número do whatsapp recebido.
String
mensagem
Mensagem recebida.
String
status
Status da mensagem (Processando).
String
idlog
ID para receber no webhook
String
Consultar Limites e Informações do Plano
Endpoint: https://www.solutek.online/api/whatsapp/gateway/json/limites (Retorno em JSON)
Neste endpoint você poderá consultar limites e informações do seu plano , tais como: Limite diario do plano , Limite diario utilizado , Limite diario restante e data de expiração do seu plano.
Parâmetros
Nome
Descrição
Tipo
email
E-mail de sua aplicação gerada no sistema
String
token
Token de sua aplicação gerada no sistema
String
idapp
ID de sua aplicação gerada no sistema
String
Exemplo de uso
<?php $email= "SEU E-MAIL AQUI"; $token= "SEU TOKEN AQUI"; $idapp= "ID DA APLICACAO AQUI"; $dados['email']= $email; $dados['token']= $token; $dados['idapp']= $idapp; $endpoint="https://www.solutek.online/api/whatsapp/gateway/json/limites"; $curl = curl_init($endpoint); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $dados); $executa_api= curl_exec($curl); curl_close($curl); $retorno= json_decode($executa_api); //Retorno da API $erro= $retorno->erro; $sobre_o_erro= $retorno->sobre_o_erro; $limite_diario= $retorno->limite_diario; $limite_diario_usado= $retorno->limite_diario_usado; $limite_diario_restante= $retorno->limite_diario_restante; ?>
Retorno da requisição acima:
Nome
Descrição
Tipo
erro
sim - existe erro , nao - sucesso na requisição.
String
sobre_o_erro
Descrição do erro.
String
limite_diario
Quantidade do limite diario do plano.
Int
limite_diario_usado
Quantidade do limite diario usado do plano.
Int
limite_diario_restante
Quantidade do limite diario restante do plano.
Int
expira
Data de expiração do plano
Date
Iniciando a requisição para obter o QRCODE
Agora você pode obter o QRCODE em base-64 para usar em suas aplicações para seus clientes não se conectarem diretamente em nosso sistema.
Endpoint: https://www.solutek.online/api/whatsapp/gateway/json/qrcode (Retorno em JSON)
Tenha em mente que ao processar uma conexão a esse endpoint com retorno de bem sucedida o telefone conectado a API será desconectado para receber o QRCODE para emparelhar outro telefone. Após processar uma solicitação a esse endpoint você precisará fazer uma solicitação a cada intervalo ao endpoind de "Obtendo a Atualizacão do QRCODE".
Parâmetros
Nome
Descrição
Tipo
email
E-mail de sua aplicação gerada no sistema
String
token
Token de sua aplicação gerada no sistema
String
idapp
ID de sua aplicação gerada no sistema
String
Exemplo de uso
<?php $email= "SEU E-MAIL AQUI"; $token= "SEU TOKEN AQUI"; $idapp= "ID DA APLICACAO AQUI"; $dados['email']= $email; $dados['token']= $token; $dados['idapp']= $idapp; $endpoint="https://www.solutek.online/api/whatsapp/gateway/json/qrcode"; $curl = curl_init($endpoint); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $dados); $executa_api= curl_exec($curl); curl_close($curl); $retorno= json_decode($executa_api); //Retorno da API $erro= $retorno->erro; $sobre_o_erro= $retorno->sobre_o_erro; $status= $retorno->status; ?>
Obtendo a Atualizacão do QRCODE
Após fazer a solicitação ao endpoint de "Iniciando a requisição para obter o QRCODE" você precisa processar esse endpoint a cada intervalo de tempo (Recomenda-mos 5 segundos) para obter a imagem (Base64) do QRCODE atualizada.
Endpoint: https://www.solutek.online/api/whatsapp/gateway/json/qrcode_update (Retorno em JSON)
Parâmetros
Nome
Descrição
Tipo
email
E-mail de sua aplicação gerada no sistema
String
token
Token de sua aplicação gerada no sistema
String
idapp
ID de sua aplicação gerada no sistema
String
Exemplo de uso
<?php $email= "SEU E-MAIL AQUI"; $token= "SEU TOKEN AQUI"; $idapp= "ID DA APLICACAO AQUI"; $dados['email']= $email; $dados['token']= $token; $dados['idapp']= $idapp; $endpoint="https://www.solutek.online/api/whatsapp/gateway/json/qrcode_update"; $curl = curl_init($endpoint); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $dados); $executa_api= curl_exec($curl); curl_close($curl); $retorno= json_decode($executa_api); //Retorno da API $erro= $retorno->erro; $sobre_o_erro= $retorno->sobre_o_erro; $conectado= $retorno->conectado; $qrcode= $retorno->qrcode; $url_retorno= $retorno->url_retorno; $nome= $retorno->nome; $telefone= $retorno->telefone; ?>
Limpar Fila de disparos
Endpoint: https://www.solutek.online/api/whatsapp/gateway/json/limpar (Retorno em JSON)
As vezes você acidentalmente pode nos enviar várias mensagens , Enviar mensagens sem o aparelho estar conectado ou algo do tipo , Quando o dispositivo não está conectado ou disponivel para o envio essas mensagens ficam numa fila de disparo aguardando que seu aparelho fique disponivel para envio , Há casos em que os clientes precisam apagar essas mensagens e esse endpoint faz extamente isto!
Ao utilizar este endpoint caso tenha alguma mensagem em fila será deletada , No retorno é possivel saber a quantidade de mensagens que foi deletada. Vale lembrar que ao excluir essas mensagens da fila de disparo não será ressarcido no seu limite diário.
Parâmetros
Nome
Descrição
Tipo
email
E-mail de sua aplicação gerada no sistema
String
token
Token de sua aplicação gerada no sistema
String
idapp
ID de sua aplicação gerada no sistema
String
Exemplo de uso
<?php $email= "SEU E-MAIL AQUI"; $token= "SEU TOKEN AQUI"; $idapp= "ID DA APLICACAO AQUI"; $dados['email']= $email; $dados['token']= $token; $dados['idapp']= $idapp; $endpoint="https://www.solutek.online/api/whatsapp/gateway/json/limpar"; $curl = curl_init($endpoint); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $dados); $executa_api= curl_exec($curl); curl_close($curl); $retorno= json_decode($executa_api); //Retorno da API $erro= $retorno->erro; $sobre_o_erro= $retorno->sobre_o_erro; $excluidos= $retorno->excluidos; ?>
Retorno da requisição acima:
Nome
Descrição
Tipo
erro
sim - existe erro , nao - sucesso na requisição.
String
sobre_o_erro
Descrição do erro.
String
excluidos
Quantidade de mensagens excluidas
Int
Obter Numéro de Mensagens na Fila
Endpoint: https://www.solutek.online/api/whatsapp/gateway/json/obter_fila (Retorno em JSON)
Esse endpoint retorna a quantidade de mensagens na fila de disparo!
Parâmetros
Nome
Descrição
Tipo
email
E-mail de sua aplicação gerada no sistema
String
token
Token de sua aplicação gerada no sistema
String
idapp
ID de sua aplicação gerada no sistema
String
Exemplo de uso
<?php $email= "SEU E-MAIL AQUI"; $token= "SEU TOKEN AQUI"; $idapp= "ID DA APLICACAO AQUI"; $dados['email']= $email; $dados['token']= $token; $dados['idapp']= $idapp; $endpoint="https://www.solutek.online/api/whatsapp/gateway/json/obter_fila"; $curl = curl_init($endpoint); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $dados); $executa_api= curl_exec($curl); curl_close($curl); $retorno= json_decode($executa_api); //Retorno da API $erro= $retorno->erro; $sobre_o_erro= $retorno->sobre_o_erro; $fila= $retorno->fila; ?>
Retorno da requisição acima:
Nome
Descrição
Tipo
erro
sim - existe erro , nao - sucesso na requisição.
String
sobre_o_erro
Descrição do erro.
String
fila
Número de mensagens na fila
Int
Aplicar Delay no envio de mensagens
Endpoint: https://www.solutek.online/api/whatsapp/gateway/json/delay (Retorno em JSON)
Através desse endpoint é possivel setar um delay entre os envios de suas mensagens , isso previne que sua aplicação entre em contato com vários numéros em um curto periodo de tempo e o whatsapp venha a banir seu número por conta disso. É recomendado aplicar delay sempre que for enviar mais de 3 mensagens para clientes que nunca entrarão em contato com suas aplicações. Voltamos a salientar que vetamos o uso de nossa API o envio de SPAM ou Marketing , é recomendados apenas o envio de mensagens para quem já é seu cliente e que espera receber suas mensagens.
Parâmetros
Nome
Descrição
Tipo
email
E-mail de sua aplicação gerada no sistema
String
token
Token de sua aplicação gerada no sistema
String
idapp
ID de sua aplicação gerada no sistema
String
segundos
Intervalo em segundos entre cada envio
Int
Exemplo de uso
<?php $email= "SEU E-MAIL AQUI"; $token= "SEU TOKEN AQUI"; $idapp= "ID DA APLICACAO AQUI"; $dados['email']= $email; $dados['token']= $token; $dados['idapp']= $idapp; $dados['segundos']= 5; $endpoint="https://www.solutek.online/api/whatsapp/gateway/json/delay"; $curl = curl_init($endpoint); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $dados); $executa_api= curl_exec($curl); curl_close($curl); $retorno= json_decode($executa_api); //Retorno da API $erro= $retorno->erro; $sobre_o_erro= $retorno->sobre_o_erro; $delay_anterior= $retorno->delay_anterior; $delay_atual= $retorno->delay_atual; ?>
Retorno da requisição acima:
Nome
Descrição
Tipo
erro
sim - existe erro , nao - sucesso na requisição.
String
sobre_o_erro
Descrição do erro.
String
delay_anterior
Delay que estava setado antes da alteração
Int
delay_atual
Delay aplicado nessa requisição
Int
Consultando Status Da Conexão
Endpoint: https://www.solutek.online/api/whatsapp/gateway/json/status (Retorno em JSON)
Neste endpoint você poderá consultar o status do seu número conectado para envio e recebimento de mensagens. Uma conexão a esse endpoint bem-sucedida retornará se seu telefone está logado em nossos servidores , O numero está disponivel pra envio e recebimento , Nick do seu whatsapp , Número do telefone conectado e Porcentagem da bateria de seu aparelho.
Parâmetros
Nome
Descrição
Tipo
email
E-mail de sua aplicação gerada no sistema
String
token
Token de sua aplicação gerada no sistema
String
idapp
ID de sua aplicação gerada no sistema
String
Exemplo de uso
<?php $email= "SEU E-MAIL AQUI"; $token= "SEU TOKEN AQUI"; $idapp= "ID DA APLICACAO AQUI"; $dados['email']= $email; $dados['token']= $token; $dados['idapp']= $idapp; $endpoint="https://www.solutek.online/api/whatsapp/gateway/json/status"; $curl = curl_init($endpoint); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $dados); $executa_api= curl_exec($curl); curl_close($curl); $retorno= json_decode($executa_api); //Retorno da API $erro= $retorno->erro; $sobre_o_erro= $retorno->sobre_o_erro; $logado= $retorno->logado; $pronto= $retorno->pronto; $nome= $retorno->nome; $telefone= $retorno->telefone; $bateria= $retorno->bateria; ?>
Retorno da requisição acima:
Nome
Descrição
Tipo
erro
sim - existe erro , nao - sucesso na requisição.
String
sobre_o_erro
Descrição do erro.
String
logado
Se há uma sessão ativa de seu número.
String
pronto
Celular desligado ou desconectado da internet Retorna "nao".
String
nome
Nick definido em seu perfil do whatsapp
String
telefone
Número de telefone do seu whatsapp
String
bateria
Porcentagem da bateria do seu aparelho
Int
Capturando Mensagens Recebidas
Defina a URL do seu webhook: Acesse o painel
Clique em configurar base
Desça a até o fim da tela e defina a url em:
URL de recebimento de mensagens
Você receberá na página informada um array JSON com todas as informações de mensagens recebidas assim como os status dos envios de suas mensagens.
Exemplo de uso
<?php //recuperacao de dados posts $ttdd= file_get_contents('php://input'); $ttdc= json_decode($ttdd); //caso exista o campo tipo recebido por POST significa que é recebimento de arquivo //caso contrário significa que é recebimento de mensagem ou status do envio if (empty($_POST['tipo'])) { // tipo de recebimento: mensagem ou status do envio $tipo= $ttdc -> tipo; if (($tipo=="mensagem") or ($tipo=="status")) { //caso seja recebimento de mensagem if ($tipo=="mensagem") { $whatsapp= $ttdc->whatsapp; //whatsapp do cliente $tmp= $ttdc->horario_unix; //time unix do recebimento $msg= $ttdc->mensagem; //mensagem - caso audio ou documento vem vazio - caso imagem vem a thumb $idchat= $ttdc->idmsg; //id da mensagem $nome_cliente= $ttdc->nome_cliente; //nome do cliente no whatsapp $midia= $ttdc->midia; //qual o tipo de midia recebido: image - ptt (audio) - document (pdf) //campos extras para cada tipo de recebimento //caso seja uma imagem if ($midia=="image") { $mimetype= $ttdc->mimetype; //O mimetype da imagem ex: png , jpg $width= $ttdc->width; //largura da imagem $height= $ttdc->height; //altura da imagem $size= $ttdc->size; //tamanho da imagem $referencia= $ttdc->referencia; //referencia da imagem - serve pra identificar o arquivo a ser recebido $legenda= $ttdc->legenda; //legenda da imagem } else if ($midia=="ptt") { $referencia= $ttdc->referencia; //referencia do audio - serve pra identificar o arquivo a ser recebido } else if ($midia=="document") { $referencia= $ttdc->referencia; //referencia do documento - serve pra identificar o arquivo a ser recebido $mimetype= $ttdc->mimetype; //O mimetype do arquivo ex: .docx , pdf } else if ($midia=="location") { $lat= $ttdc->lat; //latitude $lng= $ttdc->lng; //longitude $loctipo= $ttdc->loctipo; //tipo de localizacao: fixo ou tempo_real } } //caso seja recebimento de status de envio if ($tipo=="status") { $idlog= $ttdc->idlog; //idmsg que você definiu $codigo_status= $ttdc->codigo_status; //1= enviado 2= recebido 3= visualizado $referencia_status= $ttdc->referencia_status; //Enviado , Recebido , Visualizado } } else { $tipo= $_POST['tipo']; //verifica se o post refere-se ao arquivo if ($tipo=="arquivo") { $referencia= $_POST['referencia']; //referencia recebida anteriormente na mensagem $base64= $_POST['base64']; //arquivo codificado em base64 } } }
Midias Recebivéis:
Nome
Descrição
Tipo
chat
Mensagem de texto com ou sem emoji.
String
image
Recebimento de imagens
String
ptt
Recebimento de audio
String
document
Recebimento de documento (PDF , DOCX ou Outro)
String
location
Recebimento de localizacao
String
Campos retornados em midia = chat
Nome
Descrição
Tipo
whatsapp
Whatsapp do cliente que enviou a mensagem.
String
horario_unix
Horário do recebimento da mensagem em unix
Int
idmsg
ID única gerada pra esse recebimento
String
nome_cliente
Nome do cliente no whatsapp
String
Campos retornados em midia = image
Obs: Você não recebe a imagem nesse retorno , apenas um thumb , com a referencia em mãos use-a para identificar o arquivo recebido.
Recomenda-mos criar uma tabela diferente para armazenar arquivos. Todos são recebidos em base64 junto com a referência.!
Nome
Descrição
Tipo
whatsapp
Whatsapp do cliente que enviou a mensagem.
String
horario_unix
Horário do recebimento da mensagem em unix
Int
idmsg
ID única gerada pra esse recebimento
String
nome_cliente
Nome do cliente no whatsapp
String
mimetype
Mimetype da imagem para saber o formato da mesma
String
width
Tamanho em pixels da largura da imagem
Int
height
Tamanho em pixel da altura da imagem
Int
size
Tamanho da imagem em bytes
Int
legenda
A legenda da imagem caso o cliente tenha inserido
String
referencia
Referência da imagem - Identifica a imagem em tamanho real
String
Campos retornados em midia = ptt
O Campo mensagem vem vazio! Você recebe apenas a referencia para poder identificar o audio recebido no metodo POST. Como todos os outros arquivos o audio vem codificado em base64.
Nome
Descrição
Tipo
whatsapp
Whatsapp do cliente que enviou a mensagem.
String
horario_unix
Horário do recebimento da mensagem em unix
Int
idmsg
ID única gerada pra esse recebimento
String
nome_cliente
Nome do cliente no whatsapp
String
referencia
Referência do audio - Identifica o audio recebido
String
Campos retornados em midia = document
O Campo mensagem vem vazio! Você recebe apenas a referencia para poder identificar o documento recebido e o mimetype para saber a extensão de arquivo recebido. Como todos os outros arquivos o documento vem codificado em base64.
Nome
Descrição
Tipo
whatsapp
Whatsapp do cliente que enviou a mensagem.
String
horario_unix
Horário do recebimento da mensagem em unix
Int
idmsg
ID única gerada pra esse recebimento
String
nome_cliente
Nome do cliente no whatsapp
String
referencia
Referência do documento - Identifica o documento recebido
String
Campos retornados em midia = location
O Campo mensagem com uma thumb da localizacao do cliente! Você recebe a latitude e longitude da localizacao compartilha e o tipo para identificar se foi compartilhado um local fixo ou uma localização em tempo real.
Nome
Descrição
Tipo
whatsapp
Whatsapp do cliente que enviou a mensagem.
String
horario_unix
Horário do recebimento da mensagem em unix
Int
idmsg
ID única gerada pra esse recebimento
String
nome_cliente
Nome do cliente no whatsapp
String
lat
Latitude da localização
Float
lng
Longitude da localização
Float
loctipo
Tipo de compartilhamento - fixo ou tempo_real
Float