Lo primero que debemos saber es ¿qué es un chatbot?

Un chatbot es una aplicación o programa informático que permite simular una conversación real, normalmente suelen estar basados en inteligencia artificial y son cada vez más habituales en diferentes servicios como marketing, ventas y posventa de las empresas, asistencia virtual…

El objetivo de la aplicación es proporcionar una experiencia de comunicación fluida y amigable para los usuarios, para llevar a cabo esta idea utilizaremos la tecnología React.

React nos permitirá construir una interfaz de usuario dinámica y receptiva que permitirá a los usuarios interactuar de manera intuitiva con el chatbot.

Antes de comenzar es recomendable tener claras las bases del framework de React para poder trabajar con él.

Así pues, comenzamos con el tutorial.

Lo primero que haremos será crear nuestro proyecto de React utilizando el programa cmder.

Creacion Proyecto

Una vez creado el proyecto, utilizamos cd para navegar hasta el directorio del proyecto e instalaremos las librerías que vamos a utilizar para realizar el ChatBot.

1Libreria a usar
2libreria a usar

Y tras esto, abriremos nuestro código e iniciaremos nuestro proyecto.

InicioProyecto

Lo primero que haremos en nuestro código será irnos a App.js y vaciaremos el contenido del componente para dejarlo preparado para trabajar.

inicioAPPJS

Nos crearemos una carpeta llamada components donde iremos metiendo los componentes que vayamos necesitando para nuestra aplicación.

CreamosComponentYDENTROLOSCOMPONENTS

Tras este paso crearemos nuestro primer component y lo dejaremos listo para trabajar.

Este component será el que albergará todo el ChatBot.

Componentybase

En este paso comenzamos a importar ChatBot de ‘react-simple-chatbot’ y lo incluiremos en el render. Una vez realizado este paso tendremos que ir a App.js e importar nuestro componet.js (en este caso MainChatBot.js).

otra

Incluiremos un css a nuestro proyecto para que nos aparezca el ChatBot en el centro de nuestra pantalla, para ello tendremos que modificar App.css

cssAppENELCentro

Tras hacer los pasos anteriores si nos vamos a la web del servidor, encontraremos numerosos errores relacionados con el ChatBot.

Esto ocurre porque tenemos que darle un atributo al Chatbot para que pueda empezar a funcionar. Dicho atributo es steps y es el encargado de mandar los datos al bot para lanzar y recibir mensajes.

Dicho step a su vez contendrá un id, un menssage y un end

1ºSteps

También le añadiremos unos estilos a nuestro ChatBot utilizando la librería ‘styled-components’.

Primero importaremos ThemeProvider, después añadiremos una constante con los atributos css que nos permiten cambiar los estilos y envolvemos el component ChatBot con el component ThemeProvider.

DISEÑO DEL CHATbot

Si nos vamos a nuestra web veremos el ChatBot funcionando correctamente y con el estilo que le hemos añadido.

primerChat

Para continuar con nuestra aplicación tenemos que hacer que el usuario pueda introducir datos, es decir, que el usuario tenga interacción con nuestro ChatBot.

Para ello vamos a incluir dos nuevos steps:

User: Nos permitirá el ingreso de datos por el chat.

Trigger: Nos permite movernos por los diferentes steps indicado el ID del step al que queremos ir.

NuevosSteps

Con este código lo que estaríamos haciendo es:

Primero preguntamos el nombre en el step con id ‘intro’.

Tras finalizar ese step iremos al step con id 1 (por medio del trigger) el cual nos permitirá introducir por el chat nuestro nombre (por medio de user).

 Tras finalizar este iremos a los steps con id 2 y 3 donde como vemos añadimos más texto que tendrá nuestro bot y también añadimos {previousValue} que se encarga de pintar el valor que ha recibido en el step previo.

Si volvemos a nuestra web veremos el resultado de esta manera.

errorChatBot

Como vemos estamos teniendo un error visual el cual nos repite las respuestas numerosas veces, para solucionar este error debemos dirigirnos a index.js y eliminamos <React.StrictMode>

ee

Tras esto si volvemos a nuestra web ya sí que veremos nuestra aplicación de forma correcta.

ChatBotSolucionado

Le podemos añadir más funcionalidad al proyecto añadiendo un atributo que nos permite validar los datos introducidos por el usuario.

El atributo que utilizaremos será validator y nos crearemos un método el cual será llamado por dicho atributo.

ValidarNombre
validator

En nuestro código nos aparecerá este mensaje al introducir un dato incorrecto.

DatosErroneos

Podemos hacernos la pregunta de si ¿es posible que el ChatBot me muestre diferentes opciones de respuesta? ¿quizás añadiendo botones?

Veremos que esta opción es posible utilizando otro atributo como es options

options

Dicho atributo mostrara al usuario unos botones con diferentes opciones.

El contenido de los botones se lo damos en label.

Con trigger igual que hicimos anteriormente viajaremos al step con dicho ID.

El value es opcional pero más adelante veremos que nos será útil a la hora de recoger los valores de cada option.

Lo único que nos faltaría para que no nos diese error es crear los steps con los id anteriores, de lo contrario no nos encontraría el id y nos saltaría un error como este:

errortrigger

Creamos los steps con un mensaje para ver nuestra página funcionando.

stepsCreadosoption

Si vamos a nuestra página se verá así.

Captura.JPeeeG

Incluiremos más steps para que nuestra aplicación sea más extensa y tenga diferentes soluciones

sss
NuevasStep3

Otra mejora que podemos hacer a nuestro ChatBot es insertar nuestros propios componentes, para ello podemos utilizar el atributo component.

Crearemos un componente con el nombre que queramos (en mi caso WikiComponent.js).

ComponentWikipedia

Necesitaremos recoger los valores de los input para poder hacer las búsquedas en Wikipedia. Para ello, usaremos los id de los steps.

En el constructor del componente WikiComponent usaremos los id para aplicar los valores a variables que tendemos en state.

Constructor

Tendremos un statusProgramacion que cambiaremos a True cuando el usuario pinche en “aprender que es programación”.

Y un detail el cual inicializaremos como vacío y cambiaremos su valor más adelante.

Añadimos el método componentDidMount() para realizar las acciones cuando el componente se monte.

componentDidMount

Hacemos que si el value del step con id select es “n” cambiaremos el status mencionado anteriormente.

Y si el value es “y” cambiaremos el contenido de detail por el value de la opción que el usuario seleccione en el step con id selectReact.

Una vez hemos modificado los valores podemos pasar a pintar el render.

renderWiki

Nos mostrara un enlace a la página de Wikipedia donde habla de programación si statusProgramacion == true.

Si no lo es, nos pintara un enlace que nos llevara a la ruta de wikipeda + lo que contenga detail en ese momento.

Nos quedaría algo como:

Ejemplo: https://es.wikipedia.org/wiki/React#Hooks

Para terminar, si vamos a nuestra web veremos que nos da error, eso es debido a que nos falta incluir en el component MainChatBot el componente que acabamos de crear (WikiComponent).

stepSinComponent
stepconComponent

Si vamos a nuestra web veremos que tenemos el ChatBot terminado y con funcionalidad.

final1
final2

Autor: Iván Juárez Jimeno

Curso: Desarrollo Web Full Stack + MultiCloud con Azure y AWS 

Centro: Tajamar Tech 

Año académico: 2023-2024 

Enlace a GitHub: https://github.com/ivanalame/post-chatbot

Linkedin: https://www.linkedin.com/in/iv%C3%A1n-ju%C3%A1rez-jimeno-b297881a8/

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.