К обсуждениям

Teams показал сообщение, а бот его не получил: строим таймлайн между клиентом и endpoint

Редакция VOne Технологии

Разбор краткого разрыва доставки Microsoft Teams bot без выдуманной причины: activity ID, UTC-время, endpoint-логи и Service Health проверяются как отдельные слои.

Определите ожидаемый путь одной activity

Официальная документация Teams описывает входящее сообщение как Activity типа message: Teams отправляет JSON на единственный messaging endpoint бота, после чего обработчик приложения читает activity и отвечает. Поэтому расследование должно пройти по границам: клиент показал сообщение, платформа сформировала activity, endpoint принял HTTP-запрос, приложение записало обработку. Отсутствие записи в бизнес-логе не доказывает, что запрос не пришёл: сначала проверьте access logs и telemetry перед кодом обработчика. Не сохраняйте полный текст пользовательского сообщения без необходимости.

Постройте временную линию в UTC

Для сообщения до сбоя, пропущенного сообщения и следующего успешного события запишите UTC-время, scope — personal, group chat или channel — и обезличенный correlation marker. В приватных логах допустим conversation ID, но его не следует публиковать. Сравните временные зоны клиента, сервера и Application Insights. Если часы расходятся, окно поиска станет ложным. Важен не рассказ «несколько минут не работало», а три точки: последнее подтверждённое получение, первая потеря и первое восстановление.

Разделите endpoint и логику бота

Проверьте HTTP access logs на messaging endpoint, код ответа, длительность и исключения в тот же интервал. Если запрос пришёл с успешным ответом, но бизнес-обработчик молчит, исследуйте middleware, фильтр @mention, очередь и исключения приложения. Если входящего запроса нет, локальная логика не могла обработать activity; следующая граница — канал и служебная доставка. Не воспроизводите проблему массовой отправкой: один контролируемый тест в том же scope безопаснее и сохраняет нормальную нагрузку.

Проверяйте advisory только в официальном Service Health

Microsoft указывает, что Service Health в Microsoft 365 admin center показывает состояние Teams и зависимых сервисов; доступ к нему требует соответствующей роли администратора. Сопоставьте регион, workload и временное окно, а не только похожее название advisory. Если публичный номер инцидента закрыт или относится к другой функции, не используйте его как доказательство. Зафиксируйте скрин статуса и ID сообщения центра администрирования в закрытом тикете. Отсутствие advisory тоже не доказывает исправность каждого единичного маршрута.

Сформируйте пакет для поддержки без содержимого беседы

Передайте tenant и bot identifiers только приватно, UTC-окно, scope, activity или conversation identifiers, endpoint URL без секретных параметров, HTTP-логи соседних событий и номера релевантных Service Health сообщений. Добавьте версии SDK и последний deployment, даже если изменений не было. Не включайте access token, app secret и пользовательский текст. Критерий завершения локальной диагностики — клиентское событие подтверждено, endpoint-лог в том же окне отсутствует, а до и после трафик нормален. Тогда нужна проверка платформенной телеметрии Microsoft.

Материал подготовлен самостоятельно с автоматизацией и редакционно проверен 30 июля 2026 года по обезличенному публичному сигналу Microsoft Q&A и официальной документации Teams; текст диалога, tenant ID и журналы автора не использовались.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.