スキルとVA
Typescript
異なるタイムゾーンからメッセージを送信すると、localTimezoneはローカルサーバーのタイムゾーンで毎回上書きされ、ユーザーのタイムゾーンが失われます。
タイムゾーン内のクライアントからメッセージを送信し、クライアントの別のタイムゾーンからメッセージを受信してみてください。
少なくとも、ユーザーのタイムゾーンをコンテキストに含める必要があります
これは、 BotFrameworkAdapter
で、 processActivity
メソッドとparseRequest
関数の間に発生します。
if (typeof activity.localTimestamp === 'string') { activity.localTimestamp = new Date(activity.localTimestamp); }
こんにちは@ tommyJimmy87! 問題を報告していただきありがとうございます。
問題を再現しました。これを実現するために実行した再現手順を検証します。 また、実装を比較し、問題を解決するための次のステップを見つけるために、C#ボットを使用して問題を再現し続けます。
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>"
Bot Framework Emulatorを開き、ローカルで実行されているVirtualAssistantに接続するように構成します
Botbuilderライブラリの内部botFrameworkAdapter.tsのライン1004にブレークポイントを設定
System Time zone
を別のものに変更します(例:UTC + 03:00ミンスク)
バーチャルアシスタントをデバッグする
実行はブレークポイントで停止します。 activity.localTimestamp
は、以前のローカルサーバーのタイムゾーンの日時が表示され
割り当て後、 activity.localTimestamp
の新しい日時に新しいユーザーのタイムゾーンが設定されます
ありがとう:リラックス:
こんにちは@VictorGrycuk ! まず第一に速い答えをありがとう!
手順を十分に理解したかどうかはわかりませんが、問題を再現するために行ったすべての手順を使用して、自分自身をよりよく説明しようと思います。
最初の前提は、仮想アシスタントがローカルにデプロイされていることです。
2番目の仮定は、2つの異なるラップトップでテストを実行することです。最初のラップトップはクライアント(私たちにとってはTeams)であり、2番目のラップトップはVAを実行しているサーバーです。
3番目の仮定は、2つのラップトップに2つの異なるタイムゾーンが設定されていることです。たとえば、最初のタイムゾーン(クライアント)にはGMT+0300
あり、サーバーにはGMT+0100
ます。
次に、すべての設定が完了したら、クライアントからチームを介してVAにリクエストを送信しようとします。
リクエストを受け取るとすぐに、本文にパラメータとしてユーザーからの適切なタイムゾーンがあります。
ねえ@ tommyJimmy87! 詳細な手順をありがとう! このシナリオを確認し、後で返信します😊。
こんにちは@ tommyJimmy87!
これは、JavaScriptがDate
オブジェクトを処理する方法の制限によるものであるという結論に達しました。
ただし、BotBuilder-JSリポジトリでこの問題に関する問題#1612を開いたことをお知らせします。 ここでこの問題の進行状況を追跡できるので、そこでも確認してください。
見つかった問題については、日付をDate
オブジェクトに変換すると、JSはそれをUTCに変換します。これにより、基本的に元のタイムゾーンが削除されます。 JavaScriptが処理できる唯一のタイムゾーンは、JSを実行しているシステムのタイムゾーンです。
詳細については、日付のドキュメントを確認してください。
進捗状況をお知らせします:relaxed:
最も参考になるコメント
こんにちは@ tommyJimmy87! 問題を報告していただきありがとうございます。
問題を再現しました。これを実現するために実行した再現手順を検証します。 また、実装を比較し、問題を解決するための次のステップを見つけるために、C#ボットを使用して問題を再現し続けます。
再現手順
TypeScriptバーチャルアシスタントサンプルの使用
npm install
依存関係をインストールしますnpm run build
てソリューションをコンパイルしますBot Framework Emulatorを開き、ローカルで実行されているVirtualAssistantに接続するように構成します
Botbuilderライブラリの内部botFrameworkAdapter.tsのライン1004にブレークポイントを設定
System Time zone
を別のものに変更します(例:UTC + 03:00ミンスク)バーチャルアシスタントをデバッグする
実行はブレークポイントで停止します。
activity.localTimestamp
は、以前のローカルサーバーのタイムゾーンの日時が表示され割り当て後、
activity.localTimestamp
の新しい日時に新しいユーザーのタイムゾーンが設定されますありがとう:リラックス: