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

如何让Alexa等待3-4秒用户输入后继续?事件类Alexa应用会话问题

解决你的Alexa活动展示技能问题

Hey there! Let's work through your Alexa skill issues one by one.

1. 修复会话保持问题(用户无输入时直接关闭会话)

你的当前代码里虽然设置了shouldEndSession: false,但缺少了reprompt配置——这是Alexa维持会话活跃的必要条件。当shouldEndSession设为false时,Alexa需要明确知道如果用户没回应该提示什么,否则会默认直接结束会话。

修改后的代码示例

foreach($events as $key=>$event){ 
    $eventname = "abcd"; 
    $artistId = '1'; 
    $artistName= "xyz"; 
    // 调整语音内容,加入询问用户是否播放的提示
    $speech = "活动:{$eventname},关联艺人是{$artistName}。如果你想播放他的音乐,请说play。";
    $repromptSpeech = "请说play来播放音乐,或者我将继续展示下一个活动。";
    
    $response = '{ 
        "version" : "1.0", 
        "sessionAttributes": { 
            "artistId": "'.$artistId.'", 
            "artistName": "'.$artistName.'",
            "currentEventIndex": "'.$key.'" // 保存当前活动索引,用于后续自动继续流程
        }, 
        "response" : { 
            "outputSpeech" : { 
                "type" : "PlainText", 
                "text" : "'.$speech.'" 
            }, 
            "reprompt": { // 添加reprompt配置,让Alexa知道用户无响应时该说什么
                "outputSpeech": {
                    "type": "PlainText",
                    "text": "'.$repromptSpeech.'"
                }
            },
            "shouldEndSession" : false 
        } 
    }'; 
    echo $response; 
}

这样设置后,当用户无输入时,Alexa会播放你配置的reprompt内容,而不是直接关闭会话。

2. 配置Alexa等待3-4秒后继续流程

要实现等待用户输入3-4秒后自动推进流程,需要两个关键步骤:

步骤1:调整语音输入超时时间

你可以在亚马逊开发者控制台修改Alexa等待用户输入的时长:

  • 进入你的技能页面,切换到Build标签
  • 点击左侧菜单的Interaction Model -> Settings
  • 找到Speech Input Timeout选项,将其调整为3-4秒(支持范围1-10秒)

步骤2:处理用户超时后的自动流程

当用户在设置的超时时间内无输入时,Alexa会发送SessionEndedRequest给你的技能。由于会话此时已结束,无法直接在该请求中继续展示活动,你可以这样处理:

  • 利用sessionAttributes中保存的currentEventIndex,将用户的进度持久化到数据库(比如记录用户上次看到第几个活动)
  • 在技能的启动逻辑中,检查是否有未完成的活动序列,如果有,自动从上次中断的位置继续展示
  • 或者在reprompt提示中明确告知用户“如果不操作,我将继续展示下一个活动”,用户第二次超时后结束会话,下次启动时恢复进度

如果你的技能有后端服务支持异步逻辑,也可以使用Alexa Progressive Responses,在等待3-4秒后主动发送下一个活动的响应,不过这种方式相对复杂,适合有成熟后端架构的技能。

额外提示:处理用户的"play"指令

别忘了在技能的交互模型中添加play意图,这样当用户说出"play"时,你可以从sessionAttributes中取出artistId和artistName,调用音乐播放接口(比如Amazon Music或自定义音频源)来完成播放操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:24:01