MS Teams Webhook 在小消息上返回错误 413

问题描述 投票:0回答:1

根据 MS 文档,我可以通过 Webhook 发送到 Teams 频道的消息的最大大小为 ~28KB(链接) 但即使对于小得多的消息,我也会收到以下错误:

Webhook message delivery failed with error: Microsoft Teams endpoint returned HTTP error 413 with ContextId ***

我玩了一下,发现我只能发送内容大小最大为 14.000 字节的请求。

这是我的代码的简化:

private async Task SendTeamsNotification(string webhookUrl, string jsonTemplate) {
    var content = new StringContent(jsonformattedTemplate);
    var response = await _httpClient.PostAsync(webhookUrl, content)

    // Some error handling...
}

jsonTemplate
是自适应卡的json格式字符串。
_httpClient
是默认客户端。

我错过了什么?为什么限制正好减半?

c# .net http microsoft-teams
1个回答
0
投票

我无法创建评论,但我认为这与将卡片发送到 Teams 时的数据编码有关。看起来微软正在检查实际的字节长度而不是它包含多少个字符。

不提供编码时,

StringContent
使用UTF-8来获取字节。例如,为此编码提供四个普通字符会产生四字节大小,但提供日语文本
テスト
(从
test
翻译)会产生九个字节大小。基本上所有非正常字符都包含多个字节(当通过支持它们的编码进行处理时)。

我还面临着通过传入的 webhook 将动态内容发送到 Teams 频道的任务,并且有同样的问题,因为我已经在 O365 的另一部分遇到了类似的问题。

组允许有最大长度为 1024 的描述,但看起来 Microsoft 也计算字节而不是字符,即使描述是发送到 Graph 的较大 JSON 主体的一部分。 1024 个字符的描述中至少有一个特殊字符将导致错误。我认为问题的实际根源是 Graph 调用以设置描述的后端服务。但这是另一个故事,不是本线程问题的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.