Keterampilan dan VA
Naskah Ketik
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.
Coba kirim pesan dari klien di Zona Waktu dan terima pesan dari zona waktu klien yang berbeda.
Setidaknya untuk memiliki konteks zona waktu pengguna
Ini terjadi di BotFrameworkAdapter
, selama metode processActivity
dan fungsi parseRequest
.
if (typeof activity.localTimestamp === 'string') { activity.localTimestamp = new Date(activity.localTimestamp); }
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.
Menggunakan Contoh Asisten Virtual 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>"
Buka Emulator Kerangka Bot dan konfigurasikan untuk menghubungkan Asisten Virtual yang berjalan secara lokal
Tetapkan breakpoint di baris 1004 botFrameworkAdapter.ts di dalam pustaka Botbuilder
Ubah System Time zone
ke yang berbeda (mis. UTC+03:00 Minsk)
Debug Asisten Virtual
Eksekusi akan berhenti di breakpoint. activity.localTimestamp
akan menampilkan tanggal waktu dengan Zona Waktu Server Lokal sebelumnya
Setelah penugasan, datetime baru activity.localTimestamp
akan memiliki Zona Waktu Pengguna baru
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:
Asumsi pertama adalah bahwa kami memiliki Asisten Virtual yang digunakan secara lokal.
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.
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
.
Kemudian setelah kami menyiapkan semuanya, kami mencoba dari klien untuk mengirim permintaan ke VA melalui Teams.
Segera setelah kami mendapatkan permintaan, kami memiliki sebagai parameter di tubuh zona waktu yang tepat dari pengguna:
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:
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
npm install
npm run build
Buka Emulator Kerangka Bot dan konfigurasikan untuk menghubungkan Asisten Virtual yang berjalan secara lokal
Tetapkan breakpoint di baris 1004 botFrameworkAdapter.ts di dalam pustaka Botbuilder
Ubah
System Time zone
ke yang berbeda (mis. UTC+03:00 Minsk)Debug Asisten Virtual
Eksekusi akan berhenti di breakpoint.
activity.localTimestamp
akan menampilkan tanggal waktu dengan Zona Waktu Server Lokal sebelumnyaSetelah penugasan, datetime baru
activity.localTimestamp
akan memiliki Zona Waktu Pengguna baruterima kasih :santai: