{
attachments: [
{
content: "<p>/stop</p>",
contentType: "text/html"
}
],
channelId: "msteams",
from: {
aadObjectId: "xxx",
id: "xxx",
name: "xxx"
},
id: "xxx",
localTimestamp: "2026-08-17T09:41:58.4117934+02:00",
serviceUrl: "https://smba.trafficmanager.net/emea/xxx/",
text: "/stop",
textFormat: "plain",
timestamp: "2026-08-17T07:41:58.4117934Z",
type: "message"
}
As you can see, no App info.
No error.
1 validation error for tagged-union[TypingActivity,CommandSendActivity,CommandResultActivity,ConversationUpdateActivity,MessageActivity,MessageDeleteActivity,MessageReactionActivity,MessageUpdateActivity,tagged-union[ReadReceiptEventActivity,MeetingStartEventActivity,MeetingEndEventActivity,MeetingParticipantJoinEventActivity,MeetingParticipantLeaveEventActivity],tagged-union[FileConsentInvokeActivity,ExecuteActionInvokeActivity,MessageExtensionAnonQueryLinkInvokeActivity,MessageExtensionCardButtonClickedInvokeActivity,MessageExtensionFetchTaskInvokeActivity,MessageExtensionQueryInvokeActivity,MessageExtensionQueryLinkInvokeActivity,MessageExtensionQuerySettingUrlInvokeActivity,MessageExtensionSelectItemInvokeActivity,MessageExtensionSettingInvokeActivity,MessageExtensionSubmitActionInvokeActivity,ConfigFetchInvokeActivity,ConfigSubmitInvokeActivity,TabFetchInvokeActivity,TabSubmitInvokeActivity,TaskFetchInvokeActivity,TaskSubmitInvokeActivity,MessageFetchTaskInvokeActivity,MessageSubmitActionInvokeActivity,HandoffActionInvokeActivity,SignInTokenExchangeInvokeActivity,SignInVerifyStateInvokeActivity,SignInFailureInvokeActivity,AdaptiveCardInvokeActivity,SuggestedActionSubmitInvokeActivity,SearchInvokeActivity,HtmlWidgetCallToolInvokeActivity],tagged-union[InstalledActivity,UninstalledActivity]]
message.channelData.app.id
Field required [type=missing, input_value={}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.13/v/missing
Bug Description
It looks like this MR broke the bot integration for a few of our users. It seems that not all webhooks that currently go out have the required App info.
This is what the payload looks like:
{ attachments: [ { content: "<p>/stop</p>", contentType: "text/html" } ], channelId: "msteams", from: { aadObjectId: "xxx", id: "xxx", name: "xxx" }, id: "xxx", localTimestamp: "2026-08-17T09:41:58.4117934+02:00", serviceUrl: "https://smba.trafficmanager.net/emea/xxx/", text: "/stop", textFormat: "plain", timestamp: "2026-08-17T07:41:58.4117934Z", type: "message" }As you can see, no App info.
Steps to Reproduce
Expected Behavior
No error.
Actual Behavior
Error:
SDK Version
2.0.15
Python Version
3.14.7
Additional Context
No response