Как долго могут длиться сообщения при публикации в веб-крюке коннектора Microsoft Teams? - PullRequest
0 голосов
/ 20 октября 2019

Я публикую результаты / журналы системы CI / CD в Microsoft Teams. При обработке некоторых неудачных сборок с более длинными результатами я наткнулся на следующую ошибку, возвращаемую URL-адресом webhook https://outlook.office.com/webhook/bb6bfee7-1820-49fd-b9f9-f28f7cc679ff@<uuid1>/IncomingWebhook/<id>/<uuid2>:

Webhook message delivery failed with error: Microsoft Teams endpoint returned HTTP error 413 with ContextId tcid=3626521845697697778,server=DB3PEPF0000009A,cv=BmkbJ1NdTkv1EDoqr7n/rg.0..

Как я заметил, это вызвано слишком большой полезной нагрузкой, отправленной на URL-адрес веб-крюка Teams.

Исходное сложное сообщение (разделы, заголовки, субтитры, отформатированные ссылки, <pre> форматированный текст и т. Д.) Не выполнялось, когда полезная нагрузка JSON превышала 18000 символов.

Проверкано с полезной нагрузкой я заметил, что чем больше форматирования я удаляю из необработанной полезной нагрузки JSON, тем дольше может быть сообщение команд. Самое длинное сообщение, которое я мог опубликовать (согласно cu cURL): Content-Length: 20711. Полезная нагрузка JSON для этого сообщения:

{"themeColor":"ED4B35","text":"a....a"}

пробелы в формате JSON, по-видимому, не учитываются (т. Е. Добавление пробелов не приведет к уменьшению максимальной длины сообщения, которое я могу отправить в веб-крючок Команд).

Для справки, первоначальное сообщение выглядело примерно так:

<code>{
    "themeColor": "ED4B35",
    "summary": "iris-shared-libs - shared-library-updates - failure",
    "sections": [
        {
            "activityTitle": "Job: [iris-shared-libs](https://my.concourse.net/teams/hsm/pipelines/iris-shared-libs) - [shared-library-updates #89](https://my.concourse.sccloudinfra.net/teams/hsm/pipelines/iris-shared-libs/jobs/shared-library-updates/builds/89) (FAILURE)",
            "activityImage": "https://via.placeholder.com/200.png/ED4B35/FFFFFF?text=F",
            "facts": [
                {
                    "name": "Failed step",
                    "value": "update-shared-libraries"
                }
            ]
        },
        {
            "text": "Trying a new strategy with gated versioned releases",
            "facts": [
                {
                    "name": "Repository",
                    "value": "[iris-concourse-resources](https://my.git.com/projects/IRIS/repos/iris-concourse-resources)"
                },
                {
                    "name": "Commit",
                    "value": "[2272145ddf9285c9933df398d63cbe680a62f2b7](https://my.git.com/projects/IRIS/repos/iris-concourse-resources/commits/2272145ddf9285c9933df398d63cbe680a62f2b7)"
                },
                {
                    "name": "Author",
                    "value": "me@company.com"
                }
            ]
        },
        {
            "activityTitle": "Job failed step logs part 1",
            "text": "<pre>...very long log text goes here ...
"}]}

Какова фактическая максимальная длина отправляемого сообщения веб-крюка коннектора Microsoft Teams?

* * Официальная страница не упоминает об этом. В разделе «Обратная связь» внизу все еще остается открытый вопрос о «Ограничениях размера сообщений?» С обратной связью: «В настоящее время мы изучаем это. «

1 Ответ

0 голосов
/ 20 октября 2019

Из проведенных мною тестов некоторые наблюдаемые ограничения (если они не зависят от сервера) примерно равны, исходя из полезной нагрузки сообщения JSON (структура и форматирование) между 18000 и 40000 (с длинойниже 18000, никогда не ломаясь, и выше 40000, всегда ломаясь).

  • Вариант использования 18000: один длинный текст для раздела
  • Вариант использования 40000: 600 фактов с очень коротким именем и пустой строкой в ​​видезначение

И удаление фрагмента полезной нагрузки JSON и добавление равного количества символов в другое значение JSON не даст вам того же максимума.

Я заметил мягкий предел (сообщение обрезано, но без ошибок), а также на максимальное количество разделов: 10 . Разделы, начинающиеся с 11-го, отбрасываются.

...