MS Teams Bot Framework/Botkit是否支持禁用正在输入指示功能?
关于MS Teams Bot Framework与Botkit禁用正在输入指示的解答
MS Teams Bot Framework 与 Botkit 均支持对正在输入指示(typing indicator)的控制,不存在无法关闭的问题。
正在输入指示默认不会自动触发,所有的显示状态均由开发者主动发送类型为typing的活动触发,你提供的触发代码是正确的:
var data = { 'type':'typing', conversation: { id: <channel> } };
在Teams客户端中,单条typing活动的显示时长默认仅为7-10秒,收到任意来自机器人的实际消息(文本、卡片、附件均可)后也会自动清除该状态,你遇到的返回响应后长时间不隐藏的问题,通常是逻辑误发typing、会话ID传错或者低版本客户端bug导致。
全局禁用正在输入指示
因为正在输入指示完全由主动触发,最彻底的禁用方案就是直接删除所有发送typing类型活动的代码即可:
- 如果你使用Bot Framework SDK的自动typing中间件,直接移除对应的中间件注册即可:C#版本删除
UseShowTypingMiddleware的配置,JS/TS版本移除showTypingMiddleware的注册,框架后续就不会自动发送typing活动。 - 如果你使用Botkit,只要不主动调用
bot.startTyping()方法,就不会触发正在输入指示。
已触发后主动关闭
没有专门的「关闭typing」的活动类型,可通过两种方式实现:
- 最稳妥的方案:发送任意实际响应消息,Teams客户端收到后会自动清除正在输入状态。
- Botkit用户可直接调用封装好的
bot.stopTyping()方法,即可主动终止正在输入状态。
异常问题排查建议
- 检查响应发送完成后的逻辑,是否存在误触发typing活动的代码
- 校验typing活动的
conversation.id参数是否和当前会话匹配,传错ID会导致状态无法正常清除 - 升级Teams客户端到最新版本,部分老旧版本存在typing状态不自动消失的已知bug
内容的提问来源于stack exchange,提问作者Muhammad Aiman Azizan
相关产品推荐
相关产品推荐

