Botframework-solutions: طباعة نصية: تمت الكتابة فوق الطابع الزمني المحلي في طلب التحليل

تم إنشاؤها على ٢١ يناير ٢٠٢٠  ·  4تعليقات  ·  مصدر: microsoft/botframework-solutions

ما المشروع المتأثر؟

المهارات و VA

بأي لغة هذه؟

المطبوع

ماذا يحدث؟

عندما نرسل رسائل من مناطق زمنية مختلفة ، يتم استبدال المنطقة الزمنية المحلية في كل مرة بالمنطقة الزمنية للخادم المحلي ونفقد المنطقة الزمنية للمستخدم.

ما هي خطوات إعادة إظهار هذه المشكلة؟

حاول إرسال رسالة من عميل في منطقة زمنية واستلام الرسالة من منطقة زمنية مختلفة للعميل.

ماذا كنت تتوقع أن يحدث؟

على الأقل أن يكون لديك في السياق المنطقة الزمنية للمستخدم

هل يمكنك مشاركة أي سجلات أو ناتج خطأ وما إلى ذلك؟

يحدث هذا في BotFrameworkAdapter ، خلال processActivity طريقة و parseRequest وظيفة.

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

أي لقطات شاشة أو سياق إضافي؟

Bot Services Bug customer-replied-to customer-reported

التعليق الأكثر فائدة

مرحبا @ tommyJimmy87! شكرا للإبلاغ عن هذه المسألة!

أعدنا إنتاج المشكلة ونود أن نتحقق معك من خطوات repro التي اتبعناها لإنجاز ذلك. أيضًا ، سنستمر في إعادة إنتاج المشكلة باستخدام C # bot لمقارنة عمليات التنفيذ والعثور على الخطوات التالية لحل المشكلة.

خطوات Repro

استخدام نموذج TypeScript

  1. انتقل إلى مجلد Virtual Assistant
  2. قم بتثبيت التبعيات بـ npm install
  3. قم بتجميع الحل باستخدام npm run build
  4. انشر المساعد الافتراضي باستخدام الأمر التالي:
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. افتح Bot Framework Emulator وقم بتكوينه لتوصيل المساعد الافتراضي الذي يعمل محليًا
    image

  2. عيّن نقطة توقف في السطر 1004 من Botbuilder
    image

  3. قم بتغيير System Time zone إلى رمز مختلف (مثل UTC + 03:00 مينسك)
    image

  4. تصحيح أخطاء المساعد الظاهري

  5. ابدأ الدردشة مع Virtual Assistant باستخدام المحاكي
  6. سيتوقف التنفيذ عند نقطة التوقف. سيظهر activity.localTimestamp التاريخ والوقت مع المنطقة الزمنية للخادم المحلي السابقة
    image

  7. بعد المهمة ، سيكون للتاريخ والوقت الجديد activity.localTimestamp المنطقة الزمنية للمستخدم الجديد
    image

شكرا: استرخاء:

ال 4 كومينتر

مرحبا @ tommyJimmy87! شكرا للإبلاغ عن هذه المسألة!

أعدنا إنتاج المشكلة ونود أن نتحقق معك من خطوات repro التي اتبعناها لإنجاز ذلك. أيضًا ، سنستمر في إعادة إنتاج المشكلة باستخدام C # bot لمقارنة عمليات التنفيذ والعثور على الخطوات التالية لحل المشكلة.

خطوات Repro

استخدام نموذج TypeScript

  1. انتقل إلى مجلد Virtual Assistant
  2. قم بتثبيت التبعيات بـ npm install
  3. قم بتجميع الحل باستخدام npm run build
  4. انشر المساعد الافتراضي باستخدام الأمر التالي:
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. افتح Bot Framework Emulator وقم بتكوينه لتوصيل المساعد الافتراضي الذي يعمل محليًا
    image

  2. عيّن نقطة توقف في السطر 1004 من Botbuilder
    image

  3. قم بتغيير System Time zone إلى رمز مختلف (مثل UTC + 03:00 مينسك)
    image

  4. تصحيح أخطاء المساعد الظاهري

  5. ابدأ الدردشة مع Virtual Assistant باستخدام المحاكي
  6. سيتوقف التنفيذ عند نقطة التوقف. سيظهر activity.localTimestamp التاريخ والوقت مع المنطقة الزمنية للخادم المحلي السابقة
    image

  7. بعد المهمة ، سيكون للتاريخ والوقت الجديد activity.localTimestamp المنطقة الزمنية للمستخدم الجديد
    image

شكرا: استرخاء:

مرحبًا VictorGrycuk ! شكرا على الإجابة السريعة أولا وقبل كل شيء!

لا أعرف ما إذا كنت أفهم الخطوات جيدًا ، لكنني سأحاول شرح نفسي بشكل أفضل بكل الخطوات التي فعلناها لإعادة إظهار المشكلة:

  1. الافتراض الأول هو أنه تم نشر المساعد الظاهري محليًا.

  2. الافتراض الثاني هو أننا نريد إجراء الاختبار باستخدام جهازي كمبيوتر محمول مختلفين ، حيث يكون الكمبيوتر المحمول الأول هو العميل (بالنسبة لنا هو Teams) والكمبيوتر المحمول الثاني هو الخادم حيث نقوم بتشغيل VA.

  3. الافتراض الثالث هو أن لدينا منطقتان زمنيتان مختلفتان تم إعدادهما على جهازي الكمبيوتر المحمول ، دعنا نقول أن الأول (العميل) سيحتوي على GMT+0300 وسيحصل الخادم على GMT+0100 .

  4. ثم بعد الانتهاء من إعداد كل شيء ، نحاول من العميل إرسال طلب إلى VA من خلال Teams.

  5. بمجرد أن نحصل على الطلب ، لدينا كمعامل في الجسم المنطقة الزمنية المناسبة من المستخدم:

Screen Shot 2020-01-23 at 14 30 02

Screen Shot 2020-01-23 at 14 29 49

  1. داخل طلب التحليل ، نحصل على المنطقة الزمنية الصحيحة للعميل:

Screen Shot 2020-01-23 at 14 34 12

  1. ولكن بعد تعيين المتغير (بشكل أساسي التاريخ الجديد (Activity.localTimestamp)) ، لدينا الخادم Timezone:

Screen Shot 2020-01-23 at 14 36 52

يا @ tommyJimmy87! شكرا على الخطوات التفصيلية! سنراجع هذا السيناريو وسنعود إليك لاحقًا.

مرحبا @ tommyJimmy87!

لقد توصلنا إلى استنتاج مفاده أن هذا يرجع إلى قيود على كيفية تعامل JavaScript مع الكائن Date .

ومع ذلك ، نود إعلامك بأننا فتحنا المشكلة رقم 1612 حول هذه المشكلة في مستودع BotBuilder-JS. يمكنك تتبع تقدم هذه المشكلة هناك ، لذا تحقق من ذلك أيضًا.

بالنسبة إلى المشكلة التي وجدناها ، عند تحويل أي تاريخ إلى كائن Date ، يقوم JS بتحويله إلى UTC الذي يزيل المنطقة الزمنية الأصلية بشكل أساسي. المنطقة الزمنية الوحيدة التي يمكن لـ JavaScript التعامل معها هي المنطقة الزمنية للنظام الذي يقوم بتشغيل JS.
يمكنك التحقق من وثائق التاريخ للحصول على معلومات.

سنخبرك بأي تقدم: مريح:

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات