Consulta Para Antonio Linares (Mensaje a Wathsapp)

ozono1981
Posts: 36
Joined: Tue Mar 26, 2013 2:09 pm

Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by ozono1981 »

Estimado Antonio y Amigos del Foro

Llevo mucho tiempo sin contactarlos, pero con _ de tecnologia de tiempo en tiempo me veo en la necesidad de recurrir a su basto conocimiento.

Un cliente me solicito hacer envios de Wathsapp a varios numeros, alguien tiene algo que me pueda servir o que me oriente que camino debo seguir?

Agradecido por su enorme ayuda.

Moisés
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by FiveWiDi »

Y porque whatsapp?
Los bancos utilizan el SMS.
Hazlo con SMS.
Yo uso http://www.smsarena.es ... y va de 10!!!
Ahora te falta un poco de marqueting para convencer al cliente.
Un Saludo
Carlos G.

FiveWin 19.06 + Harbour 3.2, BCC 7 Windows 10
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by cnavarro »

En alguna ocasión he oído hablar de http://www.apiwha.com/
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Silvio.Falconi
Posts: 4956
Joined: Thu Oct 18, 2012 7:17 pm

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by Silvio.Falconi »

do u Know How run it ?
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
User avatar
jnavas
Posts: 399
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela
Contact:

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by jnavas »

Code: Select all

#include "FiveWin.ch"
#include "hbsocket.ch"

function Main()

   local oWA := HB_WhatsApp():New()

   ? oWA:Connect()
   oWA:Login()

return nil

/*
cmResponse = Chr( 0x01 )+Chr( 0x31 )+Chr( 0xF8 )+Chr( 0x04 )+Chr( 0x86 )+Chr( 0xBD )+;
Chr( 0xA7 )+Chr( 0xFD )+Chr( 0 )+Chr( 0x01 )+Chr( 0x28 )    


// this packet contains the name 

cNext = Chr( 0 )+Chr( 0x12 )+Chr( 0xf8 )+Chr( 0x05 )+Chr( 0x74 )+Chr( 0xa2 )+Chr( 0xa3 )+Chr( 0x61 )+;
Chr( 0xFC )+Chr( 0x0A )+Chr( 0x41 )+Chr( 0x68 )+Chr( 0x6D )+Chr( 0x65 )+Chr( 0x64 )+Chr( 0x20 )+;
Chr( 0x4D )+Chr( 0x6F )+Chr( 0x68 )+Chr( 0x64 )+Chr( 0 )+Chr( 0x15 )+Chr( 0xF8 )+Chr( 0x06 )+;
Chr( 0x48 )+Chr( 0x43 )+Chr( 0x05 )+Chr( 0xA2 )+Chr( 0x3A )+Chr( 0xF8 )+Chr( 0x01 )+Chr( 0xF8 )+;
Chr( 0x04 )+Chr( 0x7B )+Chr( 0xBD )+Chr( 0x4D )+Chr( 0xF8 )+Chr( 0x01 )+Chr( 0xF8 )+Chr( 0x03 )+;
Chr( 0x55 )+Chr( 0x61 )+Chr( 0x24 )+Chr( 0 )+Chr( 0x12 )+Chr( 0xF8 )+Chr( 0x08 )+Chr( 0x48 )+Chr( 0x43 )+;
Chr( 0xFC )+Chr( 0x01 )+Chr( 0x32 )+Chr( 0xA2 )+Chr( 0x3A )+Chr( 0xA0 )+Chr( 0x8A )+Chr( 0xF8 )+Chr( 0x01 )+;
Chr( 0xF8 )+Chr( 0x03 )+Chr( 0x1F )+Chr( 0xBD )+Chr( 0xB1 )
*/

CLASS HB_WhatsApp

   DATA  pSocket
   DATA  cHost  INIT "bin-short.whatsapp.net"
   DATA  nPort  INIT 5222
   DATA  cIP
   DATA  aResArray
   DATA  cMsg
   DATA  _Incomplete_message

   METHOD New()
   METHOD Connect()
   METHOD Login()
   
   METHOD Read()
   METHOD Send( cData )

   METHOD _Identify( cStr )
   METHOD _Is_Full_Msg( cStr )

   DESTRUCTOR Destroy()

ENDCLASS

METHOD New() CLASS HB_WhatsApp

   ::cIP = hb_socketGetHosts( ::cHost )[ 1 ]
   ::pSocket = hb_socketOpen()

return self

METHOD Connect() CLASS HB_WhatsApp

return hb_socketConnect( ::pSocket, { HB_SOCKET_AF_INET, ::cIP, ::nPort } )

static function StrToHex( cStr )

   local n, cHex := "" 
   
   for n = 1 to Len( cStr )
      cHex += "0x" + hb_NumToHex( Asc( SubStr( cStr, n, 1 ) ) )
      if n < Len( cStr )
         cHex += ", "
      endif   
   next
   
return cHex         

static function random_uuid()

return hb_strformat( "%04x%04x-%04x-%04x-%04x-%04x%04x%04x",;
                     hb_Random( 0, 0xffff ), hb_Random( 0, 0xffff ),;
                     hb_Random( 0, 0xffff ),;
                     hb_BitOr( hb_Random( 0, 0x0fff ), 0x4000 ),;
                     hb_BitOr( hb_Random( 0, 0x3fff ), 0x8000 ),;
                     hb_Random( 0, 0xffff ), hb_Random( 0, 0xffff ), hb_Random( 0, 0xffff ) )
              
METHOD Login() CLASS HB_WhatsApp

   local cBuffer, cResponse

   ? ::Send( "WA" + Chr( 0x01 ) + Chr( 0 ) + Chr( 0 ) + ;
             Chr( 0x19 ) + Chr( 0xF8 ) + Chr( 0x05 ) + Chr( 0x01 ) + ;
             Chr( 0xA0 ) + Chr( 0x8A ) + Chr( 0x84 ) + Chr( 0xFC ) + ;
             Chr( 0x11 ) + "iPhone-2.6.9-5222" + ;
             Chr( 0 ) + Chr( 0x08 ) + Chr( 0xF8 ) + Chr( 0x02 ) + ;
             Chr( 0x96 ) + Chr( 0xF8 ) + Chr( 0x01 ) + Chr( 0xF8 ) + ;
             Chr( 0x01 ) + Chr( 0x7E ) + Chr( 0 ) + Chr( 0x07 ) + Chr( 0xF8 ) + ;
             Chr( 0x05 ) + Chr( 0x0F ) + Chr( 0x5A ) + Chr( 0x2A ) + ;
             Chr( 0xBD ) + Chr( 0xA7 ) )

   cBuffer = ::Read()
   cResponse = hb_base64decode( SubStr( cBuffer, 27 ) )

   ? cResponse
   ? random_uuid()

return nil

METHOD Read() CLASS HB_WhatsApp

   local cBuffer := Space( 1024 ), cV, cRcvdType
   local nLen := hb_socketRecv( ::pSocket, @cBuffer )

   cBuffer = SubStr( cBuffer, 1, nLen )
   ::aResArray = HB_ATokens( cBuffer, Chr( 0 ) )
   // ? StrToHex( cBuffer )
   
   for each cV in ::aResArray 
      cRcvdType = ::_Identify( cV ) 

      // ? cRcvdType
      // ? StrToHex( cV )

      do case
         case cRcvdType == "incomplete_msg"
              ::_incomplete_message = cV

         case cRcvdType == "msg"
              ::cMsg = ::parse_received_message( cV )
         
         case cRcvdType == "account_info"
              ::accinfo = ::parse_account_info( cV )

         case cRcvdType == "last_seen"
              ::lastseen = ::parse_last_seen( cV )
      endcase
   next

return cBuffer

METHOD Send( cData ) CLASS HB_WhatsApp

return hb_socketSend( ::pSocket, cData )

static function StartsWith( cStr, cCompare, nPos )

return SubStr( cStr, nPos, Len( cCompare ) ) == cCompare

static function EndsWith( cStr, cCompare )

return Right( cStr, Len( cCompare ) ) == cCompare

METHOD _Identify( cStr ) CLASS HB_WhatsApp

   local cMsg_identifier := Chr( 0x5D ) + Chr( 0x38 ) + Chr( 0xFA ) + Chr( 0xFC ) 
   local cServer_delivery_identifier := Chr( 0x8C ) 
   local cClient_delivery_identifier := Chr( 0x7F ) + Chr( 0xBD ) + Chr( 0xAD )
   local cAcc_info_iden := Chr( 0x99 ) + Chr( 0xBD ) + Chr( 0xA7 ) + Chr( 0x94 )    
   local cLast_seen_ident := Chr( 0x48 ) + Chr( 0x38 ) + Chr( 0xFA ) + Chr( 0xFC )
   local cLast_seen_ident2 := Chr( 0x7B ) + Chr( 0xBD ) + Chr( 0x4C ) + Chr( 0x8B )

   if ! ::_is_full_msg( cStr )
      return "incomplete_msg"

   elseif StartsWith( cStr, cMsg_identifier, 3 )

      if EndsWith( cStr, cServer_delivery_identifier )
         return "server_delivery_report"

      elseif EndsWith( cStr, cClient_delivery_identifier ) 
         return "client_delivery_report"

      else
         return "msg"

      endif 

   elseif StartsWith( cStr, cAcc_info_iden, 3 )
      return "account_info"

   elseif StartsWith( cStr, cLast_seen_ident, 3 ) .and. cLast_seen_ident2 $ cStr
      return "last_seen"
   
   else
      return "other"

   endif

return nil

METHOD _Is_Full_Msg( cStr ) CLASS HB_WhatsApp

return Len( cStr ) == Asc( Left( cStr, 1 ) ) + 1

METHOD Destroy() CLASS HB_WhatsApp

   HB_SocketShutDown( ::pSocket )
   HB_SocketClose( ::pSocket )

   ::pSocket = nil

return nil



 
User avatar
Xevi
Posts: 168
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by Xevi »

Este código / classe, compila y se ejecuta. Muestra unos Alerts, pero no veo como utilizarlo en la práctica.

De poder mandar mensajes de Whatsapp desde Harbour... seria un lujazo!!!
Un Saludo,
Xevi.

Aprendiz de la vida!!!
cwanderlei_cardoso
Posts: 3
Joined: Mon May 20, 2019 3:49 pm

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by cwanderlei_cardoso »

Linares essa classe funciona? e se funciona, como que é?
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by Antonio Linares »

El API de whatsapp ha cambiado varias veces, luego no se si funciona ó no

A ver que comentan otros usuarios
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
jvtecheto
Posts: 357
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by jvtecheto »

Antonio Linares wrote:El API de whatsapp ha cambiado varias veces, luego no se si funciona ó no

A ver que comentan otros usuarios
Hola.

Yo también compile la clase y no da errores. Veo que es de Juan Navàs con el cual nos cruzamos correos hace muchoooooss años y es un gran programador, seguro que si tiene un rato nos aclarara el asunto.

Sería una aportación fantástica.

José

Enviado desde mi ONE A2003 mediante Tapatalk
Fwh 19.06 32 bits + Harbour 3.2dev(r2011030937)+ Borland 7.4 + FivEdit
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by Marcelo Roggeri »

Hola buenas tardes, yo la he compilado y al ejecutar da unos mensajes : el primero .T. el segundo 50 el tercero vacío y el ultimo un conjunto de números y letras.
También me interesa.
Saludos
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
User avatar
Sistem
Posts: 224
Joined: Sun May 13, 2012 7:52 am

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by Sistem »

