2. Crear un chatbot en C Agregar IA con rivescript 1

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

image 21
Agregamos la libreria rivescript en Proyecto->Nuget->Examinar-> Escribimos rivescript-> Instalalar y click en OK

Codigo para Agregar Inteligencia Artificial a ChatBot WhatsApp

image 26
En la raiz del proyecto creamos un archivo llamado restaurante.rive al que colocaremos el siguiente codigo

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.

image 27
En RecibirController.cs agregamos este codigo

//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;
        }
    }
}

Agregar Inteligencia Artificial a ChatBot WhatsApp en C#
Enviamos un mensaje via WhatsApp y en el archivo de texto texto.txt tendremos el mensaje recibido y la respuesta generada con inteligencia artificial

Los comentarios están cerrados.