elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 5 Ir Abajo Respuesta Imprimir
Autor Tema: [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI  (Leído 63,617 veces)
79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
[VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
« en: 29 Julio 2014, 23:49 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, aclaro que no se usara WhatsAPI sino WhatsAPI.Net, 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, sino cualquier otro servira.
WART (descargar el Exe)
WhatsAppAPI.dll (Les dejo la ultima version a la fecha subida a Mediafire, pero intenten bajar una que este actualizada o compilenla del source en github).
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

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
  1. Module mWhatsApp
  2.    Dim WAPass As String
  3.    Const WANum As String = "5492236685519"
  4.    Dim wa As WhatsApp
  5.    Public Sub InitWA(ByVal NickName As String, Optional ByVal debug As Boolean = False)
  6.        WAPass = File.ReadAllText(My.Application.Info.DirectoryPath & "\WAPASS.txt")
  7.        wa = New WhatsApp(WANum, WAPass, NickName, debug)
  8.        AddHandler wa.OnLoginSuccess, AddressOf wa_OnLoginSuccess
  9.        AddHandler wa.OnLoginFailed, AddressOf wa_OnLoginFailed
  10.        AddHandler wa.OnGetMessage, AddressOf wa_OnGetMessage
  11.        AddHandler wa.OnGetMessageReceivedClient, AddressOf wa_OnGetMessageReceivedClient
  12.        AddHandler wa.OnGetMessageReceivedServer, AddressOf wa_OnGetMessageReceivedServer
  13.        AddHandler wa.OnNotificationPicture, AddressOf wa_OnNotificationPicture
  14.        AddHandler wa.OnGetPresence, AddressOf wa_OnGetPresence
  15.        AddHandler wa.OnGetGroupParticipants, AddressOf wa_OnGetGroupParticipants
  16.        AddHandler wa.OnGetLastSeen, AddressOf wa_OnGetLastSeen
  17.        AddHandler wa.OnGetTyping, AddressOf wa_OnGetTyping
  18.        AddHandler wa.OnGetPaused, AddressOf wa_OnGetPaused
  19.        AddHandler wa.OnGetMessageImage, AddressOf wa_OnGetMessageImage
  20.        AddHandler wa.OnGetMessageAudio, AddressOf wa_OnGetMessageAudio
  21.        AddHandler wa.OnGetMessageVideo, AddressOf wa_OnGetMessageVideo
  22.        AddHandler wa.OnGetMessageLocation, AddressOf wa_OnGetMessageLocation
  23.        AddHandler wa.OnGetMessageVcard, AddressOf wa_OnGetMessageVcard
  24.        AddHandler wa.OnGetPhoto, AddressOf wa_OnGetPhoto
  25.        AddHandler wa.OnGetPhotoPreview, AddressOf wa_OnGetPhotoPreview
  26.        AddHandler wa.OnGetGroups, AddressOf wa_OnGetGroups
  27.        AddHandler wa.OnGetSyncResult, AddressOf wa_OnGetSyncResult
  28.        AddHandler wa.OnGetStatus, AddressOf wa_OnGetStatus
  29.        AddHandler wa.OnGetPrivacySettings, AddressOf wa_OnGetPrivacySettings
  30.        AddHandler WhatsAppApi.Helper.DebugAdapter.Instance.OnPrintDebug, AddressOf Instance_OnPrintDebug
  31.        wa.Connect()
  32.        Dim datFile As String = getDatFileName(WANum)
  33.        Dim nextChallenge() As Byte
  34.        If (File.Exists(datFile)) Then
  35.            Dim foo As String = File.ReadAllText(datFile)
  36.            nextChallenge = Convert.FromBase64String(foo)
  37.        End If
  38.        wa.Login(nextChallenge)
  39.        ProcessChat(wa)
  40.    End Sub
  41.    Public Function SendWA(ByVal MSG As String, Num As String) As Boolean
  42.        Dim usrMan As New WhatsUserManager()
  43.        Dim tmpUser = usrMan.CreateUser(Num, "User")
  44.        wa.SendMessage(Num, MSG)
  45.  
  46.  
  47.        Return True
  48.    End Function
  49.    Public Sub Instance_OnPrintDebug(value As Object)
  50.        Debug.Print(value)
  51.    End Sub
  52.    Public Sub wa_OnGetPrivacySettings(settings As Dictionary(Of WhatsApp.VisibilityCategory, WhatsApp.VisibilitySetting))
  53.  
  54.    End Sub
  55.    Public Sub wa_OnGetStatus(form As String, type As String, name As String, status As String)
  56.  
  57.    End Sub
  58.    Public Function getDatFileName(pn As String) As String
  59.        Dim filename As String = String.Format("{0}.next.dat", pn)
  60.        Return Path.Combine(Directory.GetCurrentDirectory(), filename)
  61.    End Function
  62.    Public Sub wa_OnGetSyncResult(index As Integer, sid As String, existingUsers As Dictionary(Of String, String), failedNumbers As String())
  63.  
  64.    End Sub
  65.    Public Sub wa_OnGetGroups(groups As WaGroupInfo())
  66.  
  67.    End Sub
  68.    Public Sub wa_OnGetPhotoPreview(from As String, id As String, data() As Byte)
  69.        File.WriteAllBytes(String.Format("preview_{0}.jpg", from), data)
  70.    End Sub
  71.    Public Sub wa_OnGetPhoto(from As String, id As String, data() As Byte)
  72.        File.WriteAllBytes(String.Format("{0}.jpg", from), Data)
  73.    End Sub
  74.    Public Sub wa_OnGetMessageVcard(from As String, id As String, name As String, data() As Byte)
  75.        File.WriteAllBytes(String.Format("{0}.vcf", name), Data)
  76.    End Sub
  77.    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)
  78.        File.WriteAllBytes(String.Format("{0}{1end sub.jpg", lat, lon), preview)
  79.    End Sub
  80.    Public Sub wa_OnGetMessageVideo(from As String, id As String, filename As String, fileSize As Integer, url As String, preview() As Byte)
  81.        OnGetMedia(filename, url, preview)
  82.    End Sub
  83.    Public Sub OnGetMedia(file As String, url As String, data() As Byte)
  84.        My.Computer.FileSystem.WriteAllBytes(String.Format("preview_{0}.jpg", file), data, False)
  85.        Dim WA_WC As New WebClient
  86.        WA_WC.DownloadFileAsync(New Uri(url), file, 0)
  87.    End Sub
  88.    Public Sub wa_OnGetMessageAudio(from As String, id As String, filename As String, filesize As Integer, url As String, preview() As Byte)
  89.        OnGetMedia(filename, url, preview)
  90.    End Sub
  91.    Public Sub wa_OnGetMessageImage(from As String, id As String, filename As String, size As Integer, url As String, preview() As Byte)
  92.        OnGetMedia(filename, url, preview)
  93.    End Sub
  94.    Public Sub wa_OnGetPaused(from As String)
  95.  
  96.    End Sub
  97.    Public Sub wa_OnGetTyping(from As String)
  98.  
  99.    End Sub
  100.    Public Sub wa_OnGetLastSeen(from As String, lastseen As DateTime)
  101.  
  102.    End Sub
  103.    Public Sub wa_OnGetMessageReceivedServer(from As String, id As String)
  104.  
  105.    End Sub
  106.    Public Sub wa_OnGetMessageReceivedClient(from As String, id As String)
  107.  
  108.    End Sub
  109.    Public Sub wa_OnGetGroupParticipants(gjid As String, jids() As String)
  110.  
  111.    End Sub
  112.    Public Sub wa_OnGetPresence(from As String, type As String)
  113.  
  114.    End Sub
  115.    Public Sub wa_OnNotificationPicture(type As String, jid As String, id As String)
  116.  
  117.    End Sub
  118.    Public Sub wa_OnGetMessage(node As ProtocolTreeNode, from As String, id As String, name As String, message As String, receipt_sent As Boolean)
  119.        Dim Number As String = Split(from, "@")(0)
  120.  
  121.    End Sub
  122.    Private Sub wa_OnLoginFailed(data As String)
  123.        End
  124.    End Sub
  125.    Private Sub wa_OnLoginSuccess(phoneNumber As String, data() As Byte)
  126.        ' next password
  127.        Dim sdata As String = Convert.ToBase64String(data)
  128.        My.Computer.FileSystem.WriteAllText(getDatFileName(WANum), sdata, False)
  129.    End Sub
  130.    Private Sub ProcessChat(wa As WhatsApp)
  131.        Dim thRecv = New Thread(AddressOf ProcessChatT) : thRecv.IsBackground = True
  132.        thRecv.Start()
  133.    End Sub
  134.    Sub ProcessChatT(t)
  135.        Try
  136.            While wa IsNot Nothing
  137.                wa.PollMessages()
  138.                Thread.Sleep(100)
  139.                Continue While
  140.            End While
  141.        Catch generatedExceptionName As ThreadAbortException
  142.        End Try
  143.  
  144.    End Sub
  145. 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
  1.    Private Sub Principal_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  2.        InitWA("Tutorial By 79137913")
  3.        Call SendWA("Prueba 1", "ACAPONEELNUMEROALQUEQUIERASMANDARELMENSAJE")
  4.    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!!!


« Última modificación: 30 Julio 2014, 00:14 am por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
jalvear1

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
« Respuesta #1 en: 30 Octubre 2014, 22:19 pm »

Amigo tengo una pregunta, quiero saber caunto tiempo de duracion tiene esta aplicacion ya que a los clientes de mi empresa les envio un mensaje diario , de sus ingresos segun el software que manejann con nosotros, son casi 100 clientes yo use ese codigo para hacer un programa de envio masivo, ahi algun problema, nos puede bloquear whatsapp el envio de mensajes , puede que en algun momento el codigo no siga sirviendo, o no voy a tener problemas ya que me sirvio de mucho.


En línea

joel_del

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
« Respuesta #2 en: 30 Octubre 2014, 22:49 pm »

Una pregunta, no hay peligro de que Whatsapp me bloquee mi aplicación y no me deje volver a enviar mensajes, no has escuchado casos? Gracias por responder
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
« Respuesta #3 en: 30 Octubre 2014, 23:04 pm »

que tal si revisan los términos de servicio de whatssapp? jalvear1 probablemente el departamento legal te pueda ayudar con eso y puedas respondernos aquí esa duda...
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
« Respuesta #4 en: 31 Octubre 2014, 13:36 pm »

HOLA!!!

Jalvear1, te invito a la proxima que uses los codigos de aqui primero agradecer y luego en el caso que tengas un prolema ahi preguntar.

Si, lo mas probable es que haya bloqueado el numero por spam, eso pasa cuando le envias mensajes a numeros que no te tienen agendado, tenes que hacer que todos tus clientes agenden el numero, sino no podes.

El numero que tenes ya no sirve, vas a tener que utilizar otro.

En cuanto a lo que dice Joel_del , no no bloquean la aplicacion, no tienen manera de identificarla, lo que bloquean es el numero.

GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
jalvear1

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
« Respuesta #5 en: 31 Octubre 2014, 14:33 pm »

amigo que pena contigo ,  :-X muchas gracias por el aporte me ha sido de mucha ayuda disculpame por no agradecer. :D
En línea

pachoduran

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
« Respuesta #6 en: 25 Noviembre 2014, 01:54 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:

Código
  1.    Public Function SendWA(ByVal MSG As String, ByVal Num As String) As Boolean
  2.        Dim usrMan As New WhatsUserManager()
  3.        Dim imgSegnature As Image
  4.  
  5.        Dim tmpUser = usrMan.CreateUser(Num, "User")
  6.        imgSegnature = Image.FromFile("p.jpg")
  7.        Dim ms = New MemoryStream()
  8.        imgSegnature.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg) ' Use appropriate format here
  9.        Dim bytes = ms.ToArray()
  10.  
  11.        wa.SendMessageImage(Num, bytes, ApiBase.ImageType.JPEG)
  12.  
  13.        Return True
  14.    End Function

