首页 > 解决方案 > Actionable Message Card的Input.Date控件根据平台返回不同的结果

问题描述

在我的可操作消息卡中,有一个Input.Date控件。用户输入日期,提交请求,然后在后台将生成的日期序列化为 DateTimeOffset 对象。

只要在桌面 Chrome/Edge 上的 Outlook Web App 中查看(并采取行动)可操作的消息,这过去就可以完美地工作。现在,我使用 Outlook 桌面和 Android 移动应用程序对此进行了测试,由于以下错误导致失败:

The JSON value is not in a supported DateTimeOffset format

这是因为不同的平台各自以不同的格式返回所选值。查看以下 JSON 有效负载。在每种情况下,我都AUG 5th 2021从卡中提交。我在德国,所以目前我们确实与 UTC/GMT 有 2 小时的偏移。

网络

{"retryDate":"2021-08-04T22:00:00.000Z"}

Outlook 桌面应用程序

{"retryDate":"08/04/2021 22:00:00"}

Outlook Android 应用程序(另请注意:这将返回本地引用而不是 UTC 值)

{"retryDate":"8/5/2021 12:00:00 AM"}

这是简化的可操作消息卡有效负载,包括生成上述请求正文的 HTTP POST 操作。

{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "Input.Date",
            "id": "gvd"
        },
        {
            "type": "ActionSet",
            "actions": [
                {
                    "type": "Action.Http",
                    "title": "Submit",
                    "method": "POST",
                    "url": "https://myserver.com/api/endpoint",
                    "body": "{\"retryDate\":\"{{gvd.Value}}\"}"
                }
            ]
        }
    ]
}

处理这些不一致的最佳方法是什么?最好我希望所有平台都以 UTC 格式返回相同的 ISO 日期时间。

任何帮助或见解将不胜感激!

标签: .net-coreoutlookoffice365adaptive-cards

解决方案


推荐阅读