Página 2 de 2

API DO WHATSAPP

Enviado: 15 Jun 2019 16:07
por sygecom
asimoes escreveu:
sygecom escreveu:Pergunta:
Tem como evitar a opção 2 ? Ou seja: que apos o shelexecute() a mensagem seja enviada sem passar pelo click em ENVIAR ?
Acho que teria que simular um Click no btão, mas acho que não rola isso dai não.
Veja abaixo
http://forums.fivetechsupport.com/viewt ... e&start=30

Testei aqui e funciona mesmo.

Código: Selecionar todos

Function Main()
   Local oShell

   oShell := CreateObject( "WScript.Shell" )
   oShell:run("chrome.exe https://api.whatsapp.com/send?phone=34666666666" )
   Sleep(1500)
   oShell:sendkeys("{tab}{tab}")
   oShell:SendKeys("~")
   Sleep(5000)
   oShell:sendkeys("Mensaje de prueba")
   oShell:SendKeys("~")

Return nil
 

API DO WHATSAPP

Enviado: 17 Out 2019 14:19
por wilson
ola
boa tarde

1) ha como enviar watsapp de dentro do sistema xharbour ( console)

e mail ja consegui
ex..
quero enviar uma mensagem " Seu boleto esta disponivel no site ....etc.. "

entra na base de dados localiza telefone cecular e envia

2) - salvar um arquivos a ser impresso
ex.. set printer to teste em pdf
use cliente
do while .not. eof()

localiza envia etc....

skip
enddo
grato
wilson
wilceci2006@yahoo.com.br

API DO WHATSAPP

Enviado: 20 Out 2019 23:02
por sygecom
Wilson,

Veja os exemplos nesse tópico, eles funcionam em console sem problema.

API DO WHATSAPP

Enviado: 05 Dez 2019 21:08
por Itamar M. Lins Jr.
Ola!
Aqui toda vez abre nova aba do whatsapp
Qual é o segredo para enviar ?

Saudações,
Itamar M. Lins Jr.

API DO WHATSAPP

Enviado: 06 Dez 2019 10:47
por HASA
+1
:%

Parece que em xHarbour vai e em Harbour 3.2 não abre para as mensagens, só abre a pagina ok.
:'(
HASA

API DO WHATSAPP

Enviado: 07 Dez 2019 11:07
por sygecom
De uma olhada no exemplo que o Fabio Luna postou no Fivewin
http://fivewin.com.br/index.php?/topic/ ... o-com-web/

API DO WHATSAPP

Enviado: 09 Dez 2019 09:29
por HASA
:(Neg

Bom dia, é esse mesmo no Harbour + Minigui Extend não funfa.
:%
HASA

API DO WHATSAPP

Enviado: 20 Dez 2019 14:26
por André Corrêa
Boa tarde,

Consegui enviar mensagens utilizando o exemplo do Fivewin, mas encontrei alguns problemas:

1) Demora bastante para enviar uma única mensagem, já que a rotina tem vários "WaitSeconds" / "Sleeps" longos e sem eles, não funciona corretamente.
2) A cada mensagem enviada, é aberta uma nova aba no navegador (caso ele fique aberto), se fechá-lo, o processo demora mais ainda.

Alguém tem alguma solução melhor para enviar uma mensagem para diversos contatos, como uma mensagem de marketing, por exemplo?

Obrigado,

API DO WHATSAPP

Enviado: 29 Mar 2020 14:09
por fladimir
Passando para compartilhar uma API Whatsapp q conheci através do fórum do ACBr.

Sem custo mensal nem limite de mensagens... https://documenter.getpostman.com/view/ ... test#introsegue link da documentação

Vc vincula o Whats do cliente na API e ele usa, logicamente respeitando as regras do Whats para SPAM etc, e consegue enviar arquivos etc.

Fiz uns videos e compartilhei um exemplo de como integrar (mas em outra linguagem) porém como é via GET e POST da pra fazer tranquilo em Harbour/Fivewin.
Só uma observação, se vc trabalha puramente com CONSOLE terá q ver como fazer pq um dos requisitos é obter o QRCode e carregar isso pro usuario do teu sistema vincular o Whats dele (igual Whatsweb)

Não comprei a API ainda, mas tenho conhecidos q usam, ela esta ativa a 3 anos. No link abaixo vc encontra os vídeos, informações e o contato do criador da mesma (telefone dele) e tb manual de utilização.
Ele liberou um ENDPOINT e Token pra uso e esta funcionando aki nos testes

O bacana é q vc pode comprar a API e usar na tua carteira de clientes.

A API estava com promoção até este final de semana, achei ela no fórum do ACBr a promoção era até dia 13/03 ai conversei com o Hendell criador e falei q não tinha conhecimento da mesma onde o mesmo estendeu a promoção até este final de semana.

https://wxdev.com.br/forum/index.php?/f ... e-truques/Link da postagem em q fiz em outro fórum com os vídeos demonstrando e o contato do criador da API

