Botframework-solutions: Typoskript: Lokaler Zeitstempel in Parse-Anfrage überschrieben

Erstellt am 21. Jan. 2020  ·  4Kommentare  ·  Quelle: microsoft/botframework-solutions

Welches Projekt ist betroffen?

Fähigkeiten und VA

In welcher Sprache ist das?

Typoskript

Was geschieht?

Wenn wir Nachrichten aus verschiedenen Zeitzonen senden, wird die localTimezone jedes Mal mit der lokalen Server-Zeitzone überschrieben und wir verlieren die Zeitzone des Benutzers.

Was sind die Schritte, um dieses Problem zu reproduzieren?

Versuchen Sie, eine Nachricht von einem Client in einer Zeitzone zu senden und die Nachricht von einer anderen Zeitzone des Clients zu empfangen.

Was haben Sie erwartet?

Zumindest um im Kontext die Zeitzone des Benutzers zu haben

Können Sie Protokolle, Fehlerausgaben usw. freigeben?

Dies geschieht in der BotFrameworkAdapter , während der processActivity Methode und der parseRequest Funktion.

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

Irgendwelche Screenshots oder zusätzlichen Kontext?

Bot Services Bug customer-replied-to customer-reported

Hilfreichster Kommentar

Hallo @tommyJimmy87! Danke für die Meldung des Problems!

Wir haben das Problem reproduziert und möchten mit Ihnen die Repro-Schritte überprüfen, die wir befolgt haben, um dies zu erreichen. Außerdem werden wir das Problem weiterhin mit einem C#-Bot reproduzieren, um die Implementierungen zu vergleichen und die nächsten Schritte zur Lösung des Problems zu finden.

Repro-Schritte

Verwenden des virtuellen TypeScript-

  1. Gehe zum Ordner des virtuellen Assistenten
  2. Installieren Sie die Abhängigkeiten mit npm install
  3. Kompilieren Sie die Lösung mit npm run build
  4. Stellen Sie den virtuellen Assistenten mit dem folgenden Befehl bereit:
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. Öffnen Sie den Bot Framework Emulator und konfigurieren Sie ihn, um den lokal ausgeführten virtuellen Assistenten zu verbinden
    image

  2. Setzen Sie einen Haltepunkt in der Zeile 1004 von botFrameworkAdapter.ts innerhalb der Botbuilder- Bibliothek
    image

  3. Ändern Sie das System Time zone in ein anderes (zB UTC+03:00 Minsk)
    image

  4. Debuggen des virtuellen Assistenten

  5. Starten Sie den Chat mit dem virtuellen Assistenten mithilfe des Emulators
  6. Die Ausführung wird am Breakpoint angehalten. Das activity.localTimestamp zeigt die Datumszeit mit der vorherigen Zeitzone des
    image

  7. Nach der Zuweisung hat die neue Datumszeit von activity.localTimestamp die Zeitzone des neuen Benutzers
    image

Danke :entspannt:

Alle 4 Kommentare

Hallo @tommyJimmy87! Danke für die Meldung des Problems!

Wir haben das Problem reproduziert und möchten mit Ihnen die Repro-Schritte überprüfen, die wir befolgt haben, um dies zu erreichen. Außerdem werden wir das Problem weiterhin mit einem C#-Bot reproduzieren, um die Implementierungen zu vergleichen und die nächsten Schritte zur Lösung des Problems zu finden.

Repro-Schritte

Verwenden des virtuellen TypeScript-

  1. Gehe zum Ordner des virtuellen Assistenten
  2. Installieren Sie die Abhängigkeiten mit npm install
  3. Kompilieren Sie die Lösung mit npm run build
  4. Stellen Sie den virtuellen Assistenten mit dem folgenden Befehl bereit:
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. Öffnen Sie den Bot Framework Emulator und konfigurieren Sie ihn, um den lokal ausgeführten virtuellen Assistenten zu verbinden
    image

  2. Setzen Sie einen Haltepunkt in der Zeile 1004 von botFrameworkAdapter.ts innerhalb der Botbuilder- Bibliothek
    image

  3. Ändern Sie das System Time zone in ein anderes (zB UTC+03:00 Minsk)
    image

  4. Debuggen des virtuellen Assistenten

  5. Starten Sie den Chat mit dem virtuellen Assistenten mithilfe des Emulators
  6. Die Ausführung wird am Breakpoint angehalten. Das activity.localTimestamp zeigt die Datumszeit mit der vorherigen Zeitzone des
    image

  7. Nach der Zuweisung hat die neue Datumszeit von activity.localTimestamp die Zeitzone des neuen Benutzers
    image

Danke :entspannt:

Hallo @VictorGrycuk ! Danke erstmal für die schnelle Antwort!

Ich weiß nicht, ob ich die Schritte sehr gut verstanden habe, aber ich werde versuchen, mich mit all den Schritten, die wir unternommen haben, um das Problem zu reproduzieren, besser zu erklären:

  1. Die erste Annahme ist, dass wir den virtuellen Assistenten lokal bereitgestellt haben.

  2. Die zweite Annahme ist, dass wir den Test mit 2 verschiedenen Laptops durchführen möchten, wobei der erste Laptop der Client ist (für uns Teams) und der zweite Laptop der Server ist, auf dem wir die VA ausführen.

  3. Die dritte Annahme ist, dass wir auf den beiden Laptops 2 verschiedene Zeitzonen eingerichtet haben, sagen wir, der erste (Client) hat GMT+0300 und der Server hat GMT+0100 .

  4. Nachdem wir alles eingerichtet haben, versuchen wir vom Client aus eine Anfrage über Teams an die VA zu senden.

  5. Sobald wir die Anfrage erhalten, haben wir als Parameter im Body die richtige Zeitzone vom Benutzer:

Screen Shot 2020-01-23 at 14 30 02

Screen Shot 2020-01-23 at 14 29 49

  1. Innerhalb der Parse-Anfrage erhalten wir die richtige Client-Zeitzone:

Screen Shot 2020-01-23 at 14 34 12

  1. Aber dann nach der Zuweisung der Variablen (im Grunde das neue Date(activity.localTimestamp) ) haben wir die Server Timezone:

Screen Shot 2020-01-23 at 14 36 52

Hey @tommyJimmy87! Danke für die ausführlichen Schritte! Wir werden dieses Szenario überprüfen und uns später bei Ihnen melden 😊.

Hallo @tommyJimmy87!

Wir kamen zu dem Schluss, dass dies auf eine Einschränkung der Art und Weise zurückzuführen ist, wie JavaScript mit dem Date Objekt umgeht.

Allerdings möchten wir Ihnen mitteilen, dass wir die geöffnete Ausgabe # 1612 über dieses Thema auf die BotBuilder-JS - Repository. Sie können den Fortschritt dieses Problems dort verfolgen, also schauen Sie auch dort nach.

Was das Problem angeht, das wir gefunden haben: Wenn ein Datum in ein Date Objekt konvertiert wird, konvertiert JS es in UTC, wodurch die ursprüngliche Zeitzone im Wesentlichen entfernt wird. Die einzige Zeitzone, die JavaScript verarbeiten kann, ist die Zeitzone des Systems, auf dem JS ausgeführt wird.
Weitere Informationen finden Sie in der Date-Dokumentation .

Wir werden Sie über jeden Fortschritt informieren :entspannt:

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen