Preparando mi Sistema para utilizar easyWassap
Para poder enviar mensajes a WhatsApp utilizando easyWassap, primeramente usted necesita vincular su numero al Api, luego puede proceder al envio de mensajes.
Una vez vinculado su telefono tiene los siguientes metodos del api para enviar mensajes:
- sendMessage: permite el envio de mensajes unicamente de texto a un numero especifico, este metodo utiliza el metodo HTTPPOST y requiere de los parametros de phone: que es el numero de telefono al que se lenviara el mensaje, es obligatorio colocar el codigo de pais y el numero de telefono sin guiones. message: es el mensaje que se estara enviando, aqui puede enviar hasta 4000 caracteres por mensaje.
Que me va a retornar este metodo: si el mensaje se envio correctamente, se retornaraun objeto Json con el id del mensaje proporcionado por whatsapp y una copia del mismo y el receptor.
a continuacion le mostramos una forma de implementar el envio de mensajes desde varios lenguajes de programacion:
C#
public class WhatsAppHelper
{
private string Url = Settings.Default.WhatsAppApi; // su endpoint
private const string AsSecuriteHeader = "as-securite";
private string ApiKey = Settings.Default.WhatsAppKey; // Api Key
///
/// Permite enviar un mensaje por el api de whatsapp
///
///
///
///
public async Task SendMessage(string phone, string message)
{
var result = await Task.Run(() =>
{
if (string.IsNullOrEmpty(Settings.Default.WhatsAppApi) || string.IsNullOrEmpty(Settings.Default.WhatsAppKey))
return "No tiene configurado los valores necesrarios para poder enviar notificaciones";
using (var client = new HttpClient())
{
// Agregar la cabecera as-securite
client.DefaultRequestHeaders.Add(AsSecuriteHeader, ApiKey);
// Crear el objeto con los parámetros
var parameters = new
{
phone,
message
};
// Convertir los parámetros a formato JSON
var json = Newtonsoft.Json.JsonConvert.SerializeObject(parameters);
// Crear el contenido de la solicitud
var content = new StringContent(json, Encoding.UTF8, "application/json");
// Realizar la solicitud POST
var response = client.PostAsync(Url+"sendMessage", content).Result;
// Leer la respuesta
var responseContent = response.Content.ReadAsStringAsync().Result;
return responseContent;
}
});
return result;
}
}
Una vez definida la clase que se va a comunicar con el API de easyWassap, requiere consumirla, para ello le mostramos un ejemplo de como hacerlo
Implementacion
private async Task EnviarMensaje()
{
var result = await Task.Run(() => {
var message = new WhatsAppHelper();
var respuesta = message
.SendMessage("50433695514", "Hola, esto es una prueba").Result;
return respuesta;
}
return result;
}
en .net es muy importante que utilice un metodo asincrono para poder conectarse al Api, de lo contrario tendra problemas con los resultados de la conexion.
importante
Implentando utilizando Python
La implementacion en Python, puede requerir de librerias como requests, json, segun su implementacion, para esta demostracion utilizaremos ambas librerias mencionadas.
import requests
import json
def enviarMensajes(telefono, archivo1):
URL = "https:///sendMessage"
params = {
"phone": telefono,
"message": archivo1[:3998] # se asegura que el mensaje no supere las 4000 letras
}
headers={"Content-Type": "application/json",
"as-securite": "<>"}
response = requests.post(URL, headers=headers, data=json.dumps(params))
print(response.status_code)
print("Proceso finalizado correctamente.")
Implementando con Java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class ejemplo {
public static void main(String[] args) {
try {
// URL del endpoint del API
String apiUrl = "https://end-point/sendMessage";
// Objeto con los parámetros del mensaje
String jsonInputString = "{ \"phone\": \"50432179539\", \"message\": \"Esto es una prueba desde JAVA\" }";
// Crear la URL
URL url = new URL(apiUrl);
// Abrir la conexión HTTP
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// Configurar el método HTTP como POST
connection.setRequestMethod("POST");
// Configurar la cabecera con el apiKey
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("as-securite", "API KEY AQUI");
// Permitir el envío de datos
connection.setDoOutput(true);
// Enviar el cuerpo del mensaje
connection.getOutputStream().write(jsonInputString.getBytes("UTF-8"));
// Obtener la respuesta del servidor
int responseCode = connection.getResponseCode();
// Leer la respuesta del servidor
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// Imprimir la respuesta en la consola si la ejecución es exitosa (código 200)
if (responseCode == HttpURLConnection.HTTP_OK) {
System.out.println(response.toString());
} else {
System.out.println("Error al consumir el API. Código de respuesta: " + responseCode);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Utilizando Excel para enviar mensajes
Ademas de lenguajes de programacion, podemos utilizar excel para automatizar el envio de mensajes.
En el siguiente ejemplo utilizaremos una hoja de excel para el envio de mensajes, en este ejemplo la columna A contiene los numeros de telefonos a los que se les enviara los mensajes, la columna H contiene un mensaje que con formulas de excel produce un mensaje completo basado en las columnas B a la G y en la columna I se mostrara la respuesta del Api, para cada mensaje enviado se le colocara un codigo 200, los mensajes se envian al hacer clic en el boton enviar mensajes
Sub enviar_datos_api()
Dim objHTTP As Object
Dim json_payload As String
Dim telefono As String
Dim nombre As String
Dim saldo As String
Dim fila As Long
' Crea un objeto WinHTTPRequest
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
' Recorre todas las filas con datos
fila = 2 ' Comenzamos en la fila 2, suponiendo que la fila 1 es la cabecera
Do While Not IsEmpty(Range("A" & fila))
' Obtiene los datos de la fila
telefono = Range("A" & fila).Value
nombre = Range("H" & fila).Value
saldo = Range("C" & fila).Value
' Crea un objeto JSON con los datos del cliente
json_payload = "{""message"":""" & nombre & """, ""phone"":""" & telefono & """}"
' Configura la llamada a la API
objHTTP.Open "POST", "https://suEndPointAqui/sendMessage", False
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.setRequestHeader "as-securite", "Su API AQUI"
objHTTP.send json_payload
' Verifica si la llamada fue exitosa
If objHTTP.Status = 200 Then
Range("I" & fila).Value = objHTTP.Status ' Escribe "OK" en la columna D si la llamada fue exitosa
Else
Range("I" & fila).Value = "ERROR: Error al enviar el mensaje" ' Escribe "ERROR" en la columna D si la llamada falló
End If
fila = fila + 1 ' Avanza a la siguiente fila
Loop
End Sub
Asigna la funcion al boton, como se ve en la imagen
Sobre el autor
CTO - Developer