Chatbot e Inteligencia Artificial

Introducción

El chatbot de Integria IMS se compone de dos servicios: un servidor de conversación o chat (con su cliente WEB) y un motor de inteligencia artificial conversacional (opcional).

El motor de inteligencia artificial se puede utilizar para que aprenda de la información introducida en la base de conocimiento de Integria IMS para ofrecer respuestas rápidas a las preguntas de los usuarios.

  • Automático: utiliza modelos de aprendizaje automático para ofrecer respuestas al usuario de forma automática en base al aprendizaje previo.
  • Manual: un operador de Integria IMS responde al usuario a través de la interfaz del chat.
  • Mixto: Integria IMS asiste al operador mostrando posibles respuestas a las preguntas del usuario.

La arquitectura consta de tres elementos fundamentales:

  • El cliente de chat, con el que interactúa el usuario.
  • El servidor de chat, con el que interactúa el operador.
  • El motor de predicción, que ofrece respuestas a partir de las preguntas del usuario.

Tanto el cliente como el servidor del chat forma parte de una instalación de Integria IMS Enterprise.

Para añadir capacidades predictivas a Hybrid Helpdesk deberá instalar y activar Prediction Engine como se describe en siguientes secciones.

Instalación del servidor del chat

Por defecto se instala cuando se utiliza el método de instalación cloud. Para activarlo vaya a la opción del Setup de chat:

Se debe configurar la URL del webservice con la URL pública de su instalación de Integria IMS, tal como viene configurada en la sección principal del Setup:

En caso de que no funcione como se espera, reproduzca los pasos de instalación de Node.js:

curl -SsL http://firefly.artica.es/projects/integria/integria_deploy_enterprise.sh | sh
curl -sL https://rpm.nodesource.com/setup_12.x | sh
yum install -y nodejs
npm i -g pm2
cd /var/www/html/integria/extras/chat_server
npm update
pm2 start server.js

Se debe editar el fichero /etc/systemd/system/integria-chat.service para que el servicio inicie automáticamente cada vez que arranque el sistema operativo, agregando lo siguiente:

[Unit]
Description=Integria-Chat-Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
# Consider creating a dedicated user for Wiki.js here:
User=root
Environment=NODE_ENV=production
WorkingDirectory=/var/www/html/integria/extras/chat_server
[Install]
WantedBy=multi-user.target

Guarde el fichero y salga del editor de texto utilizado. Ejecute a continuación:

systemctl daemon-reload
systemctl start integria-chat.service
systemctl enable integria-chat

Se debe configurar el acceso a la base de datos del servidor del chat, edite el fichero /var/www/html/integria/extras/chat_server/config/config.js y modifique los parámetros necesarios de la base de datos (se asumen los valores predeterminados, se debe cambiar si se tiene una instalación personalizada):

Instalación del motor de inteligencia artificial

Ejecute los siguientes comandos como root (súper usuario):

yum install python3 python36-Cython
wget http://xxxxxx/prediction_engine-latest.tgz
tar xvzf prediction_engine-latest.tgz
cd prediction_engine
./install.sh
service prediction_engine.service restart

Esto iniciará el servicio en el puerto 6000/tcp .

Configuración de la IA

La IA se configura de manera independiente en cada channel. Para ello, vaya a Soporte Chat Gestión de canales y edite la configuración:

  • IA url: URL donde escucha el webservice el motor de inteligencia artificial. Debe ser en formato
HTTP://DIR_IP
  • IA Port: Por defecto 6000. No debería cambiarlo salvo que haya tenido que hacer una redirección de puerto en algún sitio intermedio.
  • Initial response time: Segundos en los que la IA contestará la primera petición de usuario.
  • Response time between conversations: Tiempo de respuesta entre pregunta y pregunta una vez iniciada la conversación.
  • Progress bar timeout: Tiempo que le dejará el sistema al operador elegir una respuesta de las proporcionadas antes de contestar de manera automática la mejor opción.
  • Certainly threshold: Grado de incertidumbre soportado por la IA a la hora de escoger una opción de las ofrecidas, el valor debe ser entre 0 y 1, se recomienda un valor inicial de 0,5 (50 %) y ajustarlo según sea necesario.

