Teams Bot发送会议通知时Forbidden异常的排查与解决
Teams Bot发送会议通知返回Forbidden错误的排查与修复
问题背景
使用Visual Studio新版Teams Toolkit创建.Net/C# EchoBot,参考微软官方示例添加向目标用户发送会议通知功能,点击「Send Notification」按钮时触发Forbidden错误。已在应用清单中添加OnlineMeetingNotification.Send.Chat资源特定权限,并通过builder.Configuration配置了App ID与密码。
异常详情
Microsoft.Rest.HttpOperationException: Operation returned an invalid status code 'Forbidden' at Microsoft.Bot.Connector.Teams.TeamsOperations.SendMeetingNotificationMessageAsync(String meetingId, MeetingNotificationBase notification, Dictionary`2 customHeaders, CancellationToken cancellationToken) at Microsoft.Bot.Connector.Teams.TeamsOperationsExtensions.SendMeetingNotificationAsync(ITeamsOperations operations, String meetingId, MeetingNotificationBase notification, CancellationToken cancellationToken) at Microsoft.Bot.Builder.Teams.TeamsInfo.SendMeetingNotificationAsync(ITurnContext turnContext, MeetingNotificationBase notification, String meetingId, CancellationToken cancellationToken) at Csbot2.Bot.EchoBot.HandleActions(ITurnContext`1 turnContext, CancellationToken cancellationToken) in C:\Users\x\y\Csbot2\Csbot2\Bot\EchoBot.cs:line 99
可能原因
- 权限未完成管理员审批:
OnlineMeetingNotification.Send.Chat属于资源特定应用权限,必须由租户管理员手动授予,仅在清单中声明无法生效。 - 身份认证配置错误:
MicrosoftAppId或MicrosoftAppPassword与Azure Bot注册信息不匹配,或密码已过期、未启用。 - Meeting ID无效或无访问权限:使用的会议ID不存在,或Bot未被添加至该会议的成员列表,无发送通知权限。
- 权限声明格式错误:应用清单中
resourcesSpecificPermissions的配置格式不符合Teams要求,比如权限类型未设为Application。
修复方案
- 确认权限审批状态:
登录Azure门户,找到对应的Bot注册资源,进入「API权限」页面,检查OnlineMeetingNotification.Send.Chat权限是否已标记为「已授予」(需租户管理员操作)。 - 验证身份配置:
核对appsettings.json中的MicrosoftAppId和MicrosoftAppPassword,确保与Azure Bot注册页面的「应用ID」和「客户端密码」完全一致,且密码未过期。 - 检查会议ID有效性:
确认发送通知时传入的meetingId是有效的Teams会议ID(可从会议链接中提取),且Bot已被添加为会议成员。 - 修正权限清单配置:
确保manifest.json中resourcesSpecificPermissions的配置格式正确:"resourcesSpecificPermissions": [ { "name": "OnlineMeetingNotification.Send.Chat", "type": "Application" } ] - 测试基础API调用:
用Bot的App ID和密码获取OAuth2令牌,直接调用Teams Graph API发送会议通知,验证是否能成功,排除Bot框架封装层的问题。
内容的提问来源于stack exchange,提问作者HashTable
相关产品推荐
相关产品推荐

