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

APL动画时长受SSML影响问题咨询:如何确保完整播放?

问题解答

核心结论

这种动画随短语音终止的情况是预期行为,你发现的"timeoutType": "SHORT"正是导致该问题的核心原因。

原因说明

Alexa Skill的APL视觉界面停留时长由两个关键因素决定:

  • 输出语音的播放时长:语音越长,界面自然停留的时间越久
  • timeoutType配置:
    • SHORT:语音结束后界面会快速关闭(通常1-2秒),你的动画时长是3秒,超过这个时间就会被中断
    • LONG:语音结束后界面会停留更长时间(默认约10秒),足够覆盖多数常规动画的执行时长

当语音较长时,播放时间本身就超过了动画的3秒,所以动画能完整执行;语音较短时,SHORT超时触发界面关闭,直接终止了未完成的动画。

解决方法

1. 修改timeoutType为LONG

这是最简单直接的方案,在你的响应JSON中,把APL指令的timeoutType字段改为LONG:

{
  "response": {
    "outputSpeech": {
      "type": "SSML",
      "ssml": "<speak>你的短语音内容</speak>"
    },
    "directives": [
      {
        "type": "Alexa.Presentation.APL.RenderDocument",
        "document": { /* 你的APL文档内容 */ },
        "datasources": { /* 对应的数据源 */ },
        "timeoutType": "LONG"
      }
    ]
  }
}

2. 用APL事件精准控制界面停留(进阶)

如果需要严格保证动画完成后再关闭界面,可以在AnimateItem中添加onComplete事件,配合SendEvent通知后端延长界面生命周期:

"onMount": [
  {
    "type": "AnimateItem",
    "easing": "ease-out",
    "duration": 3000,
    "value": {
      "property": "opacity",
      "from": 0,
      "to": 1
    },
    "onComplete": [
      {
        "type": "SendEvent",
        "arguments": ["animationFinished"]
      }
    ]
  }
]

后端监听该事件后,可通过后续指令控制界面关闭时机。不过对于大多数场景,修改timeoutType已经足够解决问题。

补充说明

你当前的AnimateItem配置没有问题,duration和value的设置都是正确的,无需调整这部分内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:33:24