Bot Framework v4 Python:输入'test'触发建议操作按钮失效问题排查
问题排查与修复方案
核心问题:Python缩进错误
你的代码存在两处关键缩进问题,这是导致功能失效的主要原因:
elif分支代码块缩进错误
原代码中print('test...')和return await self._send_suggested_actions(turn_context)没有缩进在elif的代码块内,导致即使匹配到"TEST"关键词,这两行代码也不会被执行。_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
相关产品推荐
相关产品推荐

