技能和VA
打字稿
当我们从不同的时区发送消息时,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 ,配置连接本地运行的Virtual Assistant
在Botbuilder库中的botFrameworkAdapter.ts的第 1004 行设置断点
将System Time zone
更改为不同的(例如 UTC+03:00 Minsk)
调试虚拟助手
执行将在断点处停止。 activity.localTimestamp
将显示具有先前本地服务器时区的日期时间
分配后, activity.localTimestamp
的新日期时间将具有新用户的时区
谢谢:放松:
嗨@VictorGrycuk ! 首先感谢您的快速答复!
我不知道我是否非常理解这些步骤,但我会尝试用我们为重现问题所做的所有步骤更好地解释自己:
第一个假设是我们在本地部署了虚拟助手。
第二个假设是我们想用 2 台不同的笔记本电脑执行测试,其中第一台笔记本电脑是客户端(对我们来说是 Teams),第二台笔记本电脑是我们运行 VA 的服务器。
第三个假设是我们在 2 台笔记本电脑上设置了 2 个不同的时区,假设第一个(客户端)将具有GMT+0300
而服务器将具有GMT+0100
。
然后在我们完成所有设置后,我们尝试从客户端通过 Teams 向 VA 发送请求。
一旦我们收到请求,我们就会在正文中将用户的正确时区作为参数:
嘿@tommyJimmy87! 谢谢你的详细步骤! 我们将审查这种情况,稍后我们会回复您😊。
最有用的评论
嗨@tommyJimmy87! 感谢您报告问题!
我们重现了该问题,并希望与您一起验证我们为实现此目的而遵循的重现步骤。 此外,我们将继续使用 C# 机器人重现问题,以便比较实现并找到解决问题的后续步骤。
重现步骤
使用 TypeScript虚拟助手示例
npm install
安装依赖项npm run build
编译解决方案打开Bot Framework Emulator ,配置连接本地运行的Virtual Assistant
在Botbuilder库中的botFrameworkAdapter.ts的第 1004 行设置断点
将
System Time zone
更改为不同的(例如 UTC+03:00 Minsk)调试虚拟助手
执行将在断点处停止。
activity.localTimestamp
将显示具有先前本地服务器时区的日期时间分配后,
activity.localTimestamp
的新日期时间将具有新用户的时区谢谢:放松: