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.