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

Bot Framework v4 Python:输入'test'触发建议操作按钮失效问题排查

问题排查与修复方案

核心问题:Python缩进错误

你的代码存在两处关键缩进问题,这是导致功能失效的主要原因:

  1. elif分支代码块缩进错误
    原代码中print('test...')和return await self._send_suggested_actions(turn_context)没有缩进在elif的代码块内,导致即使匹配到"TEST"关键词,这两行代码也不会被执行。

  2. _send_suggested_actions方法内reply变量构造缩进错误
    构造建议消息的代码块缩进混乱,可能引发语法错误,导致消息无法正确生成。

修复后的完整代码片段

import re
from botbuilder.core import ActivityHandler, TurnContext, MessageFactory
from botbuilder.schema import SuggestedActions, CardAction, ActionTypes

class MyBot(ActivityHandler):
    async def on_message_activity(self, turn_context: TurnContext):
        # 其他分支逻辑...
        elif re.search('TEST', str(turn_context.activity.text).upper()):
            print('test...')
            await self._send_suggested_actions(turn_context)
            # 若需终止当前方法后续逻辑可保留return,否则直接await即可
            # return await self._send_suggested_actions(turn_context)
        
        # 其他分支逻辑...

    async def _send_suggested_actions(self, turn_context: TurnContext):
        reply = MessageFactory.suggested_actions(
            SuggestedActions(
                actions=[
                    CardAction(title="Help", type=ActionTypes.im_back, value="help"),
                    CardAction(title="Plant", type=ActionTypes.im_back, value="menu"),
                ]
            )
        )
        await turn_context.send_activity(reply)

额外注意事项

  • 确保on_message_activity中其他if分支不会提前拦截"TEST"关键词的匹配,避免前面分支覆盖所有情况导致elif无法触发。
  • ActionTypes.im_back会将按钮的value作为用户消息发送给机器人,若需其他交互逻辑,可替换为ActionTypes.post_back等类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:07:15