MS Teams 机器人以用户时区显示时间

MS Teams bot displaying time in user's timezone

我正在使用 Microsoft Teams 的 REST API 构建一个机器人。机器人需要发送 Started at 1:43 PMEnded at 5:30 PM 等事件的状态。此信息将发送到频道,这些频道自然会有属于不同时区的用户。有没有办法发送 ISO_8601 格式的日期时间文本(或任何其他格式)并让 MS Teams 在用户的区域设置和时区中显示时间?

我不知道 Teams 中有任何类似的东西,至少在普通短信中没有。作为一个可能的替代建议,也许日期时间是 UTC,告诉用户是这种情况,并使文本本身成为显示用户本地时间的网页的 hyperlink。

在您的网页中,您可以使用

获取用户的时区

Intl.DateTimeFormat().resolvedOptions().timeZone

然后从那里查找并计算偏移量,向他们显示相关时间。

要真正使您的机器人消息中的文本成为超文本link,您需要发回自适应卡片并对 url 使用 Markdown 格式,它看起来类似于:[我的 Link] (https://whatever.com)(但没有 space,所以它会是 ]( <- 我在这里放了一个 space,否则 Whosebug 本身认为这是一个真实的 link!)

自适应卡片确实提供了一种方法。 TIME 函数采用 ISO_8601 格式的日期时间文本,并以最终用户的语言环境和时区显示时间。

格式:{{TIME(ISO_8601_Formatted_Date_String)}}

更多详情 - https://docs.microsoft.com/en-us/adaptive-cards/authoring-cards/text-features#datetime-formatting-and-localization

可悲的是这只能在附件卡中使用。