Fiz uma classe pra Harbour pra testes e funcionou bem tb... só tem a questão do QRCode q vc tem usar alguma lib grafica pra carregar e mostrar isso pro cliente.
Vou compartilhar a classe (agradecimentos ao Oliveira q usa a API e cedeu um trecho de código q permitiu a criação da classe a partir do trecho, logicamente q alterado e ajustado a minha realidade)

Código: Selecionar todos

********************************************************************************	
FUNCTION EXEMPLO_API_WHATS()
	LOCAL oWhats := TWhatsappAPI_WTS():New()
	oWhats:Situacao()
	oWhats:NivelBateria()
	oWhats:NrConectado()
	oWhats:EnviarMsg('5567992354872', 'Teste *mensagem*')
	oWhats:EnviarMsg('5567992354872', NIL, 'd:\documento.pdf') ; Inkey(2)  // PAUSAR UNS 2 SEGUNDOS ENTRE UMA MENSAGEM E OUTRA
	oWhats:EnviarMsg('5567992354872', NIL, 'd:\imagem.png')      ; Inkey(2)
	oWhats:End()
Quit()

********************************************************************************
#DEFINE httpGet  1
#DEFINE httpPost 2

********************************************************************************
CLASS TWhatsappAPI_WTS

		DATA sToken    INIT 'O TOKEN Q VC ADQUIRIR OU PEDE PRO HENDELL PRA TESTES'
		DATA sEndPoint INIT 'URL DO ENDPOINT Q ELE FORNECE PRA TESTES QDO VC TIVER O SEU SERA O SEU URL, VC NAO USA ESTRUTURA DELE E SIM A SUA'

		DATA sRet      INIT ''
		DATA hHash     INIT hb_Hash()
		DATA nMetodo   INIT 0  // 1 GET 2 POST

		METHOD ComunicaAPI()
		METHOD Situacao()
		METHOD Obter_QRCode()
		METHOD NrConectado()
		METHOD NivelBateria()
		METHOD EnviarMsg()
		METHOD MostraRetorno() INLINE PTAlert( 'Codigo..:;'+	PADC( hb_cStr(::hHash['codigo'],70)    ) +';' +;
													      'Mensagem:;'+  PADC( UPPER(ALLTRIM(hb_UTF8ToStr(hb_cStr(::hHash['mensagem'])))),70) +';' +;
													    	'Retorno.:;'+	PADC( hb_cStr(::hHash['retorno'],70)   ), aOk, vcroxo)

//		METHOD WhatsAPI_SetarWebhook() // PRA LER O RETORNO DAS MENSAGENS, ESSA PARTE NAO FIZ AINDA.

		Method End() INLINE Self := Nil
ENDCLASS

*******************************************************************************
METHOD Situacao() Class TWhatsappAPI_WTS
	Mensag("Consultando situacao da API...")
	::ComunicaAPI("/whatsapp/situacao", httpGet)

	If 'false' $ ::hHash['retorno']
		MsgInfo( "Nao conectado. Obtenha QRCode", 'Atenção' ) 
	Else
		MsgInfo( "Whatsapp ja esta conectado.", 'Atenção' ) 
	EndIf
Return  

*******************************************************************************
METHOD NivelBateria() Class TWhatsappAPI_WTS
	Mensag("Consultando nivel bateria")
	::ComunicaAPI("/whatsapp/bateria", httpGet)
	::MostraRetorno()
*******************************************************************************
METHOD NrConectado() Class TWhatsappAPI_WTS
	Mensag("Consultando Nr Conectado API...")
	::ComunicaAPI("/whatsapp/meunumero", httpGet)
	::MostraRetorno()
Return  
********************************************************************************
METHOD EnviarMsg(sContato, sMsg, sFilename) Class TWhatsappAPI_WTS
	LOCAL sURL 
	DEFAULT sMsg TO ''
	DEFAULT sFilename TO ''
	IF EMPTY(sFilename) .AND. EMPTY(sMsg)
		Alert('falta parametro')
		RETURN
	ENDIF
	IF EMPTY(sFilename)
		Mensag("Enviando mensagem de texto...")
		sURL := "/whatsapp/msg"
	ELSE
		Mensag("Enviando arquivo...")
		sURL := "/whatsapp/arquivo"
	ENDIF
	::ComunicaAPI(sURL, httpPost, sContato, sMsg, sFilename)
	::MostraRetorno()
********************************************************************************
Procedure Obter_QRCode() Class TWhatsappAPI_WTS
	Mensag("Obtendo QRCode...")
	::ComunicaAPIWhats('/whatsapp/qrcode', httpGet)

// ATEN€ÇO O RETORNO AKI  RETORNADO O QRCODE EM Q VC TEM Q CARREGAR UM OBJETO GRAFICO ATRAVES DE UMA LIB GRAFICA FIVEWIN, XAILER, MINIGUI, HWGUI ETC
//     If 'obtido com sucesso' $ ::hHash['mensagem'] 
//			AKI CARREGA O OBJETO GRAFICO NA LIB Q VC USAR ::hHash['retorno'], { 20,20,-20,-20 }, "QR-CODE" 
//     Else
//        MsgInfo( "O Whatsapp esta reiniciando. Favor repetir a operação.", 'Atenção' )            
//     EndIf            
Return 
*------------------------------------------------------------------------------*

