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.

Permite tres modos de funcionamiento:

  • 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 mostrándole 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 y actívelo:

Note que 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:Si cuando accede al Setup, lo activa y no funciona tal cual, reproduzca los pasos de instalación de Node en su Setup:

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

Para dejar corriendo el servicio cuando se reinicie la máquina, edite el fichero:

/etc/systemd/system/integria-chat.service

Y agregue el siguiente contenido:

[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

Luego ejecute estos comandos:

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

Configure 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:

Instalación del motor de inteligencia artificial

Ejecute los siguientes comandos como root (super usuario) en su instalación de Integria IMS:

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 levantará 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 de un channel:

  • 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.
  • Modo IA: Permite tres modos de funcionamiento:
    • 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 mostrándole posibles respuestas a las preguntas del usuario.
  • 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. Un 100% supone un 100% de certeza, un 0,1 supone un 10%. Puede ver el grado de certeza de las posibles respuestas en pantalla, para empezar a probar pruebe con un valor 0,5.

Personalización del motor de IA / Aprendizaje

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 entrenar a partir de un fichero CSV con el siguiente formato:

Código de idioma;Pregunta;Respuesta

Por 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 ejecute:

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 (e.g., 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 (canales) 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 utilizan el chat desde fuera de Integria IMS).

Gestionar un canal

Para ello vaya a SoporteChatGestionar canal:

Añada operadores al canal

El canal debe al menos tener un operador, que será quien pueda 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 (en este ejemplo el usuario admin):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 vía SoporteChatVer chat. Nos llevará a una pantalla como esta:

En ella se ve el estado de todos los chats. 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, nos dirá de qué usuario se trata. Si se abre un ticket desde una incidencia activa.

Utilizar el chat fuera de Integria IMS

Quizás quiera usar el chat fuera de la interfaz de Integria IMS, por ejemplo, en su página web o en otra aplicación. Utilice el icono de estrella para mostrarle el snippet de código JavaScript que debe incrustar en su aplicación:

Copie y pegue ese código en su web y refresque la página.

Note que la URL que está incluida en el código es la URL que ha definido 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 de una página HTML estática incluyendo el chat:

Al entrar en esa página, se verá la burbuja del chat:

Y la conversación al hacer clic en el icono de abajo a la derecha: