SQL Server – Como enviar mensagens para contatos, grupos e listas de transmissão do Whatsapp via API

Visualizações: 523
Tempo de Leitura: 15 minutos

Fala pessoal!
Nesse artigo, vou compartilhar com vocês uma solução que busco há muito tempo como fazer, que é como enviar mensagens para contatos, grupos e listas de transmissão do Whatsapp utilizando WebRequests. Eu já havia feito algo parecido utilizando outras ferramentas, mas nunca o Whatsapp, que não possui uma API oficial e está completamente fechado quanto à isso.

Embora existam ferramentas de comunicação até melhores que o Whatsapp, como o próprio Telegram, 100 de 100 pessoas que eu conheço possuem conta no Whatsapp e a maioria não tem no Telegram, então eu acho que esse artigo pode acabar se tornando até uma utilidade pública para quem quiser criar qualquer automatização que envolva o Whatsapp.

Confira os meus artigos sobre outras ferramentas de comunicação:

API de comunicação com o Whatsapp

Personagem principal esse artigo, a API da NETiZap é o que torna possível a integração fácil entre o banco de dados SQL Server e o comunicador Whatsapp, uma vez que ele não possui uma API oficial e é completamente fechado quanto à isso. Já tentei realizar algumas integrações direto com o Whatsapp e, após alguns testes, fui banido por 24h e notificado que na próxima vez, o meu número seria banido plataforma pra sempre. Depois disso, eu acabei deixando esses testes de lado.. rs

Por isso que a utilização de uma API é tão prático e seguro: O número que faz os disparos é o número da API e não o seu número pessoal/corporativo.

Para a testes dessa API, você pode utilizar a versão de demonstração, que é gratuita, mas para implantação de rotinas reais, você deve adquirir um plano pago:

PlanoModalidadeQuantidade de EnviosValor
Plano GratuitoGrátis com Finalidade de Demonstrações, Testes ou Períodos.PersonalizadoGratuito
Plano Pré PagoPacote de Mensagens + Suporte100R$ 0,20 p/ mensagem + R$ 50,00 mensais
Plano Pós PagoMensalidade + SuporteIlimitadoR$ 200,00
Plano Pós Pago para RevendedoresMensalidade + SuporteIlimitadoR$ 130,00 (Mínimo de 5 linhas)

Regras:

  • É proibido a utilização para fins de spam
  • Regras supervisionadas e aplicadas pelo whatsapp

Dentro do pacote da API, você pode utilizar o aplicativo ConsumersAPI.exe, que permite realizar testes com todos os métodos da API já com os parâmetros padrão:

Você também pode testar utilizando o Postman:

A documentação dessa API está disponível neste link aqui. Para o download do pacote de desenvolvedor da API, clique aqui neste link.

Caso você se interesse na contratação dessa API para sua empresa, entre em contato com o Thiago, desenvolvedor dessa API, no telefone +55 27 99802-2075. O número utilizado para o envio das mensagens não é fixo e pode ser alterado/escolhido pela empresa contratante.

Enviando mensagens para Whatsapp com o OLE Automation

Clique aqui para visualizar o conteúdo
Uma das formas de realizar essa comunicação do SQL Server com a API é utilizando o OLE Automation, que instancia objetos do Windows para dentro do SQL Server. Esse método já é bem antigo no SQL Server, conhecido por alguns vazamentos de memória e deve ser utilizado em último caso, pois o SQLCLR é mais seguro e flexível do que esse método (e a acentuação funciona), mas um pouco mais complicado de implementar também.

Enviando mensagens privadas pelo Whatsapp

Para enviar uma mensagem para um contato específico do Whatsapp, utilize o código abaixo:

Resultado:

Como chega no celular:

Como recuperar a lista dos grupos disponíveis

Para listar os grupos disponíveis na sua conta, você pode utilizar o script abaixo. Para enviar uma mensagem para o grupo, basta utilizar o mesmo script de envio de mensagem privada e substituir o número do telefone do destinatário pelo id do grupo retornado abaixo.

O tratamento do JSON foi feito com a função OPENJSON, disponível a partir do SQL Server 2016. Caso sua versão seja anterior a isso, pode substituir por um SELECT simples na variável e identificar manualmente o id do grupo desejado. Caso queira saber mais sobre tratamento de strings JSON, dê uma olhada no meu artigo SQL Server 2016 – Utilizando o suporte nativo a JSON (JSON_VALUE, JSON_QUERY, OPENJSON, FOR JSON, ISJSON, JSON_MODIFY).

