Hoje começo uma nova série de artigos no Terminal, voltado a integração com WhatsApp com a API da NETiZAP, então aproveite XD.
A NETiZAP disponibilizou uma linha de testes para o Terminal de Informação e para os alunos aqui testarem em suas respectivas bases.
Então durante as próximas semanas iremos demonstrar como fazer algumas coisas bem bacanas com a API da NETiZAP.
As informações para testes são:
- Linha: 5521986855299
- Porta: 13155
- Chave de Acesso: fUzanE5ncxlTAWBjMO30
Essas 3 informações iremos cadastrar nos respectivos parâmetros MV_X_ZAPLI, MV_X_ZAPPO e MV_X_ZAPCH.
Depois disso, é necessário fazermos o download da excelente classe NETiZAP.prw disponibilizada pelo grande Júlio Wittwer – clique aqui para fazer o download no GitHub. Inclusive, recomendo também a leitura do artigo redigido por ele no blog Tudo em AdvPL (clique aqui para ler).
Agora vamos desenvolver uma função genérica, que irá receber o telefone e a mensagem, e irá realizar o envio de forma bem simples. Abaixo o código desenvolvido:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zZapSend Função que dispara uma mensagem para um smartphone com o aplicativo do WhatsApp @type Function @author Atilio @since 05/08/2021 @version version @param cTelDestin, Caractere, Telefone de destino com o país 55 e o ddd - por exemplo 5514999998888 @param cMensagem, Caractere, Mensagem que será enviada para esse WhatsApp @return aRet, Array, Posição 1 define se deu certo o envio com .T. ou .F. e a Posição 2 é o JSON obtido como resposta do envio com o protocolo @obs É necessário baixar a classe NETiZAP desenvolvida pelo grande Júlio Wittwer disponível em https://github.com/siga0984/NETiZAP/blob/master/NETiZAP.prw /*/ User Function zZapSend(cTelDestin, cMensagem) Local aArea := GetArea() Local cLinha := SuperGetMV("MV_X_ZAPLI", .F., "5521986855299") Local nPorta := SuperGetMV("MV_X_ZAPPO", .F., 13155) Local cChave := SuperGetMV("MV_X_ZAPCH", .F., "fUzanE5ncxlTAWBjMO30") Local aRet := {.F., ""} Local oZap Default cTelDestin := "" Default cMensagem := "" //Retira caracteres em branco dos lados cTelDestin := Alltrim(cTelDestin) cMensagem := Alltrim(cMensagem) //Transforma o texto em UTF-8 cMensagem := EncodeUTF8(cMensagem) //Retira caracteres especiais do telefone por exemplo +55 (14) 9 9999-8888 cTelDestin := StrTran(cTelDestin, " ", "") cTelDestin := StrTran(cTelDestin, "+", "") cTelDestin := StrTran(cTelDestin, "(", "") cTelDestin := StrTran(cTelDestin, ")", "") cTelDestin := StrTran(cTelDestin, "-", "") //Se houver telefone, mensagem, o número for menor que 12 caracteres (551400000000) e não iniciar com 55 não irá enviar a mensagem If Empty(cTelDestin) .And. Empty(cMensagem) .And. Len(cTelDestin) < 12 .And. SubStr(cTelDestin, 1, 2) != "55" aRet[1] := .F. aRet[2] := '[{"error":"Parametro(s) enviado(s) para zZapSend, invalido(s)"}]' Else //Instancia a classe, e passa os parametros da NETiZAP oZap := NETiZAP():New(cLinha, cChave, nPorta) //Define o destino e a mensagem de envio oZap:SetDestiny(cTelDestin) oZap:SetText(cMensagem) //Atualiza o retorno conforme se a mensagem foi enviada ou houve falha If oZap:MessageSend() aRet[1] := .T. aRet[2] := oZap:GetResponse() Else aRet[1] := .F. aRet[2] := oZap:GetLastError() EndIf EndIf RestArea(aArea) Return aRet
E abaixo um fonte de teste para enviar a mensagem ao destinatário:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zZapTest Função de teste para envio de mensagens para o WhatsApp @type Function @author Atilio @since 05/08/2021 @version version /*/ User Function zZapTest() Local aArea := GetArea() Local aZap := {} //Faz o teste de envio aZap := u_zZapSend("5514999998888", "Olá Daniel, essa é uma mensagem de teste!") //Se houve falha, mostra a mensagem de erro If ! aZap[1] MsgStop(aZap[2], "Falha no envio") EndIf RestArea(aArea) Return
E o resultado como ficou no WhatsApp:
Obs.: Os códigos desenvolvidos nessa série do WhatsApp, estão dentro do nosso GitHub, o link é https://github.com/dan-atilio/AdvPL.
Lembrando também pessoal, se tiverem interesse em adquirir uma licença da API, entrem em contato com o pessoal da NETiZAP clicando aqui, e digam que conhecem o Atilio do Terminal de Informação.
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Bom dia Atílio,
Gostei e muito deste post, parabéns.
Bom dia Wanderson, tudo bem?
Opa, obrigado pelo feedback. Lembrando que como é uma série, veja também os outros artigos:
+ Enviando eMojis – https://terminaldeinformacao.com/2021/09/06/como-enviar-emojis-para-whatsapp-usando-advpl-tl/
+ Personalizando mensagens (quebra de linha) com exemplo de envio automático de boas vindas para clientes, fornecedores e vendedores – https://terminaldeinformacao.com/2021/09/13/como-quebrar-linhas-em-mensagens-do-whatsapp-usando-advpl-tl/
+ Enviando arquivos com exemplo de envio da DANFE via mensagem – https://terminaldeinformacao.com/2021/09/20/enviando-arquivos-pelo-whatsapp-usando-advpl-tl/
+ Montando um menu interativo com usuário (chatbot) – https://terminaldeinformacao.com/2021/09/27/como-fazer-um-menu-de-opcoes-com-analise-da-resposta-no-whatsapp-usando-advpl-tl/