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

如何用Python ASK SDK在Amazon.FallbackIntent触发时保存用户响应

在Python ASK SDK中捕获FallbackIntent的用户响应并保存到会话属性

核心实现思路

要捕获FallbackIntent触发时的用户原始响应,正确方式是直接从请求对象的input_transcript字段获取,而非从槽值中查找。你之前尝试用input_transcript失败,大概率是访问路径错误,或是没正确从RequestEnvelope中提取该字段。

具体实现步骤及代码示例

  1. 确保Skill已启用FallbackIntent
    在Alexa开发者控制台的交互模型中,添加并启用AMAZON.FallbackIntent,确保它能被正确触发。

  2. 编写FallbackIntent处理类
    继承ASK SDK的AbstractRequestHandler,在handle方法中完成用户输入捕获和会话属性存储:

    from ask_sdk_core.dispatch_components import AbstractRequestHandler
    from ask_sdk_core.utils import is_intent_name
    from ask_sdk_core.handler_input import HandlerInput
    from ask_sdk_model import Response
    
    class FallbackIntentHandler(AbstractRequestHandler):
        def can_handle(self, handler_input: HandlerInput) -> bool:
            return is_intent_name("AMAZON.FallbackIntent")(handler_input)
    
        def handle(self, handler_input: HandlerInput) -> Response:
            # 获取用户的原始输入
            user_input = handler_input.request_envelope.request.input_transcript
            
            # 获取会话属性
            session_attr = handler_input.attributes_manager.session_attributes
            
            # 将用户输入保存到会话属性中
            session_attr["last_fallback_input"] = user_input
            
            # 给用户的回复示例
            speech_text = "抱歉,我没听清你说的内容,你可以再试一次吗?"
            return (
                handler_input.response_builder
                    .speak(speech_text)
                    .ask(speech_text)
                    .response
            )
    
  3. 将Handler添加到Skill Builder
    在Skill初始化代码中,把FallbackIntentHandler注册到Skill Builder:

    from ask_sdk_core.skill_builder import SkillBuilder
    
    sb = SkillBuilder()
    sb.add_request_handler(FallbackIntentHandler())
    
    # 其他Handler(如LaunchRequestHandler等)需在此注册
    
    lambda_handler = sb.lambda_handler()
    

读取保存的会话属性

后续在其他Intent的处理方法中,可通过以下方式读取保存的用户响应:

session_attr = handler_input.attributes_manager.session_attributes
last_fallback = session_attr.get("last_fallback_input", "")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:05:18