Enseña a tu bot las FAQs de tu empresa con QnA Maker

Una de las necesidades que cubren los bots a la perfección es la capacidad de dar respuesta a las preguntas más frecuentes a los usuarios/clientes. Es por ello que hoy quiero contarte una forma muy sencilla de crear un bot con Microsoft Bot Framework y el servicio QnA Maker.

QnA Maker es un servicio que ahora forma parte del catálogo de APIs de Microsoft Cognitive Services, que te permite generar una base de conocimiento relacionada a unas FAQ (Frequently Asked Questions en inglés) que pueden ser gestionadas de diferentes formas: añadiendo un archivo pdf, docx o tsv, a través de la URL donde están las FAQ actualmente, o incluso insertándolas de forma manual. Para crear una base de conocimiento con este servicio lo primero que debes hacer es acceder a https://qnamaker.ai/ y aceptar las condiciones de uso.

Welcome to QnA Maker

Como se puede ver en la imagen anterior, de manera gratuita, tienes disponibles 10 transacciones por minuto, y hasta 10.000 transacciones por mes.

Para crear un nuevo servicio haz clic en la opción Create a new service e incluye la siguiente información:

  • Service name: se trata de un nombre descriptivo que le das al servicio y que puedes cambiar más tarde.
  • FAQ URL(s): como te contaba antes, una de la formas de insertar las preguntas y respuestas es facilitando la URL de donde están ubicadas actualmente. Para este ejemplo he utilizado https://docs.microsoft.com/en-us/azure/billing-subscription-faq  como fuente.
  • FAQ Files: si las preguntas no están publicadas en ningún sitio, también puedes adjuntarlas utilizando un archivo en cualquiera de los formatos que se indica.
  • Starting from scratch: como última opción, es posible introducir las preguntas y sus respuestas una a una a través de la interfaz, una vez creado el servicio.

Cuando hayas completado el asistente el resultado será similar al siguiente:

QnA Maker – Knowledge Base

Existe un apartado donde se han incluido de manera automática todas las preguntas localizadas en las URLs que añadiste durante el asistente y otro apartado llamado Editorial donde puedes añadir de forma manual las preguntas que quieras a través de la opción + Add new QnA pair

QnA Maker – Add a new QnA pair

Una vez revisadas las preguntas, puedes utilizar el apartado Test donde hay un bot con el que puedes interactuar y entrenar para que las respuestas sean lo más acertadas en cada caso.

Cuando hayas terminado de revisar las FAQ, haz clic en el botón Publish para que se pueda acceder al servicio desde fuera. Te mostrará los cambios realizados y deberas confirmarlos pulsando de nuevo sobre la opción Publish en la parte inferior.

QnA Maker – Publish

Al publicarse, aparecerá una llamada de ejemplo donde podrás recuperar toda la información que necesitas para configurar tu bot.

QnA Maker – Deployed

El código del bot para este caso es muy sencillo:

var restify = require('restify');
var builder = require('botbuilder');
var cognitiveservices = require('botbuilder-cognitiveservices');

var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
   console.log('%s listening to %s', server.name, server.url); 
});
  
var connector = new builder.ChatConnector({
 appId: process.env.MICROSOFT_APP_ID,
 appPassword: process.env.MICROSOFT_APP_PASSWORD
});
var bot = new builder.UniversalBot(connector);
server.post('/api/messages', connector.listen());

var recognizer = new cognitiveservices.QnAMakerRecognizer({
	knowledgeBaseId: 'KB_ID', 
	subscriptionKey: 'YOUR_Ocp-Apim-Subscription-Key'});
	
var basicQnAMakerDialog = new cognitiveservices.QnAMakerDialog({ 
	recognizers: [recognizer],
	defaultMessage: 'No match!',
	qnaThreshold: 0.3});

bot.dialog('/', basicQnAMakerDialog);

Todas las clases relacionadas con QnA Maker se encuentran en el módulo botbuilder-cognitiveservices. Como valores debes incluid el knowledgeBaseId, que es el id que aparece en la petición de ejemplo y la subscriptionKey, que es el token llamado Ocp-Apim-Subscription-Key en la petición. El appId y appPassword puedes conseguirlos dando de alta tu bot en la página de Microsoft Bot Framework.

Si ejecutas el código podrás ver a través del emulador que el bot es capaz de contestar a todas las FAQ de tu compañía o servicio, reutilizando la información que ya tenías.

QnA Maker – Bot Emulator

o incluso a través de cualquiera de los canales que ofrece Microsoft Bot Framework, como por ejemplo Skype, una vez lo publiques.

QnA Maker – Skype bot

¡Saludos!