Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

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

Post Views 9,194 views
Reading time 15 minutes

Hey guys!
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 in this link here. 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:

Result:

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).

Result:

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:

Result:

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:

Result:

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).

Result:

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:

Result:

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!