Asistente virtual y habilidades
Mecanografiado
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).
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.
Se creará otro
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 :
npm install
para instalar las dependenciasnpm run build
para compilar la soluciónnpm pack
para crear el tgzUtilice el tgz creado en Virtual Assistant package.json de la siguiente manera:
"bot-solutions": "CAMINO HACIA BOT-SOLUTIONS TGZ"
Implemente el Asistente virtual en varios idiomas
QnAMakerDialog
que mencionóPor último, pero no menos importante, como se mencionó, el RP contiene los siguientes cambios:
inversifyjs
biblioteca) en Virtual Assistant y Skill of TypeScriptEstaremos 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 :
Este es nuestro entorno :
feature/southworks/dependency-injection-implementation
Realizamos los siguientes pasos para reproducir el problema para el Asistente virtual y la habilidad:
npm install
para instalar las dependenciasnpm run build
para compilar la soluciónnpm pack
para crear el .tgz
.tgz
creado en Virtual Assistant package.json de la siguiente manera:npm install
para instalar las dependenciasnpm run build
para compilar la soluciónnpm run test
para compilar la soluciónHola @ 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.
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?