marcioe Posted September 26, 2019 Report Share Posted September 26, 2019 Olá a todos os amigos Existe uma forma de enviar "arquivos" para whatsapp Vou explicar melhor em nosso sistema de imobiliaria tem a rotina de gerar boletos, blz usamos o acbr que gera o boleto certinho em uma pasta com o nome que queremos uma blz Porem esse cliente envia os boletos pelo whatsapp, o que é uma realidade e uma coisa muito pratica para todos os envolvidos. porem todo mes tem que abrir as pasta com os PDF dos boletos e arrastar para Zap de cada locatário que no nosso caso dá quase 300. Teria uma forma de "automatizar" ou algum programa que faça isso... Agradeço aos amigos Quote Link to comment Share on other sites More sharing options...
gilmer Posted September 27, 2019 Report Share Posted September 27, 2019 Bom Dia, https://www.botware.com.br/quanto-custa-whatsapp-business-api/ Existe empresas integradoras, porem, necessário pagar. Quote Link to comment Share on other sites More sharing options...
fladimir Posted March 28, 2020 Report Share Posted March 28, 2020 Existe sem custo mensal nem limite de mensagens... segue https://documenter.getpostman.com/view/4545782/SWTHbveC?version=latest#intro 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. Não comprei a API 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?/forum/20-dicas-e-truques/ Quote Link to comment Share on other sites More sharing options...
fladimir Posted March 29, 2020 Report Share Posted March 29, 2020 Fiz um classe em HARBOUR pra essa API e compartilhei no fórum do Toledo, vou compartilhar aki tb, caso alguém queira testar. ******************************************************************************** function Exemplo_API_Whats LOCAL oWhats := TWhatsappAPI_WTS():New() oWhats:Situacao() oWhats:NivelBateria() oWhats:NrConectado() oWhats:EnviarMsg('55DDDCelularDestino', 'Teste *mensagem*') oWhats:EnviarMsg('55DDDCelularDestino', NIL, 'd:\documento.pdf') ; Inkey(2) oWhats:EnviarMsg('55DDDCelularDestino', NIL, 'd:\imagem.png') ; Inkey(2) oWhats:End() Quit() ******************************************************************************** #DEFINE httpGet 1 #DEFINE httpPost 2 ******************************************************************************** CLASS TWhatsappAPI_WTS DATA sToken INIT 'Token qdo vc adquirir ou pede pro Hendell pra testes' DATA sEndPoint INIT 'URL do seu ENDPOINT fica na tua estrutura, ou pede um pra testes' 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() // essa parte nao fiz ainda q é a parte pra ler o retorno das mensagens 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 Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted March 30, 2020 Report Share Posted March 30, 2020 Eu uso assim Instale o WhatsZap desktop no computador, conecte usando o qrcode com celular e execute assim WHATS_APP_MSN("17997121234","Ola, sou eu no Whats","C:\Users\GiovanyVecchi\AppData\Local\WhatsApp\WhatsApp.exe") #Include "Fivewin.ch" FUNCTION WHATS_APP_MSN(f_cNumeroWhats,f_cMensagem,f_cWhatsAppCaminho) Local lc_oShell, lc_cLink, lc_cFindExe := Space(1000) Local lc_hWndWhats, lc_nSecondsWhats := 0 Local lc_lWhatsPresent := .F. f_cNumeroWhats := AllTrim(f_cNumeroWhats) f_cMensagem := AllTrim(f_cMensagem) f_cWhatsAppCaminho := Alltrim(f_cWhatsAppCaminho) lc_hWndWhats := FindWindow(,"WhatsApp") if hb_IsNil(lc_hWndWhats) lc_lWhatsPresent := .F. Else if lc_hWndWhats == 0 lc_lWhatsPresent := .F. Else lc_lWhatsPresent := .T. BringWindowToTop( lc_hWndWhats ) SysWait(.3) SendMessage(lc_hWndWhats,WM_SETFOCUS,0,0) SysWait(.2) EndIf EndIf If !lc_lWhatsPresent WinExec(chr(34)+f_cWhatsAppCaminho+chr(34)) hb_idleSleep(40) EndIf lc_cLink := chr(34)+f_cWhatsAppCaminho+chr(34)+" https://api.whatsapp.com/send?phone=55"+TXT_CHAR_CLEAN(f_cNumeroWhats,{"(",")","-",".","+"}) lc_oShell := tOleAuto():New( "WScript.Shell" ) lc_oShell:run(lc_cLink,,.T.) hb_idleSleep(5) f_cMensagem := StrTran(f_cMensagem,CRLF,"+{ENTER}") lc_oShell:sendkeys(f_cMensagem) hb_idleSleep(1) lc_oShell:SendKeys("~") hb_idleSleep(1.5) if !lc_lWhatsPresent lc_hWndWhats := FindWindow(,"WhatsApp") if hb_IsNil(lc_hWndWhats) lc_lWhatsPresent := .F. Else if lc_hWndWhats == 0 lc_lWhatsPresent := .F. Else lc_lWhatsPresent := .T. EndIf EndIf EndIf Return lc_lWhatsPresent fladimir 1 Quote Link to comment Share on other sites More sharing options...
fladimir Posted March 30, 2020 Report Share Posted March 30, 2020 Bacana... @giovanyvecchi e como fazemos para capturar as respostas? Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted March 31, 2020 Report Share Posted March 31, 2020 Bacana... @giovanyvecchi e como fazemos para capturar as respostas? Desta maneira você só consegue enviar mensagens. A vantagem é que não tem custos. Se precisar de algo mais profissional, ai seria um api pago. fladimir 1 Quote Link to comment Share on other sites More sharing options...
oliveiros Posted March 31, 2020 Report Share Posted March 31, 2020 Olá Pessoal, boa tarde! Procurem pela API WTSApi ou posso dar o contato do fornecedor para vocês ( não sei pode colocar aqui esse tipo de informação) fiz uma mensageria com essa API e envia qualquer tipo de documento ( JPEG, PDF, PNG ) e mensagens, você tem retorno do envio.Funciona tudo certinho. Acho que vale a pena. Att., Oliveiros Junior Quote Link to comment Share on other sites More sharing options...
oliveiros Posted March 31, 2020 Report Share Posted March 31, 2020 Outra coisa. a integração com o fivewin é bem simples. Quote Link to comment Share on other sites More sharing options...
fladimir Posted March 31, 2020 Report Share Posted March 31, 2020 Existe sem custo mensal nem limite de mensagens... segue https://documenter.getpostman.com/view/4545782/SWTHbveC?version=latest#intro 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. Não comprei a API 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?/forum/20-dicas-e-truques/ Essa aki q mostrei no vídeo @oliveiros e aproveitando obrigado pro compartilhar o trecho do teu código q permitiu criar a classe acima É da WTSApi q falei, ai nos links q compartilhei tem os vídeos e contato do Hendell. Quote Link to comment Share on other sites More sharing options...
oliveiros Posted March 31, 2020 Report Share Posted March 31, 2020 Olá, desculpe não tinha visto que você tinha postado acima. Como você falou é realmente um excelente ferramenta. A implementação é bem fácil. Att., Oliveiros Junior fladimir 1 Quote Link to comment Share on other sites More sharing options...
HASA Posted April 7, 2020 Report Share Posted April 7, 2020 Eu uso assim Instale o WhatsZap desktop no computador, conecte usando o qrcode com celular e execute assim WHATS_APP_MSN("17997121234","Ola, sou eu no Whats","C:\Users\GiovanyVecchi\AppData\Local\WhatsApp\WhatsApp.exe") #Include "Fivewin.ch" FUNCTION WHATS_APP_MSN(f_cNumeroWhats,f_cMensagem,f_cWhatsAppCaminho) Local lc_oShell, lc_cLink, lc_cFindExe := Space(1000) Local lc_hWndWhats, lc_nSecondsWhats := 0 Local lc_lWhatsPresent := .F. f_cNumeroWhats := AllTrim(f_cNumeroWhats) f_cMensagem := AllTrim(f_cMensagem) f_cWhatsAppCaminho := Alltrim(f_cWhatsAppCaminho) lc_hWndWhats := FindWindow(,"WhatsApp") if hb_IsNil(lc_hWndWhats) lc_lWhatsPresent := .F. Else if lc_hWndWhats == 0 lc_lWhatsPresent := .F. Else lc_lWhatsPresent := .T. BringWindowToTop( lc_hWndWhats ) SysWait(.3) SendMessage(lc_hWndWhats,WM_SETFOCUS,0,0) SysWait(.2) EndIf EndIf If !lc_lWhatsPresent WinExec(chr(34)+f_cWhatsAppCaminho+chr(34)) hb_idleSleep(40) EndIf lc_cLink := chr(34)+f_cWhatsAppCaminho+chr(34)+" https://api.whatsapp.com/send?phone=55"+TXT_CHAR_CLEAN(f_cNumeroWhats,{"(",")","-",".","+"}) lc_oShell := tOleAuto():New( "WScript.Shell" ) lc_oShell:run(lc_cLink,,.T.) hb_idleSleep(5) f_cMensagem := StrTran(f_cMensagem,CRLF,"+{ENTER}") lc_oShell:sendkeys(f_cMensagem) hb_idleSleep(1) lc_oShell:SendKeys("~") hb_idleSleep(1.5) if !lc_lWhatsPresent lc_hWndWhats := FindWindow(,"WhatsApp") if hb_IsNil(lc_hWndWhats) lc_lWhatsPresent := .F. Else if lc_hWndWhats == 0 lc_lWhatsPresent := .F. Else lc_lWhatsPresent := .T. EndIf EndIf EndIf Return lc_lWhatsPresent Olá, testei essa sua função muito legal, mas... para mim só deu certo para envio de post para o contato selecionado no WhatsApp o numero que envie não recebeu a mensagem e sim a conversa em foco ? HASA Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted April 8, 2020 Report Share Posted April 8, 2020 Certifique que o numero não tenha caracteres, somente números. E não coloque o 55 Olhe tambem se o caminho do whatsapp.exe esta correto Quote Link to comment Share on other sites More sharing options...
HASA Posted April 8, 2020 Report Share Posted April 8, 2020 Então, a principio só tem numero, retirei o 55 ai não vai nada, e o caminho deve estar correto porque entra a mensagem só que na conversa em foco e não no zap que estou enviando tipo outro numero mesmo, mas... vou reforçar a leitura dos numeros do celular para ver se não estão indo caracteres especiais ocultos ou alto do tipo ok, agradeço. Detalhe estou usando HARBOUR 3.2 com FINDWINDOWEX() HASA Quote Link to comment Share on other sites More sharing options...
evertonlb Posted April 9, 2020 Report Share Posted April 9, 2020 Então, a principio só tem numero, retirei o 55 ai não vai nada, e o caminho deve estar correto porque entra a mensagem só que na conversa em foco e não no zap que estou enviando tipo outro numero mesmo, mas... vou reforçar a leitura dos numeros do celular para ver se não estão indo caracteres especiais ocultos ou alto do tipo ok, agradeço. Detalhe estou usando HARBOUR 3.2 com FINDWINDOWEX() HASA Não seria "+55" Sei que no whatsapp web, para conversar com alguém sem ter ele nos contatos deve-se mandar o "+55" antes do número.. Quote Link to comment Share on other sites More sharing options...
Theotokos Posted April 9, 2020 Report Share Posted April 9, 2020 Tmb não consigui usar essa rotina, testei de varias maneiras... +55, 55, com DDD sem DDD, com zero antes do DDD sem zero... sempre acontece o que o amigo disse... envia a msg para o que esta em foco (aberto), ou seja, a rotina acima, não consegue buscar o celular e abrir a conversa para este.... Quote Link to comment Share on other sites More sharing options...
HASA Posted April 9, 2020 Report Share Posted April 9, 2020 Tmb não consigui usar essa rotina, testei de varias maneiras... +55, 55, com DDD sem DDD, com zero antes do DDD sem zero... sempre acontece o que o amigo disse... envia a msg para o que esta em foco (aberto), ou seja, a rotina acima, não consegue buscar o celular e abrir a conversa para este.... Exato. HASA Quote Link to comment Share on other sites More sharing options...
fladimir Posted April 9, 2020 Report Share Posted April 9, 2020 Amigos, usem a API e sejam felizes. Quote Link to comment Share on other sites More sharing options...
HASA Posted April 9, 2020 Report Share Posted April 9, 2020 Amigos, usem a API e sejam felizes. Você se refere a paga ? HASA Quote Link to comment Share on other sites More sharing options...
fladimir Posted April 9, 2020 Report Share Posted April 9, 2020 Você se refere a paga ? HASA Sim, mas o custo é único e vc usa com todos os clientes de sua carteira e com linhas/nrs de whats independentes, ou seja, sai de graça Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted April 9, 2020 Report Share Posted April 9, 2020 Estranho, uso esta rotina em varios clientes e não tem problemas. Voce pode deixar o whatsapp carregado que ele envia certinho. Mostra pra mim a linha de comando, a variavel lc_cLink lc_cLink := chr(34)+f_cWhatsAppCaminho+chr(34)+" https://api.whatsapp.com/send?phone=55"+TXT_CHAR_CLEAN(f_cNumeroWhats,{"(",")","-",".","+"}) Quote Link to comment Share on other sites More sharing options...
HASA Posted April 9, 2020 Report Share Posted April 9, 2020 Sim, mas o custo é único e vc usa com todos os clientes de sua carteira e com linhas/nrs de whats independentes, ou seja, sai de graça Interessante, vou bater cabeça com essa função se funciona lá funciona cá Kkkk HASA Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted April 10, 2020 Report Share Posted April 10, 2020 Poste aqui a linha de comando da variavel lc_clink Outra coisa, o contato tem que estar cadastrado no whats que esta em funcionamento. Quote Link to comment Share on other sites More sharing options...
miragerr Posted April 12, 2020 Report Share Posted April 12, 2020 Poste aqui a linha de comando da variavel lc_clink Outra coisa, o contato tem que estar cadastrado no whats que esta em funcionamento. Ola... Bom dia a todos Um detalhe giovanyvecchi, é positivável enviar um arquivo PDF ? como ? Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted April 13, 2020 Report Share Posted April 13, 2020 Fala Jackson, blz ? Olha, eu vi alguma coisa neste sentido para enviar fotos pelo Whats usando este método ai. Deve ser a mesma coisa para pdfs. Só que não interessei. Hoje vou dar uma olhada para ver e se der um tempinho faço as adaptações se funcionar. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.