
Agregar Inteligencia Artificial a ChatBot WhatsApp en C#
Ya aprendimos a Crear un ChatBot inteligente con WhatsApp en C# ahora vamos a Agregar Inteligencia Artificial a ChatBot WhatsApp en C# siguiendo estos pasos:
Instalamos las dependencias
Codigo para Agregar Inteligencia Artificial a ChatBot WhatsApp
restaurante.rive
+ hola - Hola, Soy un robot, esta es la informacion que te puedo ofrecer\nNuestros telefonos\nNuestra direccion\nEntregas\nPagina web\nHorarios\nMenu\n ! var lunes = Menu del Lunes \nChiles en nogada 20.50 \nChilaquiles 15.50 \n ! var martes = Menu del Martes \nPambasos 20.50 \nHuitlacoche 15.50 \n ! var miercoles = Menu del Miercoles \nEnchiladas 120.50 \nCaldo de olla 15.50 \n ! var jueves = Menu del Jueves \nTacos 120.50 \nQuesadillas 15.50 \n ! var viernes = Menu del Viernes \nTortas 20.50 \nTacos 15.50 \n ! var sabado = Menu del Sabado \nEnchiladas 120.50 \nHuitlacoche 15.50 \n ! var domingo = Los domingo esta cerrado ! var horario = Lunes abrimos de 08:00 a 18:00\nMartes abrimos de 08:00 a 18:00\nMiercoles abrimos de 08:00 a 18:00\nJueves abrimos de 08:00 a 18:00\nViernes abrimos de 08:00 a 18:00\nSabados abrimos de 08:00 a 12:00\nDomingos Cerrado\n + lunes * - <bot lunes> + martes * - <bot martes> + miercoles * - <bot miercoles> + jueves * - <bot jueves> + viernes * - <bot viernes> + sabado * - <bot sabado> + domingo * - <bot domingo> + (menu|carta) * - <bot lunes> \n <bot martes> \n <bot miercoles> \n <bot jueves> \n <bot viernes> \n <bot sabado> \n <bot domingo> + como estas @ hola + hay alguien* @ hola + (telefono|celular|cel) * - Nuestro telefono es 725648221 + (direccion|ubicacion|lugar) * - Nuestra direccion Colonia Emiliano Zapata Acapulco Gro - Nos encontramos ubicados en la Colonia Emiliano Zapata Acapulco Gro + (entregas|a domicilio) * - Realizamos entregas a domicilio solo de lunes a viernes de 12:00 a 15:00 + (pagina web|web|pagina) * - Visitanos en https://www.programadornovato.com + (hora|horarios|dias|abierto) * - <bot horario> + * - Recuerda que soy un robot, me podrías preguntar de otra forma - Intenta hacer tu pregunta de otra manera.
//RecibirController.cs
using ChatBotWa.Models;
using Microsoft.AspNetCore.Mvc;
using System.IO;
using System.Net;
using System.Net.Http.Headers;
using System.Xml.Linq;
using RiveScript;
namespace ChatBotWa.Controllers
{
public class RecibirController
{
//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 EL BOT DE RIVESCRIPT
var bot = new RiveScript.RiveScript(true);
//CARGAMOS EL ARCHIVO DONDE ESTA LA CONFIGURACION DE LA IA
bot.loadFile("restaurante.rive");
bot.sortReplies();
//OBTENEMOS LA RESPUESTA DEPENDIENDO DEL MENSAJE RECIBIDO
var respuesta=bot.reply("local-user", mensaje_recibido);
//CREAMOS EL TEXTO DEL ARCHIVO
string texto = "mensaje_recibido="+mensaje_recibido + Environment.NewLine;
texto = texto+ "id_wa=" + id_wa + Environment.NewLine;
texto = texto + "telefono_wa=" + telefono_wa + Environment.NewLine;
texto = texto + "respuesta=" + respuesta + Environment.NewLine;
File.WriteAllText("texto.txt", texto);
//SI NO HAY ERROR RETORNAMOS UN OK
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
return response;
}
}
}
Ave que vuela, a la cazuela.