Botframework-solutions: QnAMakerDialog não foi criado para idiomas diferentes

Criado em 29 jun. 2020  ·  22Comentários  ·  Fonte: microsoft/botframework-solutions

Qual projeto é afetado?

Assistente Virtual e Habilidades

Em que idioma está isso?

Dactilografado

O que acontece?

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).

Quais são as etapas para reproduzir esse problema?

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.

O que você esperava que acontecesse?

Outro QnAMakerDialog será criado com o idioma certo e a ID da base de conhecimento certa.

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

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?

Todos 22 comentários

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 :

  1. Vá para a biblioteca de
  2. Execute npm install para instalar as dependências
  3. Execute npm run build para compilar a solução
  4. Execute npm pack para criar o tgz
  5. Vá para a Amostra do Assistente Virtual
  6. Use o tgz criado no Virtual Assistant package.json da seguinte forma:

    "bot-solutions": "CAMINHO PARA BOT-SOLUTIONS TGZ"

  7. Implante o Assistente Virtual em vários idiomas

  8. Siga as etapas para reproduzir o cenário QnAMakerDialog você mencionou

Por último, mas não menos importante, como foi mencionado, o PR contém as seguintes alterações:

  1. Implementação de injeção de dependência (biblioteca inversifyjs ) no Virtual Assistant e Skill of TypeScript
  2. Modelos de atualização

Estaremos 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 :

  1. Você está usando nosso branch para validar essas mudanças?
  2. Qual componente você tem o problema?
  3. Você pode compartilhar as etapas de reprodução que você seguiu?

Este é o nosso ambiente :

  • Estamos usando este branch : feature/southworks/dependency-injection-implementation
  • Amostra do Assistente Virtual TypeScript
  • Amostra de habilidade do TypeScript

Realizamos as seguintes etapas para reproduzir o problema para o Assistente Virtual e a Habilidade:

  1. Vá para a biblioteca de
  2. Execute npm install para instalar as dependências
  3. Execute npm run build para compilar a solução
  4. Execute npm pack para criar o .tgz
  5. Vá para a Amostra do Assistente Virtual
  6. Use o .tgz criado no Assistente Virtual package.json da seguinte maneira:
  7. "soluções-bot": ""
  8. Execute npm install para instalar as dependências
  9. Execute npm run build para compilar a solução
  10. Execute npm run test para compilar a solução
  11. Verifique a execução do teste

image

image

Olá @ 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.

Esta página foi útil?
0 / 5 - 0 avaliações