Siempre se bloquea y nunca envia la imagen.

Muchas gracias. Dios los bendiga
« Última modificación: 8 Enero 2015, 23:35 pm por Eleкtro » En línea

laercio.tersi

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
« Respuesta #7 en: 8 Enero 2015, 22:00 pm »

Amigos não consegui fazer funcionar

estou usando o visual studio 2012

Código
  1.  InitWA = coloquei o meu usuario
  2.  Call SendWA("mensagem para enviar", "numero para envio")
  3.  
  4.    Const WANum As String = "aqui não sei oque coloco" ' muito obrigado pela ajuda



[MOD]: Estás en una comunidad Española, porfavor, intenta utilizar el traductor de Google la próxima vez.
« Última modificación: 8 Enero 2015, 23:34 pm por Eleкtro » En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
« Respuesta #8 en: 9 Enero 2015, 17:32 pm »

HOLA!!!

Utitliza vb2013 por favor

GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
findesemana

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [VB.net] Porteo de la implementacion del api de WhatsApiNet WhatsApp WhatsAppAPI
« Respuesta #9 en: 12 Febrero 2015, 03:53 am »

Hola! Gracias por el tutorial! pero necesito un poco de ayuda..
He seguido los pasos pero me daba varios errores. Entonces empece a importar librerias hasta que me quedo un solo error en la linea:
   AddHandler wa.OnGetGroups, AddressOf wa_OnGetGroups
Pregunto: No tendras un ejemplo funcionando que puedas subir?
DE verdad me interesa el tema.. Gracias por tu ayuda de antemano..
PD estoy usando vb 2013

por favor por favor por favor  :huh:
En línea

Páginas: [1] 2 3 4 5 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Implementación de la ECC
Criptografía
C3.0 0 3,021 Último mensaje 30 Junio 2011, 02:04 am
por C3.0
WhatsApp de nuevo fuera de servicio. Alternativas a WhatsApp
Noticias
wolfbcn 4 8,152 Último mensaje 18 Octubre 2011, 00:00 am
por Sorke
WhatsApp ha comenzado a bloquear cuentas de forma masiva por usar WhatsApp Plus
Noticias
wolfbcn 3 4,351 Último mensaje 22 Mayo 2015, 02:14 am
por delanoche86
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines