Botframework-solutions: TypeScript: Stempel Waktu Lokal ditimpa dalam permintaan parse

Dibuat pada 21 Jan 2020  ·  4Komentar  ·  Sumber: microsoft/botframework-solutions

Proyek apa yang terpengaruh?

Keterampilan dan VA

Bahasa apa ini?

Naskah Ketik

Apa yang terjadi?

Ketika kami mengirim pesan dari zona waktu yang berbeda, zona waktu lokal ditimpa setiap kali dengan Zona Waktu Server Lokal dan kami kehilangan Zona Waktu Pengguna.

Apa langkah-langkah untuk mereproduksi masalah ini?

Coba kirim pesan dari klien di Zona Waktu dan terima pesan dari zona waktu klien yang berbeda.

Apa yang Anda harapkan terjadi?

Setidaknya untuk memiliki konteks zona waktu pengguna

Bisakah Anda membagikan log, keluaran kesalahan, dll.?

Ini terjadi di BotFrameworkAdapter , selama metode processActivity dan fungsi parseRequest .

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

Ada tangkapan layar atau konteks tambahan?

Bot Services Bug customer-replied-to customer-reported

Komentar yang paling membantu

Hai @tommyJimmy87! Terima kasih telah melaporkan masalah ini!

Kami mereproduksi masalah dan kami ingin memvalidasi dengan Anda langkah-langkah repro yang kami ikuti untuk mencapai ini. Selain itu, kami akan terus mereproduksi masalah menggunakan bot C# untuk membandingkan implementasi dan menemukan langkah selanjutnya untuk menyelesaikan masalah.

Langkah Repro

Menggunakan Contoh Asisten Virtual TypeScript

  1. Buka folder Asisten Virtual
  2. Instal dependensi dengan npm install
  3. Kompilasi solusi dengan npm run build
  4. Terapkan Asisten Virtual menggunakan perintah berikut:
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. Buka Emulator Kerangka Bot dan konfigurasikan untuk menghubungkan Asisten Virtual yang berjalan secara lokal
    image

  2. Tetapkan breakpoint di baris 1004 botFrameworkAdapter.ts di dalam pustaka Botbuilder
    image

  3. Ubah System Time zone ke yang berbeda (mis. UTC+03:00 Minsk)
    image

  4. Debug Asisten Virtual

  5. Mulai obrolan dengan Asisten Virtual menggunakan emulator
  6. Eksekusi akan berhenti di breakpoint. activity.localTimestamp akan menampilkan tanggal waktu dengan Zona Waktu Server Lokal sebelumnya
    image

  7. Setelah penugasan, datetime baru activity.localTimestamp akan memiliki Zona Waktu Pengguna baru
    image

terima kasih :santai:

Semua 4 komentar

Hai @tommyJimmy87! Terima kasih telah melaporkan masalah ini!

Kami mereproduksi masalah dan kami ingin memvalidasi dengan Anda langkah-langkah repro yang kami ikuti untuk mencapai ini. Selain itu, kami akan terus mereproduksi masalah menggunakan bot C# untuk membandingkan implementasi dan menemukan langkah selanjutnya untuk menyelesaikan masalah.

Langkah Repro

Menggunakan Contoh Asisten Virtual TypeScript

  1. Buka folder Asisten Virtual
  2. Instal dependensi dengan npm install
  3. Kompilasi solusi dengan npm run build
  4. Terapkan Asisten Virtual menggunakan perintah berikut:
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. Buka Emulator Kerangka Bot dan konfigurasikan untuk menghubungkan Asisten Virtual yang berjalan secara lokal
    image

  2. Tetapkan breakpoint di baris 1004 botFrameworkAdapter.ts di dalam pustaka Botbuilder
    image

  3. Ubah System Time zone ke yang berbeda (mis. UTC+03:00 Minsk)
    image

  4. Debug Asisten Virtual

  5. Mulai obrolan dengan Asisten Virtual menggunakan emulator
  6. Eksekusi akan berhenti di breakpoint. activity.localTimestamp akan menampilkan tanggal waktu dengan Zona Waktu Server Lokal sebelumnya
    image

  7. Setelah penugasan, datetime baru activity.localTimestamp akan memiliki Zona Waktu Pengguna baru
    image

terima kasih :santai:

Hai @VictorGrycuk ! Terima kasih atas jawaban cepatnya terlebih dahulu!

Saya tidak tahu apakah saya memahami dengan baik langkah-langkahnya, tetapi saya akan mencoba menjelaskan diri saya lebih baik dengan semua langkah yang kami lakukan untuk mereproduksi masalah:

  1. Asumsi pertama adalah bahwa kami memiliki Asisten Virtual yang digunakan secara lokal.

  2. Asumsi kedua adalah kita ingin melakukan pengujian dengan 2 laptop yang berbeda, dimana laptop pertama adalah client (bagi kami adalah Teams) dan laptop kedua adalah server tempat kita menjalankan VA.

  3. Asumsi ketiga adalah bahwa kita memiliki 2 Zona Waktu berbeda yang diatur pada 2 laptop, katakanlah yang pertama (klien) akan memiliki GMT+0300 dan server akan memiliki GMT+0100 .

  4. Kemudian setelah kami menyiapkan semuanya, kami mencoba dari klien untuk mengirim permintaan ke VA melalui Teams.

  5. Segera setelah kami mendapatkan permintaan, kami memiliki sebagai parameter di tubuh zona waktu yang tepat dari pengguna:

Screen Shot 2020-01-23 at 14 30 02

Screen Shot 2020-01-23 at 14 29 49

  1. Di dalam permintaan parse, kami mendapatkan Zona Waktu Klien yang tepat:

Screen Shot 2020-01-23 at 14 34 12

  1. Tapi kemudian setelah penetapan variabel (pada dasarnya baru Date(activity.localTimestamp) ), kami memiliki server Timezone:

Screen Shot 2020-01-23 at 14 36 52

Hai @tommyJimmy87! Terima kasih untuk langkah-langkah rinci! Kami akan meninjau skenario ini dan kami akan menghubungi Anda lagi nanti 😊.

Hai @tommyJimmy87!

Kami sampai pada kesimpulan bahwa ini disebabkan oleh batasan pada cara JavaScript menangani objek Date .

Namun, kami ingin memberi tahu Anda bahwa kami membuka masalah #1612 tentang masalah ini di repositori BotBuilder-JS. Anda dapat melacak kemajuan masalah ini di sana, jadi periksa juga di sana.

Adapun masalah yang kami temukan, ketika mengonversi tanggal apa pun menjadi objek Date , JS mengonversinya menjadi UTC yang pada dasarnya menghapus zona waktu asli. Satu-satunya zona waktu yang dapat ditangani JavaScript adalah zona waktu sistem yang menjalankan JS.
Anda dapat memeriksa dokumentasi Tanggal untuk informasi.

Kami akan memberi tahu Anda kemajuan apa pun :santai:

Apakah halaman ini membantu?
0 / 5 - 0 peringkat