Botframework-solutions: Texto datilografado: carimbo de data / hora local substituído na solicitação de análise

Criado em 21 jan. 2020  ·  4Comentários  ·  Fonte: microsoft/botframework-solutions

Qual projeto é afetado?

Habilidades e AV

Em que idioma está isso?

Dactilografado

O que acontece?

Quando enviamos mensagens de fusos horários diferentes, o fuso horário local é sempre substituído pelo fuso horário do servidor local e perdemos o fuso horário do usuário.

Quais são as etapas para reproduzir esse problema?

Tente enviar uma mensagem de um cliente em um fuso horário e receba a mensagem de um fuso horário diferente do cliente.

O que você esperava que acontecesse?

Pelo menos ter no contexto o fuso horário do usuário

Você pode compartilhar algum registro, saída de erro, etc.?

Isso acontece no BotFrameworkAdapter , durante o método processActivity e a função parseRequest .

if (typeof activity.localTimestamp === 'string') { activity.localTimestamp = new Date(activity.localTimestamp); }

Alguma captura de tela ou contexto adicional?

Bot Services Bug customer-replied-to customer-reported

Comentários muito úteis

Olá @ tommyJimmy87! Obrigado por relatar o problema!

Reproduzimos o problema e gostaríamos de validar com você as etapas de reprodução que seguimos para realizar isso. Além disso, continuaremos reproduzindo o problema usando um bot C # para comparar as implementações e encontrar as próximas etapas para resolver o problema.

Etapas Repro

Usando o exemplo de assistente virtual TypeScript

  1. Vá para a pasta do Assistente Virtual
  2. Instale as dependências com npm install
  3. Compile a solução com npm run build
  4. Implante o Assistente Virtual usando o seguinte comando:
pwsh.exe -File deployment\scripts\deploy.ps1 -name "<BOT_NAME>" -location "<LOCATION>" -appId "<APP_ID>" -appPassword "<APP_PASSWORD>" -luisAuthoringKey "<LUIS_AUTHORING_KEY>" -luisAuthoringRegion "<LUIS_AUTHORING_REGION>"
  1. Abra o Bot Framework Emulator e configure-o para conectar o Virtual Assistant rodando localmente
    image

  2. Defina um ponto de interrupção na linha 1004 de botFrameworkAdapter.ts dentro da biblioteca Botbuilder
    image

  3. Altere o System Time zone para um diferente (por exemplo, UTC + 03: 00 Minsk)
    image

  4. Depure o Assistente Virtual

  5. Inicie o chat com o Assistente Virtual usando o emulador
  6. A execução irá parar no breakpoint. O activity.localTimestamp mostrará a data e hora com o fuso horário do servidor local anterior
    image

  7. Após a atribuição, a nova data e hora de activity.localTimestamp terá o novo fuso horário do usuário
    image

Obrigado: relaxado:

Todos 4 comentários

Olá @ tommyJimmy87! Obrigado por relatar o problema!

Reproduzimos o problema e gostaríamos de validar com você as etapas de reprodução que seguimos para realizar isso. Além disso, continuaremos reproduzindo o problema usando um bot C # para comparar as implementações e encontrar as próximas etapas para resolver o problema.

Etapas Repro

Usando o exemplo de assistente virtual TypeScript

  1. Vá para a pasta do Assistente Virtual
  2. Instale as dependências com npm install
  3. Compile a solução com npm run build
  4. Implante o Assistente Virtual usando o seguinte comando:
pwsh.exe -File deployment\scripts\deploy.ps1 -name "<BOT_NAME>" -location "<LOCATION>" -appId "<APP_ID>" -appPassword "<APP_PASSWORD>" -luisAuthoringKey "<LUIS_AUTHORING_KEY>" -luisAuthoringRegion "<LUIS_AUTHORING_REGION>"
  1. Abra o Bot Framework Emulator e configure-o para conectar o Virtual Assistant rodando localmente
    image

  2. Defina um ponto de interrupção na linha 1004 de botFrameworkAdapter.ts dentro da biblioteca Botbuilder
    image

  3. Altere o System Time zone para um diferente (por exemplo, UTC + 03: 00 Minsk)
    image

  4. Depure o Assistente Virtual

  5. Inicie o chat com o Assistente Virtual usando o emulador
  6. A execução irá parar no breakpoint. O activity.localTimestamp mostrará a data e hora com o fuso horário do servidor local anterior
    image

  7. Após a atribuição, a nova data e hora de activity.localTimestamp terá o novo fuso horário do usuário
    image

Obrigado: relaxado:

Olá @VictorGrycuk ! Obrigado pela resposta rápida em primeiro lugar!

Não sei se entendi muito bem as etapas, mas tentarei me explicar melhor com todas as etapas que fizemos para reproduzir o problema:

  1. A primeira suposição é que temos o Assistente Virtual implantado localmente.

  2. A segunda suposição é que queremos realizar o teste com 2 laptops diferentes, onde o primeiro laptop é o cliente (para nós é o Teams) e o segundo laptop é o servidor onde estamos executando o VA.

  3. A terceira suposição é que temos 2 fusos horários diferentes configurados nos 2 laptops, digamos que o primeiro (cliente) terá GMT+0300 e o servidor terá GMT+0100 .

  4. Depois de ter tudo configurado, tentamos desde o cliente enviar um pedido ao VA através do Teams.

  5. Assim que recebemos a solicitação, temos como parâmetro no corpo o fuso horário correto do usuário:

Screen Shot 2020-01-23 at 14 30 02

Screen Shot 2020-01-23 at 14 29 49

  1. Dentro da solicitação de análise, obtemos o fuso horário do cliente certo:

Screen Shot 2020-01-23 at 14 34 12

  1. Mas então após a atribuição da variável (basicamente a nova data (activity.localTimestamp)), temos o fuso horário do servidor:

Screen Shot 2020-01-23 at 14 36 52

Ei @ tommyJimmy87! Obrigado pelas etapas detalhadas! Estaremos revendo este cenário e retornaremos a você mais tarde 😊.

Olá @ tommyJimmy87!

Chegamos à conclusão de que isso se deve a uma limitação de como o JavaScript lida com o objeto Date .

No entanto, gostaríamos de informar que abrimos a edição # 1612 sobre esse problema no repositório BotBuilder-JS. Você pode acompanhar o andamento desse problema lá, portanto, verifique também.

Quanto ao problema que encontramos, ao converter qualquer data em Date objeto, JS converte para UTC que essencialmente remove o fuso horário original. O único fuso horário que o JavaScript pode manipular é o fuso horário do sistema que executa JS.
Você pode verificar a documentação da

Avisaremos você sobre qualquer progresso: relaxado:

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