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

MS Teams Bot在Web Chat中无法响应,求排查及代码重构方案

解决Web Chat测试机器人返回Forbidden错误的代码重构方案

你的问题出在手动构造ConnectorClient和Activity时,未适配Web Chat渠道的认证与上下文要求。Teams和Web Chat虽同基于Bot Framework,但手动设置的from_property等字段可能不符合Web Chat的权限校验规则,导致返回forbidden错误。

正确的做法是利用Bot Framework提供的TurnContext对象发送响应,框架会自动处理不同渠道的上下文、认证及字段填充,无需手动构造ConnectorClient。

重构后的代码示例

假设你的机器人继承自ActivityHandler,在消息处理方法中直接使用TurnContext发送响应:

from botbuilder.core import ActivityHandler, TurnContext
from botbuilder.schema import ActivityTypes

class MyBot(ActivityHandler):
    async def on_message_activity(self, turn_context: TurnContext):
        # 方式1:直接发送文本消息,框架自动处理所有上下文字段
        await turn_context.send_activity("HELLO WORLD!")

        # 方式2:自定义Activity时,无需手动设置recipient、from_property等字段
        # reply_activity = Activity(
        #     type=ActivityTypes.message,
        #     text="HELLO WORLD!"
        # )
        # await turn_context.send_activity(reply_activity)

关键重构要点

  • 弃用手动创建ConnectorClient:TurnContext已封装与Bot Framework服务的通信逻辑,自动复用接收到的消息中的service_url、conversation_id等上下文信息,避免手动配置出错。
  • 避免手动设置渠道相关字段:recipient、from_property、channel_id等字段由框架根据当前对话上下文自动填充,手动设置可能导致权限校验失败。
  • 遵循Bot Framework生命周期:基于ActivityHandler实现机器人逻辑,确保所有消息处理经过框架的认证与上下文管理流程,适配Teams、Web Chat等多渠道场景。

额外检查项

  1. 确认代码中的APP_ID和APP_PASSWORD与Bot Framework门户中注册的机器人凭证完全一致。
  2. 确保Bot Framework门户中,机器人的「设置」->「配置」里的消息端点配置正确,且Web Chat测试使用的是最新的机器人版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:02:38