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

使用Alexa-SDK遇Dialog.ElicitSlot指令不支持错误的技术求助

解决Alexa技能LaunchRequest中使用Dialog.ElicitSlot报错的问题

错误原因

Dialog.ElicitSlot指令仅能在已触发Intent的对话流程上下文中使用,用于引导用户补充当前Intent缺失的槽位。而LaunchRequest是技能启动的初始请求,不属于任何Intent的对话流程,因此直接调用该指令会触发INVALID_RESPONSE错误。

解决方案

在LaunchRequestHandler中直接引导用户提供邮箱,让Alexa自动监听对应的CaptureEmailIntent,而非强制通过指令跳转。

修改后的LaunchRequestHandler代码

class LaunchRequestHandler(AbstractRequestHandler):
    """Handler que lida com o lançamento da skill caso o usuário nunca tenha logado."""

    def can_handle(self, handler_input: HandlerInput) -> bool:
        return ask_utils.is_request_type("LaunchRequest")(handler_input)

    def handle(self, handler_input: HandlerInput) -> Response:
        speak_output = (
            "Olá! Bem vindo ao Conecta Car. Antes de começar, precisarei que me diga o email vinculado à sua conta."
            + " Caso não possua uma conta, por favor, crie uma no aplicativo Conecta Car e tente novamente."
        )
        reprompt_text = "Por favor, me diga o email vinculado à sua conta."

        # 移除ElicitSlotDirective,直接返回提示语并等待用户输入
        return (
            handler_input.response_builder
            .speak(speak_output)
            .ask(reprompt_text)
            .response
        )

配套的CaptureEmailIntentHandler实现

确保该Intent已在开发者控制台配置email槽位(建议使用内置AMAZON.Email类型),并编写对应的处理逻辑:

class CaptureEmailIntentHandler(AbstractRequestHandler):
    def can_handle(self, handler_input: HandlerInput) -> bool:
        return ask_utils.is_intent_name("CaptureEmailIntent")(handler_input)

    def handle(self, handler_input: HandlerInput) -> Response:
        slots = handler_input.request_envelope.request.intent.slots
        email = slots["email"].value
        
        # 此处添加邮箱验证、登录外部数据库的逻辑
        speak_output = f"Obrigado! Recebi seu email: {email}. Agora vamos conectar sua conta."
        
        return handler_input.response_builder.speak(speak_output).response

额外优化建议

  • 在Alexa开发者控制台中,为CaptureEmailIntent开启Dialog Management,将email槽位设置为必填项。这样当用户触发该Intent时,Alexa会自动引导用户输入邮箱,无需手动处理槽位收集逻辑。
  • 使用内置AMAZON.Email槽位类型,能提升Alexa对邮箱格式的识别准确率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 12:12:38