You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure Bot Framework回复conversationUpdate时遇401错误求助

Azure Bot Framework 发送消息时401未授权问题诊断与解决

核心问题诊断

从你提供的JWT Token声明来看,aud(受众)字段值为00000002-0000-0000-c000-000000000000,这是Microsoft Graph API的资源ID,而非Bot Framework API的资源标识。Bot Framework服务仅接受受众为Bot Framework API的Token,这是导致401错误的直接原因。

分步解决方案

1. 修正Token请求的Scope与权限配置

  • 确保请求Token时,scope参数严格设置为https://api.botframework.com/.default
  • 登录Azure门户,进入对应的应用注册:
    • 导航至“API权限”,添加“Bot Framework”相关权限(如BotConnector.Send、BotConnector.ReadWrite.All)
    • 点击“授予管理员同意”,确保权限生效

2. 验证应用注册与Bot Service的关联一致性

  • 确认Bot Service配置页面的“Microsoft App ID”与Web应用的APP_ID完全一致,无拼写或大小写错误
  • 检查应用注册的客户端密码(PASSWORD)是否有效:未过期、未被吊销,且与Bot Service配置的密码匹配

3. 检查Token请求参数与端点

确保获取Token的POST请求参数完整且正确:

POST https://login.microsoftonline.com/1fd80b61-a805-4a57-879b-45ddb39a660d/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id=你的APP_ID
&client_secret=你的PASSWORD
&grant_type=client_credentials
&scope=https://api.botframework.com/.default

注意:使用oauth2/v2.0/token端点而非v2.0/token(两者功能一致,但前者是标准v2端点路径)

4. 确认Bot Service的消息端点配置

  • 确保添加至Bot Service的ngrok地址是完整HTTPS路径,且与本地服务监听路径匹配(例如https://xxxx.ngrok.io/api/messages)
  • 在Azure门户Bot Service的“配置”页面,验证“消息端点”字段与上述路径完全一致

5. 使用SDK自动处理Token(推荐)

如果你使用Python Bot Framework SDK,无需手动获取和携带Token,SDK会自动完成认证流程:

from botbuilder.core import BotFrameworkAdapter, BotFrameworkAdapterSettings

settings = BotFrameworkAdapterSettings("你的APP_ID", "你的PASSWORD")
adapter = BotFrameworkAdapter(settings)

# 发送消息时直接使用adapter构造并发送活动,SDK会自动处理Token

额外验证步骤

  • 解码Token时,确认aud字段值变为https://api.botframework.com或其对应的资源ID00000003-0000-0000-c000-000000000000
  • 使用Bot Framework Emulator测试时,确保启用“使用Azure AD认证”选项,验证认证流程是否正常

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:26:19