Botframework-solutions: QnAMakerDialog no se crea para diferentes idiomas

Creado en 29 jun. 2020  ·  22Comentarios  ·  Fuente: microsoft/botframework-solutions

¿Qué proyecto se ve afectado?

Asistente virtual y habilidades

¿En qué idioma es esto?

Mecanografiado

¿Lo que sucede?

Cuando se crea un QnAMakerDialog con un idioma específico (ej. DE) estará resolviendo siempre ese idioma aunque usted cambie el idioma u otro usuario use un idioma diferente (ej. EN).

¿Cuáles son los pasos para reproducir este problema?

Usuario 1 : envía un enunciado al bot (DE);
Bot : el bot resuelve el enunciado como intención QnA y crea el nuevo QnADialog, con el KnowledgebaseId como Id del diálogo:

`` private registerQnADialog(knowledgebaseId: string, cognitiveModels: ICognitiveModelSet, locale: string): void { const qnaEndpoint: QnAMakerEndpoint | undefined = cognitiveModels.qnaConfiguration.get(knowledgebaseId); if (qnaEndpoint == undefined){ throw new Error( No se pudo encontrar la configuración de la base de conocimientos de QnA Maker con id: $ {knowledgebaseId} .`);
}

    if (this.dialogs.find(knowledgebaseId) == undefined) {
        const qnaDialog: QnAMakerDialog = new QnAMakerDialog(
            qnaEndpoint.knowledgeBaseId,
            qnaEndpoint.endpointKey,
            // The following line is a workaround until the method getQnAClient of QnAMakerDialog is fixed
            // as per issue https://github.com/microsoft/botbuilder-js/issues/1885
            new URL(qnaEndpoint.host).hostname.split('.')[0],
            this.templateEngine.generateActivityForLocale('UnsupportedMessage', locale) as Activity,
            // Before, instead of 'undefined' a '0.3' value was used in the following line
            undefined,
            this.templateEngine.generateActivityForLocale('QnaMakerAdaptiveLearningCardTitle', locale).text,
            this.templateEngine.generateActivityForLocale('QnaMakerNoMatchText', locale).text
        );

        qnaDialog.id = knowledgebaseId;

        this.addDialog(qnaDialog);
    }
}

''

Bot : envía una respuesta QnA al usuario 1 en la configuración regional del usuario 1 (DE)
Usuario 2 : envía una expresión al bot (EN);
Bot : El bot resuelve el enunciado como intent QnA (el mismo que envió el usuario 1), no se crea ningún QnaMakerDialog nuevo porque ya existe un diálogo con el mismo KnowledgebaseId.
Bot : el bot inicia de nuevo el cuadro de diálogo QnA (agregado de la iteración del usuario 1) y obtiene la respuesta de la base de conocimientos (DE) del primer usuario;
Bot : envía un mensaje al usuario 2 en la configuración regional del usuario 1.

¿Qué esperabas que sucediera?

Se creará otro

Bot Services Kobuk bug customer-replied-to customer-reported in-progress

Comentario más útil

Hola @ Batta32 ,

gracias por su apoyo, parece que el problema se ha resuelto con la nueva biblioteca de soluciones bot que integré desde su rama :) ¿Tiene una estimación aproximada de cuándo lo va a lanzar?

Todos 22 comentarios

Gracias @ tommyJimmy87. Tan pronto como tengamos alguna actualización relacionada con la implementación de la inyección de dependencia, ¡te responderemos!

Hola @ tommyJimmy87 , creamos el PR # 3559 que resuelve este problema incorporando Dependency Injection en los bots.

Si es tan amable, puede validar los cambios siguiendo estos pasos de reproducción y usando esta rama :

  1. Ir a la biblioteca de soluciones bot
  2. Ejecute npm install para instalar las dependencias
  3. Ejecute npm run build para compilar la solución
  4. Ejecute npm pack para crear el tgz
  5. Ir a la muestra del asistente virtual
  6. Utilice el tgz creado en Virtual Assistant package.json de la siguiente manera:

    "bot-solutions": "CAMINO HACIA BOT-SOLUTIONS TGZ"

  7. Implemente el Asistente virtual en varios idiomas

  8. Siga los pasos para reproducir el escenario QnAMakerDialog que mencionó

Por último, pero no menos importante, como se mencionó, el RP contiene los siguientes cambios:

  1. Implementación de la inyección de dependencia ( inversifyjs biblioteca) en Virtual Assistant y Skill of TypeScript
  2. Actualizar plantillas

Estaremos atentos a tu respuesta 😊.

Hola @ Batta32 ,

gracias por su apoyo, parece que el problema se ha resuelto con la nueva biblioteca de soluciones bot que integré desde su rama :) ¿Tiene una estimación aproximada de cuándo lo va a lanzar?

Hola @ Batta32 , me di cuenta de que cuando intento ejecutar las pruebas unitarias obtengo un error: TypeError: Reflect.hasOwnMetadata is not a function .
¿Esto se debe a que no migró las pruebas para usar inversify?

¡Gracias @ tommyJimmy87! Revisaremos esto y te responderemos tan pronto como tengamos alguna actualización de esto 😊.

Hola @ Batta32 , require('reflect-metadata');

Hola @ tommyJimmy87 : no pudimos reproducir el problema que mencionaste relacionado con las pruebas unitarias.

Se nos ocurrieron preguntas :

  1. ¿Está utilizando nuestra sucursal para validar esos cambios?
  2. ¿Qué componente tiene el problema?
  3. ¿Puedes compartir los pasos de reproducción que seguiste?

Este es nuestro entorno :

  • Estamos usando esta rama : feature/southworks/dependency-injection-implementation
  • Ejemplo de asistente virtual de TypeScript
  • Muestra de habilidades de TypeScript

Realizamos los siguientes pasos para reproducir el problema para el Asistente virtual y la habilidad:

  1. Ir a la biblioteca de soluciones bot
  2. Ejecute npm install para instalar las dependencias
  3. Ejecute npm run build para compilar la solución
  4. Ejecute npm pack para crear el .tgz
  5. Ir a la muestra del asistente virtual
  6. Use el .tgz creado en Virtual Assistant package.json de la siguiente manera:
  7. "bot-soluciones": ""
  8. Ejecute npm install para instalar las dependencias
  9. Ejecute npm run build para compilar la solución
  10. Ejecute npm run test para compilar la solución
  11. Verificar la ejecución de la prueba

image

image

Hola @ tommyJimmy87 : agregamos los cambios sugeridos en el PR # 3559.

Actualizamos Virtual Assistant & Skill bots agregando los siguientes archivos de pruebas de importación: require('reflect-metadata'); específicamente en BotTestBase y SkillTestBase , para evitar el problema que mencionaste relacionado con las pruebas unitarias.

Puede seguir estos pasos para probar los cambios en el Asistente virtual y la habilidad.

Gracias,
Diego.

Hola @ Batta32 y @ DiegoCardozo94 ,

Tengo una pregunta genérica, pero como ya estoy usando esta rama en nuestro proyecto, aunque no se ha publicado, la haría aquí.

En nuestro escenario, tenemos MS Teams como el único canal, veo que TeamsActivityHandler se usa solo en el VA y no en la muestra de la habilidad, ¿es así? Porque tal vez erróneamente estaba extendiendo también en la habilidad TeamsActivityHandler y eso me llevó a un problema específicamente: básicamente, el método endOfConversation nunca se llama después de un cancel en la habilidad DefaultActivityHandler . Pero tal vez debería cambiar a la extensión ActivityHandler "normal" dentro de las habilidades. ¿Podrías ayudarme o más bien darme tu opinión sobre esto?

Gracias

Hola @ tommyJimmy87 , TeamsActivityHandler se deriva de ActivityHandler que agrega soporte para los eventos e interacciones específicos de Microsoft Teams.

El Asistente virtual es el que interactúa con el canal de Microsoft Teams en el esquema del Asistente virtual conectado a las habilidades, por lo que el DefaultActivityHandler del asistente virtual debe extenderse desde TeamsActivityHandler , no la habilidad. en ese esquema mencionado, como puede ver en los ejemplos.

El DefaultActivityHandler del Asistente virtual en las plantillas / muestras implementa el TeamsActivityHandler que habilita escenarios de Teams listos para usar.

Investigamos la siguiente documentación que también puedes revisar:

Háganos saber si esto le ayuda 😊.

Este problema está obsoleto porque ha estado abierto 30 días sin actividad. Quite la etiqueta obsoleta o el comentario o esto se cerrará en 5 días

@ Batta32 esto aún no se ha publicado, ¿verdad?

Hola @ tommyJimmy87 : estamos finalizando un plan para lanzar nuevos paquetes. Tan pronto como tengamos alguna actualización, te responderemos aquí 😊.

@ Batta32 alguna actualización?

Hola @cwhitten , este problema ya se solucionó con el PR # 3559 que se actualiza con los cambios solicitados de @peterinnesmsft .

Tan pronto como se fusione el RP, los cambios estarán presentes en la rama next .

¿Cuál es el estado de # 3559? @ Batta32

La última actualización fue el 11 de septiembre.

Gracias

Hola @tonyanziano , el PR # 3559 está listo para ser revisado y combinado y contiene los cambios solicitados de @peterinnesmsft.

Tan pronto como se fusione el RP, los cambios estarán presentes en la rama next .

Este problema está obsoleto porque ha estado abierto 30 días sin actividad. Quite la etiqueta obsoleta o el comentario o esto se cerrará en 5 días

@joshgummersall ¿cuál es el estado de # 3752? ¿Cuándo esperas fusionar eso?

¡Tan pronto como alguien más pueda revisarlo y aprobarlo!

@joshgummersall ,

¿Puede trabajar para fusionar las relaciones públicas para que se pueda cerrar este boleto?

@ virtual-josh, solo está esperando una revisión de relaciones públicas más; ya ha sido aprobado por un revisor. No estoy seguro de a quién hacer ping para una segunda revisión.

¿Fue útil esta página
0 / 5 - 0 calificaciones