Assistente Virtual e Habilidades
Dactilografado
Quando um QnAMakerDialog é criado com um idioma específico (ex. DE) estará sempre resolvendo aquele idioma, mesmo que você altere o idioma ou outro usuário use um idioma diferente (ex. EN).
Usuário 1 : Envia declaração para o bot (DE);
Bot : O Bot resolve o enunciado como intenção QnA e cria o novo QnADialog, com o knowledgebaseId como Id da caixa de 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(
Não foi possível encontrar a configuração da base de conhecimento do QnA Maker com 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 : Envia uma resposta QnA para o usuário 1 na localidade do usuário 1 (DE)
Usuário 2 : Envia enunciado para o bot (EN);
Bot : O Bot resolve o enunciado como intenção QnA (mesmo que o usuário 1 enviado), nenhum novo QnaMakerDialog é criado porque já existe um Dialog com o mesmo knowledgebaseId.
Bot : O Bot inicia novamente o Diálogo QnA (adicionado da iteração do usuário 1) e obtém a resposta da Base de Conhecimento (DE) do primeiro usuário;
Bot : Envia mensagem para o usuário 2 na localidade do usuário 1.
Outro QnAMakerDialog será criado com o idioma certo e a ID da base de conhecimento certa.
Obrigado @ tommyJimmy87. Assim que tivermos alguma atualização relacionada à implementação da injeção de dependência, entraremos em contato com você!
Olá @ tommyJimmy87 , criamos o PR # 3559 que resolve esse problema incorporando injeção de dependência nos bots.
Se você for gentil, pode validar as alterações seguindo estas etapas de reprodução e usando este branch :
npm install
para instalar as dependênciasnpm run build
para compilar a soluçãonpm pack
para criar o tgzUse o tgz criado no Virtual Assistant package.json da seguinte forma:
"bot-solutions": "CAMINHO PARA BOT-SOLUTIONS TGZ"
Implante o Assistente Virtual em vários idiomas
QnAMakerDialog
você mencionouPor último, mas não menos importante, como foi mencionado, o PR contém as seguintes alterações:
inversifyjs
) no Virtual Assistant e Skill of TypeScriptEstaremos atentos à sua resposta 😊.
Olá @ Batta32 ,
obrigado pelo seu apoio, parece que o problema foi resolvido com a nova biblioteca de soluções de bot que integrei de seu branch :) Você tem uma estimativa aproximada de quando irá lançá-lo?
Oi @ Batta32 , estava percebendo que quando tento executar os testes de unidade recebo um erro: TypeError: Reflect.hasOwnMetadata is not a function
.
É porque você não migrou os testes para usar o inversify?
Obrigado @ tommyJimmy87! Estaremos revendo isso e retornaremos a você assim que tivermos alguma atualização deste 😊.
Olá @ Batta32 , resolvemos este problema adicionando esta importação ao arquivo js de base de teste: require('reflect-metadata');
Olá @ tommyJimmy87 - não foi possível reproduzir o problema que você mencionou relacionado aos testes de unidade.
Nós surgimos com perguntas :
Este é o nosso ambiente :
feature/southworks/dependency-injection-implementation
Realizamos as seguintes etapas para reproduzir o problema para o Assistente Virtual e a Habilidade:
npm install
para instalar as dependênciasnpm run build
para compilar a soluçãonpm pack
para criar o .tgz
.tgz
criado no Assistente Virtual package.json da seguinte maneira:npm install
para instalar as dependênciasnpm run build
para compilar a soluçãonpm run test
para compilar a soluçãoOlá @ tommyJimmy87 - adicionamos as alterações sugeridas no PR # 3559.
Atualizamos os bots do Virtual Assistant & Skill adicionando os seguintes arquivos de teste de importação: require('reflect-metadata');
especificamente no BotTestBase e SkillTestBase , a fim de evitar o problema que você mencionou relacionado aos testes de unidade.
Você pode seguir essas etapas para testar as mudanças no Assistente Virtual e na habilidade.
Obrigado,
Diego.
Olá @ Batta32 e @ DiegoCardozo94 ,
Eu tenho uma pergunta genérica, mas como estou usando este Branch em nosso projeto, embora ainda não tenha sido lançado, eu a colocaria aqui.
Em nosso cenário, temos MS Teams como único canal, vejo que o TeamsActivityHandler é usado apenas no VA e não na amostra da habilidade, certo? Porque talvez erroneamente eu estava estendendo também na habilidade o TeamsActivityHandler e isso me levou a um problema específico: basicamente o método endOfConversation
nunca é chamado depois de cancel
na habilidade DefaultActivityHandler
. Mas talvez eu deva apenas mudar para a extensão ActivityHandler "normal" dentro das habilidades. Você poderia me ajudar ou me dar um feedback sobre isso?
Obrigado
Olá @ tommyJimmy87 , TeamsActivityHandler
é derivado de ActivityHandler
que adiciona suporte para eventos e interações específicos do Microsoft Teams.
O Assistente Virtual é aquele que interage com o Canal do Microsoft Teams no esquema do Assistente Virtual conectado às Habilidades, portanto, o DefaultActivityHandler
do Assistente Virtual precisa se estender do TeamsActivityHandler
, não da Habilidade nesse esquema mencionado, como você pode ver nos exemplos.
O DefaultActivityHandler
do Assistente Virtual nos modelos / exemplos implementa o TeamsActivityHandler
que permite cenários de equipes prontos para uso.
Pesquisamos a seguinte documentação que você também pode revisar:
Deixe-nos saber se isso ajuda você 😊.
Este problema está desatualizado porque está aberto há 30 dias sem atividades. Remova o rótulo ou comentário desatualizado ou será fechado em 5 dias
@ Batta32 isso ainda não foi lançado certo?
Olá @ tommyJimmy87 - estamos finalizando um plano para lançar novos pacotes. Assim que tivermos alguma atualização, entraremos em contato com você aqui 😊.
@ Batta32 alguma atualização?
Olá @cwhitten , este problema já foi corrigido com o PR # 3559, que foi atualizado com as alterações solicitadas de @peterinnesmsft .
Assim que o PR for mesclado, as alterações estarão presentes na filial next
.
Qual é o status de # 3559? @ Batta32
A última atualização foi em 11 de setembro
Obrigado
Olá @tonyanziano , o PR # 3559 está pronto para ser revisado e mesclado contendo as alterações solicitadas de @peterinnesmsft.
Assim que o PR for mesclado, as alterações estarão presentes na filial next
.
Este problema está desatualizado porque está aberto há 30 dias sem atividades. Remova o rótulo ou comentário desatualizado ou será fechado em 5 dias
@joshgummersall qual é o status do # 3752? Quando você espera fundir isso?
Assim que outra pessoa puder revisar e aprovar!
@joshgummersall ,
Você pode trabalhar para mesclar o PR para que este tíquete possa ser fechado?
@ virtual-josh, está apenas esperando mais uma avaliação de relações públicas; já foi aprovado por um revisor. Não tenho certeza de quem enviar ping para uma segunda revisão.
Comentários muito úteis
Olá @ Batta32 ,
obrigado pelo seu apoio, parece que o problema foi resolvido com a nova biblioteca de soluções de bot que integrei de seu branch :) Você tem uma estimativa aproximada de quando irá lançá-lo?