Respaldo de los modelos de aprendizaje personalizados

  • Antes de realizar cualquier personalización, se recomienda hacer un respaldo o backup de los modelos actuales:
cp -r /opt/prediction_engine/models /opt/prediction_engine/models.bak
  • Para restaurar los modelos de la copia de seguridad ejecute:
cp -f /opt/prediction_engine/models.bak/\* /opt/prediction_engine/models/

Preguntas y respuestas (Knowledge Base)

El modelo de preguntas y respuestas se entrena a partir de un fichero CSV con el siguiente formato:

Código de idioma;Pregunta;Respuesta

Ejemplo:

"es";"pregunta 1";"respuesta 1"
"es";"pregunta 2";"respuesta 2"
"en";"question 1";"answer 1"
"en";"question 2";"answer 2"
…

Se puede obtener de forma automática de la base de datos de Integria IMS con los comandos:

rm -f /opt/prediction_engine/data/integria_kb.zip 2>/dev/null
echo "SELECT id_language AS lang, title as question, data as answer FROM integria.tkb_data INTO OUTFILE '/opt/prediction_engine/data/integria_kb.csv' FIELDS TERMINATED BY ';' ENCLOSED BY '\"' LINES TERMINATED BY '\n';" | mysql -u integria -p integria && zip -j /opt/prediction_engine/data/integria_kb.zip /opt/prediction_engine/data/integria_kb.csv

Para actualizar los modelos:

cd /opt/prediction_engine/src
python kb_train.pyc

Diálogos (conversacional)

El modelo conversacional a partir de ficheros YAML con la siguiente estructura:

categories:
- categoría 1
- categoría 2
- …
conversations:
- - texto 1
- texto 2
- …
- - texto 1
- texto 2
- texto 3
- …
…

Se deben colocar los ficheros .yaml (el nombre del fichero no es importante) en el directorio:

/opt/prediction_engine/data/chat_xx

Siendo xx el código ISO del idioma que se quiere actualizar ( es para el idioma español).

Para actualizar los modelos ejecute:

cd /opt/prediction_engine/src
python chat_train.pyc

Cómo usar el chat

El chatbot de Integria utiliza channels para definir lugares diferentes donde tener conversaciones entre operadores (usuarios de Integria IMS con permisos especiales para gestionar conversaciones) y usuarios normales (usuarios de Integria IMS normales o simples visitantes anónimos, si se utiliza el chat desde fuera de Integria IMS).

Gestionar un canal

Meú SoporteChatGestionar canal:

Añadir operadores al canal

El canal debe al menos tener un operador, quien contestará a las peticiones de chat de los usuarios. Podrá agregar a cualquier usuario con permisos de operador de chat y asignarle una descripción un avatar (diferente al de su ficha de usuario) y los idiomas en los que puede contestar chats.

Pulse en el icono de operadores para agregar un usuario y luego el botón de agregar operador:

Utilice la pantalla para definir un operador, ejemplo:Una vez agregado, otros usuarios podrán iniciar chat:

Operadores del canal

Para que los operadores reciban notificaciones sonoras en caso de que un usuario abra un chat, deben estar en la pantalla de control del chat. Se accede por medio del menú SoporteChatVer chat.

El operador entrará en uno de esos chats e interactuará con la otra parte:

En el caso de que el chat se abra por parte de un usuario interno, indicará de qué usuario se trata.

Utilizar el chat fuera de Integria IMS

Para utilizar el chat fuera de la interfaz de Integria IMS, por ejemplo en una página web o en otra aplicación, pulse el icono de estrella para mostrar el snippet de código JavaScript que debe incrustar en la aplicación:

Nótese que la URL que está incluida en el código es la URL que definida como URL pública en las opciones del servidor de chat. Dicha URL debe estar accesible desde donde los usuarios accedan, en la mayoría de los casos, eso supone que debe ser una URL pública de internet.


Ejemplo:


La conversación inicia al hacer clic en el icono de abajo a la derecha, botón Ayuda:

Volver al índice de documentación de Pandora FMS