El paquete de rimen/go-whatsapp implementa la API web de WhatsApp para proporcionar una interfaz limpia para los desarrolladores. Muchas gracias a todos los contribuyentes del proyecto Sigalor/WhatsApp-Web-Reveng. La API oficial de WhatsApp Business se lanzó en agosto de 2018. Puede verlo aquí.
Este paquete no se mantiene activamente actualmente y pronto será injustificado como actualizaciones de WhatsApp para múltiples dispositivos. Por favor, mire Tulir/WhatsMeow para una API web de GO Whatsapp que se mantiene activamente y admite WhatsApp Multi-Device.
go get github.com/Rhymen/go-whatsapp import (
whatsapp "github.com/Rhymen/go-whatsapp"
)
wac , err := whatsapp . NewConn ( 20 * time . Second )La duración pasada a la función NewConn se utiliza para el tiempo de espera de solicitudes de inicio de sesión. Si tiene una mala conexión a Internet, use un valor de tiempo de espera más alto. Esta función solo crea una conexión WebSocket, no maneja la autenticación.
qrChan := make ( chan string )
go func () {
fmt . Printf ( "qr code: %v n " , <- qrChan )
//show qr code or save it somewhere to scan
}()
sess , err := wac . Login ( qrChan )El proceso de autenticación requiere que escanee el código QR, que se envía a través del canal, con el dispositivo en el que está utilizando WhatsApp. La estructura de la sesión que se devuelve se puede guardar y utilizar para restaurar el inicio de sesión sin escanear el código QR nuevamente. El código QR tiene un TTL de 20 segundos y la función de inicio de sesión arroja un tiempo de espera si el tiempo ha pasado o cualquier otra solicitud falla.
newSess , err := wac . RestoreWithSession ( sess )La función de restauración necesita una sesión válida y devuelve la nueva sesión que se creó.
type myHandler struct {}
func ( myHandler ) HandleError ( err error ) {
fmt . Fprintf ( os . Stderr , "%v" , err )
}
func ( myHandler ) HandleTextMessage ( message whatsapp. TextMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleImageMessage ( message whatsapp. ImageMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleDocumentMessage ( message whatsapp. DocumentMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleVideoMessage ( message whatsapp. VideoMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleAudioMessage ( message whatsapp. AudioMessage ){
fmt . Println ( message )
}
func ( myHandler ) HandleJsonMessage ( message string ) {
fmt . Println ( message )
}
func ( myHandler ) HandleContactMessage ( message whatsapp. ContactMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleBatteryMessage ( message whatsapp. BatteryMessage ) {
fmt . Println ( message )
}
func ( myHandler ) HandleNewContact ( contact whatsapp. Contact ) {
fmt . Println ( contact )
}
wac . AddHandler ( myHandler {})Los controladores de mensajes son todos opcionales, no necesita implementar nada más que el controlador de errores para implementar la interfaz. El ImageMessage, VideoMessage, Audiomessage y DocumentMessage proporcionan una función de descarga para obtener los datos de los medios.
text := whatsapp. TextMessage {
Info : whatsapp. MessageInfo {
RemoteJid : "[email protected]" ,
},
Text : "Hello Whatsapp" ,
}
err := wac . Send ( text ) contactMessage := whatsapp. ContactMessage {
Info : whatsapp. MessageInfo {
RemoteJid : "[email protected]" ,
},
DisplayName : "Luke Skylwallker" ,
Vcard : "BEGIN:VCARD n VERSION:3.0 n N:Skyllwalker;Luke;; n FN:Luke Skywallker n item1.TEL;waid=0123456789:+1 23 456789789 n item1.X-ABLabel:Mobile n END:VCARD" ,
}
id , error := client . WaConn . Send ( contactMessage )El mensaje se enviará a través del WebSocket. Los atributos vistos anteriormente son los requeridos. Todos los demás atributos relevantes (ID, Timestamp, FromMe, Status) se establecen si faltan en la estructura. Por el momento, solo apoyamos los mensajes de texto, pero se planifican otros tipos para el futuro cercano.
Este código no está afiliado de ninguna manera, autorizado, mantenido, patrocinado o respaldado por WhatsApp o cualquiera de sus afiliadas o subsidiarias. Este es un software independiente y no oficial. Use bajo su propio riesgo.
La licencia del MIT (MIT)
Copyright (c) 2018
El permiso se otorga, de forma gratuita, a cualquier persona que obtenga una copia de este software y archivos de documentación asociados (el "software"), para tratar en el software sin restricción, incluidos los derechos de los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicense y/o vender copias del software, y para permitir que las personas a quienes se les proporciona el software para hacer, sujeto a las siguientes condiciones: las siguientes condiciones: las siguientes condiciones: las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o porciones sustanciales del software.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daños u otra responsabilidad, ya sea en una acción de contrato, agravio o de otra manera, que surge, de o en relación con el software o el uso u otros tratos en el software.