tem que loga na whatsappWEB

for x=1 to 10
Whatsapp("85999999999", "859999904"+strzero(x,2), "msg teste"+strzero(x,2))
next
*--------------------------------------------------------------------------------
Function Whatsapp(cDe, cPara, cmsg)
Local clink := "wppredirect.tk/go/?p=55"+cPara+"&m=Envio"+cDe // 55 brasil

oShell := CreateObject( "WScript.Shell" )
oShell:run(uRegPath+"\chrome\chrome.exe "+clink )
syswait(5)
oShell:SendKeys("~")
syswait(2)
oShell:SendKeys("Ola mundo")
oShell:SendKeys("~")
syswait(2)
oShell:SendKeys(cMsg)
oShell:SendKeys("~")

Return nil
FWH2008 | xHarbour | BCC74 | SQLRDD
User avatar
Sistem
Posts: 224
Joined: Sun May 13, 2012 7:52 am

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by Sistem »

usando o proprio whatsapp

Code: Select all

for x=1 to 10
    Whatsapp("85999999999", "859999904"+strzero(x,2), "msg teste"+strzero(x,2))
next

*--------------------------------------------------------------------------------
Function Whatsapp(cDe, cPara, cmsg)
Local clink := "https://api.whatsapp.com/send?phone=55"+cPara+"&text="+cmsg

   oShell := CreateObject( "WScript.Shell" )
   oShell:run(uRegPath+"\chrome\chrome.exe "+clink)
   syswait(2)
   oShell:sendkeys("{tab}")
   syswait(2)
   oShell:sendkeys("{tab}")
   syswait(2)
   oShell:SendKeys("~")
   syswait(5)
   oShell:sendkeys("ola, *"+cPara+"* essa e uma mensagem automatica")
   oShell:SendKeys("~")
   syswait(3)
   oShell:SendKeys(cMsg)
   oShell:SendKeys("~")
   syswait(3)
   oShell:SendKeys("~")
Return nil
FWH2008 | xHarbour | BCC74 | SQLRDD
User avatar
Marcelo Roggeri
Posts: 275
Joined: Sat Jul 22, 2006 9:04 pm
Location: Venado Tuerto - Santa Fe -Argentina
Contact:

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by Marcelo Roggeri »

Hola gracias por compartir el código, para que Chrome quede oculto como haces? se puede?
Saludos
Marcelo
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
User avatar
Silvio.Falconi
Posts: 4956
Joined: Thu Oct 18, 2012 7:17 pm

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by Silvio.Falconi »

Application
===========
Path and name: C:\Work\Errori\whatup\test.Exe (32 bits)
Size: 3,795,456 bytes
Compiler version: Harbour 3.2.0dev (r1712141320)
FiveWin version: FWH 19.03
C compiler version: Borland/Embarcadero C++ 7.3 (32-bit)
Windows version: 6.1, Build 7601 Service Pack 1

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 06/12/19, 10:42:46
Error description: (DOS Error -2147352567) WINOLE/1007 (0x80070002): RUN
Args:
[ 1] = C C:\Program Files (x86)\Google\\chrome\chrome.exe https://api.whatsapp.com/send?phone=553 ... 1&text=msg teste01

Stack Calls
===========
Called from: => TOLEAUTO:RUN( 0 )
Called from: test.prg => WHATSAPP( 32 )
Called from: test.prg => TEST( 19 )
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
User avatar
Sistem
Posts: 224
Joined: Sun May 13, 2012 7:52 am

Re: Consulta Para Antonio Linares (Mensaje a Wathsapp)

Post by Sistem »

Marcelo Roggeri wrote:Hola gracias por compartir el código, para que Chrome quede oculto como haces? se puede?
Saludos
Marcelo
oShell:run("chrome.exe "+clink, 0) // tenta 0
FWH2008 | xHarbour | BCC74 | SQLRDD
Post Reply