METHOD  ComunicaAPI(sURL, nMetodo, sContato, sMsg, sFilename) Class TWhatsappAPI_WTS
	LOCAL cMetodo, oWeb, sContent := ''
	TRY
		oWeb  := CreateObject( 'MSXML2.ServerXMLHTTP.6.0' ) 
	CATCH
		oWeb  := CreateObject( 'MSXML2.XMLHTTP' )
	END
	IF EMPTY(sContato) .AND. nMetodo = httpPost  
		Alert("Falta telefone")
		RETURN NIL
	END
	
	sURL    := ::sEndPoint + sURL  
	cMetodo := IIF( nMetodo == httpGet, 'GET', 'POST')
	oWeb:Open( cMetodo, sUrl,  .F.)  // True = pra vir o ResponseBody 
   oWeb:SetRequestHeader( 'token', ::sToken )

	IF nMetodo = httpPost
		oWeb:setRequestHeader( "contato", sContato )
		IF .NOT. EMPTY(sFilename)
			oWeb:setRequestHeader( "filename", SUBSTR(ALLTRIM( CharRem( "[<(-)>]*&@:", sFileName ) ),2))
			oWeb:setRequestHeader( "caption",  SUBSTR(ALLTRIM( CharRem( "[<(-)>]*&@:", sFileName ) ),2)) 
			
			sContent = hb_MemoRead(sFileName)
			sContent = hb_base64encode(sContent)
			sContent = hb_StrToUTF8(sContent)
			sContent = ALLTRIM( CharRem( CRLF, sContent ) )
		ELSE
			IF .NOT. EMPTY(sMsg)
				sContent = sMsg
			ENDIF
		END
      oWeb:setRequestHeader( "Content-Type", "text/plain; charset=UTF-8" )
	END
	TRY
		IF EMPTY(sContent)
			oWeb:Send(  )  
		ELSE
			oWeb:Send( sContent )  
		ENDIF
		::sRet := oWeb:ResponseBody()
		hb_jsondecode( ::sRet, @::hHash )
	CATCH ; END
  RETURN NIL

API DO WHATSAPP

Enviado: 31 Mar 2020 20:41
por rogeriohfb
Estava rodando ate o mes passado certinho.
Fui usar hoje, 31/03 negativo. ele pede pra baixar o app ( que ja esta instalado ) ou abrir url whatsapp ou cancelar

Alguem passando por isso?

API DO WHATSAPP

Enviado: 31 Mar 2020 22:17
por fladimir
essa q eu postei ta rodando aki, não sei se vc se refere a essa ou a outra

API DO WHATSAPP

Enviado: 19 Mai 2025 08:38
por fjservicosthe
Pessoal queria uma rotina que lê as mensagens do Waths Zap, é possivel? Uso Harbour 3.4 Console.

API DO WHATSAPP

Enviado: 19 Mai 2025 13:49
por clodoaldomonteiro
Olá,
Você pode usar API comercial, tais como:

- WaAPI: Oferece uma API empresarial para integração com o WhatsApp, permitindo o envio de mensagens e arquivos.
- Ultramsg: Proporciona uma API REST para envio e recebimento de mensagens via WhatsApp, com suporte a webhooks para notificações em tempo real.
- Green-API: Permite a criação de chatbots e integração com sistemas CRM, suportando múltiplas linguagens de programação.

Exemplo:

Código: Selecionar todos

#include "hbcurl.ch"

PROCEDURE Main()
   LOCAL hCurl, cURL, cToken, cInstance, cPhone, cMsg, cPostData, nRet

   // Token e ID fornecidos pela UltraMsg
   cInstance := "instanceXXXX"    // Ex: instance12345
   cToken    := "your-token"      // Ex: abcdefghijklmnopqrstuvwxyz
   cPhone    := "5511999999999"   // Número com DDI + DDD (sem + ou traços)
   cMsg      := "Olá Clodoaldo, esta é uma mensagem automática do Harbour!"

   // Monta a URL da API
   cURL := "https://api.ultramsg.com/" + cInstance + "/messages/chat"

   // Monta os dados a serem enviados (formato x-www-form-urlencoded)
   cPostData := "token=" + cToken + ;
                "&to=" + cPhone + ;
                "&body=" + hb_urlEncode(cMsg)

   // Inicializa o cURL
   hCurl := hb_curl_easy_init()

   IF hCurl != NIL
      hb_curl_easy_setopt( hCurl, HB_CURLOPT_URL, cURL )
      hb_curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, cPostData )
      hb_curl_easy_setopt( hCurl, HB_CURLOPT_WRITEFUNCTION, { |x| QOut("Resposta: " + x), 0 } )

      // Executa a requisição
      nRet := hb_curl_easy_perform( hCurl )

      // Libera recursos
      hb_curl_easy_cleanup( hCurl )

      IF nRet == 0
         ? "Mensagem enviada com sucesso!"
      ELSE
         ? "Erro ao enviar mensagem. Código:", nRet
      ENDIF
   ELSE
      ? "Erro ao inicializar o cURL"
   ENDIF
RETURN
No manual da API escolhida tem mais detalhes.

Abraços.