RECIBIR MENSAJES WA C

Recibir mensajes con Api Oficial de WhatsApp en C#

En este tutorial aprenderemos a Recibir mensajes con Api Oficial de WhatsApp en C#, solo debemos seguir estos pasos:

Creamos una app en Facebook

Vamos la url de Meta developers Meta for Developers (facebook.com) y creamos una cuenta de developer y accedemos a my apps

O podemos aceder a este link Todas las apps – Meta for Developers (facebook.com)

Damos click en Crear app

Seleccionamos cualquier opcion y damos click en siguiente

Colocamos un nombre a nuestra app, nuestro correo y click en Crear app

Bajamos hasta encontrar WhatsApp y damos click en configurar

damos click en continuar

Configuramos el Api de WhatsApp

Hacemos click en Primeros pasos o en Empezar a usar la API

Hacemos click en Seleccionar un numero de telfono destinatario, seleccionamos el pais y colocamos un numero que recibira las pruebas

Recibiremos un numero de 5 dígitos que ingresaremos aqui y damos click en siguiente

En Basica, colocamos la url de las políticas de privacidad de nuestra página web, bajamos y damos click en guardar y activamos el modo desarrollo

Si damos click en enviar mensaje nos llegara un Mensaje a nuestro numero de WhatsApp

Este es el mensaje que recibimos

Recibir mensajes con Api Oficial de WhatsApp en C#

Creamos un proyecto de tipo Web API y damos click en siguiente

Colocamos un nombre y click en siguiente

Seleccionamos Net6.0 o superior desseleccionamos https y click en crear

Click derecho en carpeta controller -> Agregar -> Nuevo elemento->Colocamos un nombre ClienteControl.cs

Agregamos estas lineas de codigo

//ClienteControl.cs
using Microsoft.AspNetCore.Mvc;
using System.Net;
using System.Net.Http.Headers;
using WebApiWA.Models;

namespace WebApiWA.Controllers
{
    public class ClienteControl:ControllerBase
    {
        //RECIBIMOS LOS DATOS DE VALIDACION VIA GET
        [HttpGet]
        //DENTRO DE LA RUTA webhook
        [Route("webhook")]
        //RECIBIMOS LOS PARAMETROS QUE NOS ENVIA WHATSAPP PARA VALIDAR NUESTRA URL
        public string Webhook(
            [FromQuery(Name = "hub.mode")] string mode,
            [FromQuery(Name = "hub.challenge")] string challenge,
            [FromQuery(Name = "hub.verify_token")] string verify_token
        )
        {
            //SI EL TOKEN ES hola (O EL QUE COLOQUEMOS EN FACEBOOK)
            if (verify_token.Equals("hola"))
            {
                return challenge;
            }
            else
            {
                return "";
            }
        }
        //RECIBIMOS LOS DATOS DE VIA POST
        [HttpPost]
        //DENTRO DE LA RUTA webhook
        [Route("webhook")]
        //RECIBIMOS LOS DATOS Y LOS GUARDAMOS EN EL MODELO WebHookResponseModel
        public dynamic datos([FromBody] WebHookResponseModel entry)
        {
            //ESTRAEMOS EL MENSAJE RECIBIDO
            string mensaje_recibido = entry.entry[0].changes[0].value.messages[0].text.body;
            //ESTRAEMOS EL ID UNICO DEL MENSAJE
            string id_wa = entry.entry[0].changes[0].value.messages[0].id;
            //ESTRAEMOS EL NUMERO DE TELEFONO DEL CUAL RECIBIMOS EL MENSAJE
            string telefono_wa = entry.entry[0].changes[0].value.messages[0].from;
            //INICIALIZAMOS LA CONEXION A LA BD
            Datos dat = new Datos();
            //INSERTAMOS LOS DATOS RECIBIDOS
            dat.insertar(mensaje_recibido, id_wa, telefono_wa);
            //SI NO HAY ERROR RETORNAMOS UN OK
            var response = new HttpResponseMessage(HttpStatusCode.OK);
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
            return response;


        }

    }
}


Creamos una nueva carpeta llamada Models

En Models agregamos un nuevo elemento llamado Datos.cs

Agregamos este codigo en el Datos.cs
//Recibir mensajes con Api Oficial de WhatsApp en C#
namespace WebApiWA.Models
{
    using MySqlConnector;
    public class Datos
    {
        public void insertar(string mensaje_recibido, string id_wa, string telefono_wa)
        {
            var connection = new MySqlConnection("Server=localhost;User ID=root;Password=;Database=aspwa");
            try
            {
                var command = connection.CreateCommand();
                command.CommandText = "INSERT INTO `registro` (`mensaje_recibido`, `id_wa`, `telefono_wa`) VALUES ('" + mensaje_recibido + "', '" + id_wa + "', '" + telefono_wa + "');";
                connection.Open();
                command.ExecuteNonQuery();
                //return "Mitarbeiter wurde angelegt";
            }
            catch (Exception ex)
            {
                //return ex.Message;
            }
            finally
            {
                connection.Close();
            }
        }

    }

    public class WebHookResponseModel
    {
        public Entry[] entry { get; set; }
    }

    public class Entry
    {
        public Change[] changes { get; set; }
    }

    public class Change
    {
        public Value value { get; set; }
    }

    public class Value
    {
        public int ad_id { get; set; }
        public long form_id { get; set; }
        public long leadgen_id { get; set; }
        public int created_time { get; set; }
        public long page_id { get; set; }
        public int adgroup_id { get; set; }
        public Messages[] messages { get; set; }
    }
    public class Messages
    {
        public string id { get; set; }
        public string from { get; set; }
        public Text text { get; set; }
    }
    public class Text
    {
        public string body { get; set; }
    }
}

Abrimos Nuget seleccionamos Examinar y buscamos MySqlConnector

Click en descargar y despues en OK
Ademas hay que instalar estos plugings

NuGet Gallery | ApiAiSDK 1.6.5

NuGet Gallery | Microsoft.AspNet.WebHooks.Custom 1.2.2

NuGet Gallery | Microsoft.AspNet.WebHooks.Custom.Api 1.2.2

NuGet Gallery | Microsoft.AspNet.WebHooks.Custom.Mvc 1.2.2

NuGet Gallery | MySqlConnector 2.2.5

Creamos la bd en mysql

En mysql (PhpMyAdmin) pegamos este script que crea la base de datos aspwa y la tabla registro

-- phpMyAdmin SQL Dump
-- version 5.1.1
-- https://www.phpmyadmin.net/
--
-- Servidor: 127.0.0.1
-- Tiempo de generación: 03-03-2023 a las 11:32:44
-- Versión del servidor: 10.4.21-MariaDB
-- Versión de PHP: 8.0.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Base de datos: `aspwa`
--
CREATE DATABASE IF NOT EXISTS `aspwa` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE `aspwa`;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `registro`
--

CREATE TABLE `registro` (
  `id` int(5) NOT NULL,
  `fecha_hora` datetime DEFAULT current_timestamp(),
  `mensaje_recibido` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '',
  `id_wa` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '',
  `telefono_wa` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Índices para tablas volcadas
--

--
-- Indices de la tabla `registro`
--
ALTER TABLE `registro`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT de las tablas volcadas
--

--
-- AUTO_INCREMENT de la tabla `registro`
--
ALTER TABLE `registro`
  MODIFY `id` int(5) NOT NULL AUTO_INCREMENT;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Activamos un servidor ngrok

Nos registramos en ngrok.com

Descargamos ngrok.exe, le damos doble click y pegamos este comando “ngrok http 8080”

En fb vamos a Configuracion y pegamos la url de ngrok unido a la carpeta y token de nuestro codigo java y verificar

Vamos a la configuracion, damos click en editar y colocamos la url de nuestro servidor, el token y damos click en Verificar

Damos click en Administrar, suscribir en messages y click en listo

Enviamos un mensaje de WhatsApp y lo recibimos en la Base de Datos

Los comentarios están cerrados.

Salir de la versión móvil