es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible activar diálogos o respuestas según el resultado de QnAMaker?

Estoy tratando de definir flujos/triggers separados para mensajes diferentes cuando no recibo ninguna respuesta de QnA aparte de mostrar ‘Respuesta de contingencia’.

Adjunto se encuentra un diseño de muestra de Bot Framework Composer.

1

Estoy usando Bot Framework Composer – v2.1.0 y el diálogo QnAMaker (Microsoft.QnAMakerDialog). Por favor, consulta la captura de pantalla adjunta.

¿Hay alguna propiedad que contenga la respuesta o la respuesta completa de QnAmaker, para que pueda escribir una condición?

Agradezco cualquier sugerencia o comentario.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para definir flujos o disparadores separados cuando no obtienes ninguna respuesta del QnA Maker, puedes usar el evento NoAnswer dentro del QnAMakerDialog. Este evento se activa cuando el QnA Maker no encuentra una respuesta adecuada para la consulta del usuario.

    Para manejar este evento, puedes crear un nuevo diálogo de cascada dentro de tu bot y pasarlo como argumento al constructor de QnAMakerDialog. Dentro de este nuevo diálogo de cascada, puedes configurar diferentes mensajes o respuestas para mostrar al usuario cuando el QnA Maker no pueda proporcionar una respuesta.

    Para acceder a la respuesta del QnA Maker, puedes usar la propiedad result.answers, que contiene una matriz de objetos de respuesta con metadatos correspondientes.

    Código de muestra para manejar el evento NoAnswer:

    const { QnAMakerDialog } = require('botbuilder-ai');
    
    const qnaMakerDialog = new QnAMakerDialog({
        noAnswer: async (context, qnaOptions, next) => {
            // Accede a la respuesta del QnA Maker a través de qnaOptions.result.answers
            // Maneja el escenario de no respuesta y activa el nuevo diálogo de cascada
    
            await context.sendActivity('Lo siento, no pude encontrar una respuesta adecuada a tu pregunta.');
            await next();
        }
    });
    
    // Pasa el `qnaMakerDialog` creado anteriormente como argumento al crear DialogSet.
    

    Una vez que hayas creado el QnAMakerDialog, puedes usarlo dentro de tu mainDialog y manejar el evento NoAnswer como se describe arriba.

    const { QnAMakerDialog } = require('botbuilder-ai');
    
    const qnaMakerDialog = new QnAMakerDialog({
      // Código del controlador de noAnswer como se describe arriba
    });
    
    this.addDialog(qnaMakerDialog);
    
    this.addDialog(new WaterfallDialog('noAnswerScenario', [
      async (step) => {
        await step.context.sendActivity("Lo siento, no entendí eso.");
        return await step.endDialog();
      }
    ]));
    
    // Maneja los casos en los que no hay una respuesta definida del QnA Maker
    this.addDialog(new TextPrompt('textPrompt'));
    this.addDialog(new WaterfallDialog('mainDialog', [
      async (step) => {
        return await step.prompt('textPrompt', { prompt: '¿Qué te gustaría preguntar?' });
      },
      async (step, result) => {
        const options = { qnaId: 0, top: 1 };
        await qnaMakerDialog.recognize(step.context, options);
        // El evento NoAnswer se activará si el QnA Maker no encuentra una respuesta
        return await step.next();
      },
      async (step) => {
        // Maneja los casos en los que la consulta del usuario no activa el evento NoAnswer
        return await step.replaceDialog('noAnswerScenario');
      }
    ]));
    

    El código anterior maneja dos escenarios: cuando el QnA Maker no proporciona una respuesta (activa el evento NoAnswer) y cuando la consulta del usuario no activa el evento NoAnswer. Puedes modificar las respuestas para adaptarlas a tu caso de uso.

Comments are closed.