Resultado:

Como enviar mensagens para um grupo do Whatsapp

Agora que demonstrei como enviar mensagem privada e como listar os grupos, vamos unir os dois e enviar mensagens para um grupo!

Como chega no celular:

Como recuperar a lista de transmissões disponíveis para a sua conta

Quase idêntico à listagem de grupos da conta, o script abaixo permite listar as listas de transmissões disponíveis para envio através da API:

Resultado:

Como criar as bibliotecas do SQLCLR (Apenas se for utilizar o SQLCLR)

Clique aqui para visualizar o conteúdo
Nesse artigo, vou demonstrar duas técnicas para realizar requisições HTTP através do SQL Server: SQLCLR e OLE Automation. Caso você queira utilizar o SQLCLR, esse tópico serve para instalar os objetos necessários para conseguir seguir os exemplos desse artigo. Caso você opte por utilizar o OLE Automation, pode ignorar esse tópico.

A forma mais simples e robusta de se realizar requisições HTTP pelo SQL Server é, sem dúvidas, utilizando o SQLCLR (clique aqui se você não sabe nem o que é o SQLCLR).

Como criar a stpWs_Requisicao no seu ambiente (SQL Server 2012 ao 2016):

Caso você esteja utilizando as versões 2012, 2014 ou 2016 do SQL Server, pode utilizar o script abaixo para criar o assembly (DLL) no banco de dados desejado e a stored procedure “stpWs_Requisicao”, que é utilizada para realizar a requisição HTTP da API.

Como criar a stpWs_Requisicao no seu ambiente (SQL Server 2017+):

Caso você esteja utilizando uma versão superior ou igual a 2017 do SQL Server, pode utilizar o script abaixo para criar o assembly (DLL) no banco de dados desejado e a stored procedure “stpWs_Requisicao”, que é utilizada para realizar a requisição HTTP da API. Esse script é diferente do anterior, pois a partir da versão 2017, o SQL Server agora exige a assinatura de assemblies até mesmo no modo Safe, devido à mudanças na segurança do .NET Framework.

Código-fonte C# da stpWs_Requisicao:

Caso você não queira criar o assembly que disponibilizei acima e queira você mesmo programar o seu SQLCLR no Visual Studio e depois publicá-lo no banco, vou disponibilizar o código-fonte em C# dessa Stored Procedure.

Enviando mensagens para Whatsapp com o SQLCLR

Clique aqui para visualizar o conteúdo
Agora que já demonstrei como realizar a conexão com a API, possibilitando como enviar mensagens para o Whatsapp com qualquer linguagem de programação, vou demonstrar como podemos fazer isso pelo SQL Server. Para quem já acompanha o meu blog, sabe que existem pelo menos duas formas fáceis de se fazer isso: Utilizando SQLCLR e OLE Automation.

Enviando mensagens privadas pelo Whatsapp

O primeiro teste a ser realizado é enviando mensagens privadas para um contato. A sua utilização é bem simples:

Resultado:

Como chega a mensagem no celular:

Como recuperar a lista dos grupos disponíveis

Para listar os grupos disponíveis na sua conta, você pode utilizar o script abaixo. Para enviar uma mensagem para o grupo, basta utilizar o mesmo script de envio de mensagem privada e substituir o número do telefone do destinatário pelo id do grupo retornado abaixo.

O tratamento do JSON foi feito com a função OPENJSON, disponível a partir do SQL Server 2016. Caso sua versão seja anterior a isso, pode substituir por um SELECT simples na variável e identificar manualmente o id do grupo desejado. Caso queira saber mais sobre tratamento de strings JSON, dê uma olhada no meu artigo SQL Server 2016 – Utilizando o suporte nativo a JSON (JSON_VALUE, JSON_QUERY, OPENJSON, FOR JSON, ISJSON, JSON_MODIFY).

Resultado:

Como enviar mensagens para um grupo do Whatsapp

Agora que demonstrei como enviar mensagem privada e como listar os grupos, vamos unir os dois e enviar mensagens para um grupo!

Resultado no grupo:

Como recuperar a lista de transmissões disponíveis para a sua conta

Quase idêntico à listagem de grupos da conta, o script abaixo permite listar as listas de transmissões disponíveis para envio através da API:

Resultado:

E aí, gostou dessa dica? Agora você já pode criar alertas, monitoramentos, enviar anexos, mensagens para grupos, listas de transmissão e até mesmo bot’s utilizando essa API e totalmente integrado ao seu banco de dados.
Grande abraço e até a próxima!