Underc0de

Programación General => C# - VB.NET => Mensaje iniciado por: 79137913 en Julio 29, 2014, 06:48:53 PM

Título: [VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: 79137913 en Julio 29, 2014, 06:48:53 PM
HOLA!!!

Antes que nada Gracias a Shiroko por desarrollar el api junto a venom0ux, y tambien a fermino por salvarme algunas dudas y por darme la idea de empezar a implementar WhatsAPI.

En este post no se explicara que es WhatsAPI (https://github.com/venomous0x/WhatsAPI), aclaro que no se usara WhatsAPI (https://github.com/venomous0x/WhatsAPI) sino WhatsAPI.Net (https://github.com/perezdidac/WhatsAPINet), tampoco se enseñara paso a paso y menos se daran indicaciones sobre el uso del lenguaje VB.Net.

Que vamos a necesitar:
Si es posible el ultimo VisualStudio (http://www.visualstudio.com/es-es/visual-studio-homepage-vs.aspx), sino cualquier otro servira.
WART (https://github.com/shirioko/WART) (descargar el Exe)
WhatsAppAPI.dll (http://www.mediafire.com/download/2zq48ba272yju7y/WhatsAppApi.rar) (Les dejo la ultima version a la fecha subida a Mediafire, pero intenten bajar una que este actualizada o compilenla del source en github (https://github.com/perezdidac/WhatsAPINet)).
Y por ultimo de ser posible una linea de telefono en la que no utilicemos WhatsApp (asi no se nos complican las cosas, el celular de la abuela servirá).

Empezamos:

Abrimos el WART, Colocamos nuestro numero(Sin + y sin ceros al principio, por ejemplo un numero para argentina seria 5492235352914 o 542235352914 [Nunca supe la diferencia entre con nueve y sin nueve]) y apretamos el boton Request Code
(http://i.imgur.com/3KZEsmR.png)
Una vez hecho esto te llegara un SMS o una llamada dandote un codigo, Colocalo en Code y presiona Confirm Code, luego nos dara una contraseña. (en caso de perder la contraseña, como ya estan registrados solo tienen que poner el numero y Clickear en Check Existing.)

La contraseña que nos dio la tenemos que copiar y guardar en un archivo de texto llamado "WAPASS.txt" en la carpeta donde se ejecute nuestra aplicacion, para testeos o debug, obviamente sera en "ruta_al_proyecto/bin/debug/WAPASS.txt".

Despues vamos a hacer un proyecto nuevo y vamos a agregar un modulo "mWhatsApp".
Código (vbnet) [Seleccionar]
Module mWhatsApp
    Dim WAPass As String
    Const WANum As String = "5492236685519"
    Dim wa As WhatsApp
    Public Sub InitWA(ByVal NickName As String, Optional ByVal debug As Boolean = False)
        WAPass = File.ReadAllText(My.Application.Info.DirectoryPath & "\WAPASS.txt")
        wa = New WhatsApp(WANum, WAPass, NickName, debug)
        AddHandler wa.OnLoginSuccess, AddressOf wa_OnLoginSuccess
        AddHandler wa.OnLoginFailed, AddressOf wa_OnLoginFailed
        AddHandler wa.OnGetMessage, AddressOf wa_OnGetMessage
        AddHandler wa.OnGetMessageReceivedClient, AddressOf wa_OnGetMessageReceivedClient
        AddHandler wa.OnGetMessageReceivedServer, AddressOf wa_OnGetMessageReceivedServer
        AddHandler wa.OnNotificationPicture, AddressOf wa_OnNotificationPicture
        AddHandler wa.OnGetPresence, AddressOf wa_OnGetPresence
        AddHandler wa.OnGetGroupParticipants, AddressOf wa_OnGetGroupParticipants
        AddHandler wa.OnGetLastSeen, AddressOf wa_OnGetLastSeen
        AddHandler wa.OnGetTyping, AddressOf wa_OnGetTyping
        AddHandler wa.OnGetPaused, AddressOf wa_OnGetPaused
        AddHandler wa.OnGetMessageImage, AddressOf wa_OnGetMessageImage
        AddHandler wa.OnGetMessageAudio, AddressOf wa_OnGetMessageAudio
        AddHandler wa.OnGetMessageVideo, AddressOf wa_OnGetMessageVideo
        AddHandler wa.OnGetMessageLocation, AddressOf wa_OnGetMessageLocation
        AddHandler wa.OnGetMessageVcard, AddressOf wa_OnGetMessageVcard
        AddHandler wa.OnGetPhoto, AddressOf wa_OnGetPhoto
        AddHandler wa.OnGetPhotoPreview, AddressOf wa_OnGetPhotoPreview
        AddHandler wa.OnGetGroups, AddressOf wa_OnGetGroups
        AddHandler wa.OnGetSyncResult, AddressOf wa_OnGetSyncResult
        AddHandler wa.OnGetStatus, AddressOf wa_OnGetStatus
        AddHandler wa.OnGetPrivacySettings, AddressOf wa_OnGetPrivacySettings
        AddHandler WhatsAppApi.Helper.DebugAdapter.Instance.OnPrintDebug, AddressOf Instance_OnPrintDebug
        wa.Connect()
        Dim datFile As String = getDatFileName(WANum)
        Dim nextChallenge() As Byte
        If (File.Exists(datFile)) Then
            Dim foo As String = File.ReadAllText(datFile)
            nextChallenge = Convert.FromBase64String(foo)
        End If
        wa.Login(nextChallenge)
        ProcessChat(wa)
    End Sub
    Public Function SendWA(ByVal MSG As String, Num As String) As Boolean
        Dim usrMan As New WhatsUserManager()
        Dim tmpUser = usrMan.CreateUser(Num, "User")
        wa.SendMessage(Num, MSG)


        Return True
    End Function
    Public Sub Instance_OnPrintDebug(value As Object)
        Debug.Print(value)
    End Sub
    Public Sub wa_OnGetPrivacySettings(settings As Dictionary(Of WhatsApp.VisibilityCategory, WhatsApp.VisibilitySetting))

    End Sub
    Public Sub wa_OnGetStatus(form As String, type As String, name As String, status As String)

    End Sub
    Public Function getDatFileName(pn As String) As String
        Dim filename As String = String.Format("{0}.next.dat", pn)
        Return Path.Combine(Directory.GetCurrentDirectory(), filename)
    End Function
    Public Sub wa_OnGetSyncResult(index As Integer, sid As String, existingUsers As Dictionary(Of String, String), failedNumbers As String())

    End Sub
    Public Sub wa_OnGetGroups(groups As WaGroupInfo())

    End Sub
    Public Sub wa_OnGetPhotoPreview(from As String, id As String, data() As Byte)
        File.WriteAllBytes(String.Format("preview_{0}.jpg", from), data)
    End Sub
    Public Sub wa_OnGetPhoto(from As String, id As String, data() As Byte)
        File.WriteAllBytes(String.Format("{0}.jpg", from), Data)
    End Sub
    Public Sub wa_OnGetMessageVcard(from As String, id As String, name As String, data() As Byte)
        File.WriteAllBytes(String.Format("{0}.vcf", name), Data)
    End Sub
    Public Sub wa_OnGetMessageLocation(from As String, id As String, lon As Double, lat As Double, url As String, name As String, preview() As Byte)
        File.WriteAllBytes(String.Format("{0}{1end sub.jpg", lat, lon), preview)
    End Sub
    Public Sub wa_OnGetMessageVideo(from As String, id As String, filename As String, fileSize As Integer, url As String, preview() As Byte)
        OnGetMedia(filename, url, preview)
    End Sub
    Public Sub OnGetMedia(file As String, url As String, data() As Byte)
        My.Computer.FileSystem.WriteAllBytes(String.Format("preview_{0}.jpg", file), data, False)
        Dim WA_WC As New WebClient
        WA_WC.DownloadFileAsync(New Uri(url), file, 0)
    End Sub
    Public Sub wa_OnGetMessageAudio(from As String, id As String, filename As String, filesize As Integer, url As String, preview() As Byte)
        OnGetMedia(filename, url, preview)
    End Sub
    Public Sub wa_OnGetMessageImage(from As String, id As String, filename As String, size As Integer, url As String, preview() As Byte)
        OnGetMedia(filename, url, preview)
    End Sub
    Public Sub wa_OnGetPaused(from As String)

    End Sub
    Public Sub wa_OnGetTyping(from As String)

    End Sub
    Public Sub wa_OnGetLastSeen(from As String, lastseen As DateTime)

    End Sub
    Public Sub wa_OnGetMessageReceivedServer(from As String, id As String)

    End Sub
    Public Sub wa_OnGetMessageReceivedClient(from As String, id As String)

    End Sub
    Public Sub wa_OnGetGroupParticipants(gjid As String, jids() As String)

    End Sub
    Public Sub wa_OnGetPresence(from As String, type As String)

    End Sub
    Public Sub wa_OnNotificationPicture(type As String, jid As String, id As String)

    End Sub
    Public Sub wa_OnGetMessage(node As ProtocolTreeNode, from As String, id As String, name As String, message As String, receipt_sent As Boolean)
        Dim Number As String = Split(from, "@")(0)

    End Sub
    Private Sub wa_OnLoginFailed(data As String)
        End
    End Sub
    Private Sub wa_OnLoginSuccess(phoneNumber As String, data() As Byte)
        ' next password
        Dim sdata As String = Convert.ToBase64String(data)
        My.Computer.FileSystem.WriteAllText(getDatFileName(WANum), sdata, False)
    End Sub
    Private Sub ProcessChat(wa As WhatsApp)
        Dim thRecv = New Thread(AddressOf ProcessChatT) : thRecv.IsBackground = True
        thRecv.Start()
    End Sub
    Sub ProcessChatT(t)
        Try
            While wa IsNot Nothing
                wa.PollMessages()
                Thread.Sleep(100)
                Continue While
            End While
        Catch generatedExceptionName As ThreadAbortException
        End Try

    End Sub
End Module


Una vez agregado este codigo vamos a Agregar codigo al form principal para terminar con este ejemplito. (Mi from se llama Principal, ojo)
Código (vbnet) [Seleccionar]
    Private Sub Principal_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        InitWA("Tutorial By 79137913")
        Call SendWA("Prueba 1", "ACAPONEELNUMEROALQUEQUIERASMANDARELMENSAJE")
    End Sub


En InitWA pones el Nick que quieras y en SendWa pones el mensaje seguido del numero al que quieras enviar un mensaje

Nota: para que no sea spam ambas personas deben estar en sus respectivas listas de contactos, por ende agrega al sistema a tu lista de contactos antes de enviar mensajes para que no se bloquee el usuario.

GRACIAS POR LEER!!!
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: ANTRAX en Julio 30, 2014, 09:02:01 AM
Grande numeros!!
Muchisimas gracias!!
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: fermino en Julio 30, 2014, 10:28:08 AM
Buenísimo! Ahora hay que portar la API a Python :o
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: ANTRAX en Julio 30, 2014, 10:28:58 AM
Eso si que sería un golazo de media cancha!

Fermino, aprovecha para postear la documentacion de tu codigo!!!

Saludos!
ANTRAX
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: WhiZ en Julio 30, 2014, 10:39:00 AM
Se puede hacer en python. Justamente el otro dia estuve viendo y ya hay algo hecho.
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: fermino en Julio 31, 2014, 05:51:23 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Eso si que sería un golazo de media cancha!

Fermino, aprovecha para postear la documentacion de tu codigo!!!

Saludos!
ANTRAX

Del mío? El OnlineChecker, verdad?
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: Snifer en Julio 31, 2014, 06:08:30 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Eso si que sería un golazo de media cancha!

Fermino, aprovecha para postear la documentacion de tu codigo!!!

Saludos!
ANTRAX

Del mío? El OnlineChecker, verdad?

No el MIo sniferChecker acaso tienes otro codigo con Whatsapeee!!

SapeeE!

Regards,
Snifer
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: fermino en Julio 31, 2014, 06:18:41 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Eso si que sería un golazo de media cancha!

Fermino, aprovecha para postear la documentacion de tu codigo!!!

Saludos!
ANTRAX

Del mío? El OnlineChecker, verdad?

No el MIo sniferChecker acaso tienes otro codigo con Whatsapeee!!

SapeeE!

Regards,
Snifer

xDDD Es que ultimamente estoy jugando mucho con esta api
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: hielasangre en Julio 31, 2014, 08:07:30 PM
Yo la hice en php, y lo tengo funcionando desde hce mucho tiempo, no lo hice publico porque lo va a agarrar cualquier y se va a perder algo que costo mucho

(http://i62.tinypic.com/91a104.png)

Como mi madre no tiene un celular de alta gama con eso puede escribir desde la web :p

Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: blackdrake en Julio 31, 2014, 09:00:07 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Yo la hice en php, y lo tengo funcionando desde hce mucho tiempo, no lo hice publico porque lo va a agarrar cualquier y se va a perder algo que costo mucho

(http://i62.tinypic.com/91a104.png)

Como mi madre no tiene un celular de alta gama con eso puede escribir desde la web :p

No podrías hacer una excepción y pasarmelo? Me interesa más el código que en si utilizarlo y obviamente ni se me pasa por la cabeza publicarlo...

Un saludo.
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: Alex en Julio 31, 2014, 09:26:56 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No podrías hacer una excepción y pasarmelo? Me interesa más el código que en si utilizarlo y obviamente ni se me pasa por la cabeza publicarlo...

Un saludo.

acá tenes la ApiWhatsapp portada para php (del mismo grupo del original que portó numeritos)

https://github.com/venomous0x/WhatsAPI

y acá tenes un proyecto mío , una plataforma diseñada usando la api esa para crear un bot personalizado en php

https://github.com/alexander171294/WhatsBot

por cierto, el mío está en la rama develop, la rama master tiene el code de fermino.

saludos!
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: hielasangre en Julio 31, 2014, 09:52:25 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No podrías hacer una excepción y pasarmelo? Me interesa más el código que en si utilizarlo y obviamente ni se me pasa por la cabeza publicarlo...

Un saludo.

acá tenes la ApiWhatsapp portada para php (del mismo grupo del original que portó numeritos)

https://github.com/venomous0x/WhatsAPI

y acá tenes un proyecto mío , una plataforma diseñada usando la api esa para crear un bot personalizado en php

https://github.com/alexander171294/WhatsBot

por cierto, el mío está en la rama develop, la rama master tiene el code de fermino.

saludos!

Es buena opcion whatsappi, aunque yo prefiero hacer las cosas por mi cuenta, y tambien creo que estamos laburando en lo mismo xD

(http://i61.tinypic.com/2058sh0.png)

Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: Alex en Julio 31, 2014, 09:57:55 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No podrías hacer una excepción y pasarmelo? Me interesa más el código que en si utilizarlo y obviamente ni se me pasa por la cabeza publicarlo...

Un saludo.

acá tenes la ApiWhatsapp portada para php (del mismo grupo del original que portó numeritos)

https://github.com/venomous0x/WhatsAPI

y acá tenes un proyecto mío , una plataforma diseñada usando la api esa para crear un bot personalizado en php

https://github.com/alexander171294/WhatsBot

por cierto, el mío está en la rama develop, la rama master tiene el code de fermino.

saludos!

Es buena opcion whatsappi, aunque yo prefiero hacer las cosas por mi cuenta, y tambien creo que estamos laburando en lo mismo xD

(http://i61.tinypic.com/2058sh0.png)

yo lo hago para php-cli, y solo como hobby.

si yo tambien prefiero hacer las cosas a mi manera pero me dio vagancia hacer una api de whatsapp, realmente no tengo mucho tiempo para dedicarle.
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: blackdrake en Agosto 01, 2014, 08:29:17 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No podrías hacer una excepción y pasarmelo? Me interesa más el código que en si utilizarlo y obviamente ni se me pasa por la cabeza publicarlo...

Un saludo.

acá tenes la ApiWhatsapp portada para php (del mismo grupo del original que portó numeritos)

https://github.com/venomous0x/WhatsAPI

y acá tenes un proyecto mío , una plataforma diseñada usando la api esa para crear un bot personalizado en php

https://github.com/alexander171294/WhatsBot

por cierto, el mío está en la rama develop, la rama master tiene el code de fermino.

saludos!

Gracias :$

Edito: El ejemplo de ajax tiene xss xDD
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: Okiz en Agosto 05, 2014, 08:43:36 PM
Hielasangre que bueno, es normal que no lo quieras dar, por que cualquiera va a coger y se va a apropiar de tu proyecto y como bien dices te habra costado mucho tiempo y dedicación, para que venga uno y en 5 minutos diga que lo a hecho él.
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: blackdrake en Agosto 06, 2014, 04:27:37 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hielasangre que bueno, es normal que no lo quieras dar, por que cualquiera va a coger y se va a apropiar de tu proyecto y como bien dices te habra costado mucho tiempo y dedicación, para que venga uno y en 5 minutos diga que lo a hecho él.

Es lógico y más hablando de proyectos que no se hacen en 15 minutos, en estos casos tienes varias opciones, o para ti solito, o para todos (lo publicas y el reconocimiento es tuyo), o para gente en la que confias (sabiendo que la gente es muy falsa y que es posible que lo reenvien...).
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: an0nw0rm en Octubre 06, 2014, 05:47:40 PM
No faltan declaraciones? Como File
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: 79137913 en Octubre 08, 2014, 12:48:23 PM
HOLA!!!

No, no falta ninguna declaracion, File no es una variable XD

GRACIAS POR LEER!!!
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: pachoduran en Noviembre 25, 2014, 02:01:48 AM
Hola, muy interesante este tema, hice la prueba y me ha funcionado muy bien, he tratado de enviar un mensaje con una foto y no he podido, podrian ayudarme?

Modifique la funcion SendWA del ejemplo para poder enviar imagenes:

    Public Function SendWA(ByVal MSG As String, ByVal Num As String) As Boolean
        Dim usrMan As New WhatsUserManager()
        Dim imgSegnature As Image

        Dim tmpUser = usrMan.CreateUser(Num, "User")
        imgSegnature = Image.FromFile("p.jpg")
        Dim ms = New MemoryStream()
        imgSegnature.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg) ' Use appropriate format here
        Dim bytes = ms.ToArray()

        wa.SendMessageImage(Num, bytes, ApiBase.ImageType.JPEG)

        Return True
    End Function

Siempre se bloquea y nunca envia la imagen.

Muchas gracias. Dios los bendiga
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: aarbuet en Febrero 11, 2015, 11:45:12 AM
alguno podrá postear el proyecto completo en .net y pasar el link, que en algo la estoy cagando y se me tranca, supongo que alguna referencia
Saludos
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: Snifer en Febrero 11, 2015, 04:12:10 PM
Si indicas que falencias tienes claro que te podremos ayudar.


Regards,
Snifer
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: findesemana en Febrero 12, 2015, 10:29:53 PM
faltan importar algunas librerias, es cierto.. escribeme si todavia no lo has resuelto
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: chesteralex en Febrero 13, 2015, 09:12:19 PM
Un saludo y gracias por las aportaciones al foto.

Tengo una pregunta en cuestión me encuentro atorado en el código de prueba que están publicando exactamente en esta parte.

wa.Connect()
        Dim datFile As String = getDatFileName(WANum)
        Dim nextChallenge() As Byte
       [b] If (File.Exists(datFile)) Then[/b]
            Dim foo As String = File.ReadAllText(datFile)
            nextChallenge = Convert.FromBase64String(foo)
        End If End If


Exactamente aquí, me busca un archivo que en ningún lugar me lo crea es un .dat

Alguien me podria ayudar?

Gracias,
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: jvillal en Abril 10, 2015, 11:07:18 PM
Hola amigos,

Estoy intentando que me llegue el SMS de activación pero imposible hasta ahora,  no me muestra ningún mensaje al ejecutar el registro.

Alguien con algún camino para solucionarlo.

Gracias.
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: yermanbrooss en Febrero 11, 2016, 06:43:22 PM
Hola, el link "WART (descargar el Exe)" sale tremendo error 404, alguien me lo puede pasar? muchas gracias!

pd: los admiro mucho por el trabajo que han hecho
Título: Re:[VB] Porteo de la implementacion del api de WhatsApi a VB.Net
Publicado por: 79137913 en Febrero 12, 2016, 09:51:55 AM
HOLA!!!

El creador de la dll de WhatsAPI Descontinuo el proyecto.

Lamentablemente ya no es funcional este proyecto.

Cierro.

GRACIAS POR LEER!!!