Compétences et AV
Manuscrit
Lorsque nous envoyons des messages à partir de fuseaux horaires différents, le fuseau horaire local est remplacé à chaque fois par le fuseau horaire du serveur local et nous perdons le fuseau horaire de l'utilisateur.
Essayez d'envoyer un message d'un client dans un fuseau horaire et de recevoir le message d'un fuseau horaire différent du client.
Au moins pour avoir dans le contexte le fuseau horaire de l'utilisateur
Cela se produit dans le BotFrameworkAdapter
, pendant la méthode processActivity
et la fonction parseRequest
.
if (typeof activity.localTimestamp === 'string') { activity.localTimestamp = new Date(activity.localTimestamp); }
Salut @tommyJimmy87 ! Merci d'avoir signalé le problème !
Nous avons reproduit le problème et nous aimerions valider avec vous les étapes de repro que nous avons suivies pour y parvenir. De plus, nous continuerons à reproduire le problème à l'aide d'un bot C# afin de comparer les implémentations et de trouver les prochaines étapes pour résoudre le problème.
Utilisation de l' exemple d'assistant virtuel TypeScript
npm install
npm run build
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>"
Ouvrez l' émulateur Bot Framework et configurez-le pour connecter l'assistant virtuel exécuté localement
Définir un point d'arrêt dans la ligne 1004 de botFrameworkAdapter.ts à l' intérieur de la bibliothèque Botbuilder
Remplacez le System Time zone
par un autre (par exemple UTC+03:00 Minsk)
Déboguer l'assistant virtuel
L'exécution s'arrêtera au point d'arrêt. Le activity.localTimestamp
affichera la date et l'heure avec le fuseau horaire du serveur local précédent
Après l'affectation, la nouvelle date/heure de activity.localTimestamp
aura le nouveau fuseau horaire de l'utilisateur
Merci :détendu:
Salut @VictorGrycuk ! Merci pour la réponse rapide tout d'abord!
Je ne sais pas si j'ai très bien compris les étapes, mais je vais essayer de mieux m'expliquer avec toutes les étapes que nous avons suivies pour reproduire le problème :
La première hypothèse est que l'assistant virtuel est déployé localement.
La deuxième hypothèse est que nous voulons effectuer le test avec 2 ordinateurs portables différents, où le premier ordinateur portable est le client (pour nous, Teams) et le deuxième ordinateur portable est le serveur sur lequel nous exécutons le VA.
La troisième hypothèse est que nous avons 2 fuseaux horaires différents configurés sur les 2 ordinateurs portables, disons que le premier (client) aura GMT+0300
et le serveur aura GMT+0100
.
Ensuite, une fois que tout est configuré, nous essayons depuis le client d'envoyer une demande au VA via Teams.
Dès que nous recevons la requête nous avons en paramètre dans le corps le bon fuseau horaire de l'utilisateur :
Salut @tommyJimmy87 ! Merci pour les étapes détaillées ! Nous allons revoir ce scénario et nous reviendrons vers vous plus tard 😊.
Salut @tommyJimmy87 !
Nous sommes arrivés à la conclusion que cela est dû à une limitation sur la façon dont JavaScript gère l'objet Date
.
Cependant, nous souhaitons vous informer que nous avons ouvert le problème #1612 à propos de ce problème sur le référentiel BotBuilder-JS. Vous pouvez suivre la progression de ce problème là-bas, alors vérifiez-y également.
En ce qui concerne le problème que nous avons trouvé, lors de la conversion d'une date en objet Date
, JS le convertit en UTC, ce qui supprime essentiellement le fuseau horaire d'origine. Le seul fuseau horaire que JavaScript peut gérer est le fuseau horaire du système exécutant JS.
Vous pouvez consulter la documentation Date pour plus d'informations.
Nous vous tiendrons au courant de tout progrès :relaxé:
Commentaire le plus utile
Salut @tommyJimmy87 ! Merci d'avoir signalé le problème !
Nous avons reproduit le problème et nous aimerions valider avec vous les étapes de repro que nous avons suivies pour y parvenir. De plus, nous continuerons à reproduire le problème à l'aide d'un bot C# afin de comparer les implémentations et de trouver les prochaines étapes pour résoudre le problème.
Étapes de reproduction
Utilisation de l' exemple d'assistant virtuel TypeScript
npm install
npm run build
Ouvrez l' émulateur Bot Framework et configurez-le pour connecter l'assistant virtuel exécuté localement
Définir un point d'arrêt dans la ligne 1004 de botFrameworkAdapter.ts à l' intérieur de la bibliothèque Botbuilder
Remplacez le
System Time zone
par un autre (par exemple UTC+03:00 Minsk)Déboguer l'assistant virtuel
L'exécution s'arrêtera au point d'arrêt. Le
activity.localTimestamp
affichera la date et l'heure avec le fuseau horaire du serveur local précédentAprès l'affectation, la nouvelle date/heure de
activity.localTimestamp
aura le nouveau fuseau horaire de l'utilisateurMerci :détendu: