AudioPlayer.stop - Alexa 支持 PHP

AudioPlayer.stop - Alexa backlend with PHP

我正在尝试为我的 Alexa 技能开发一个 PHP 后端。没什么大不了的,只是为了学习。

我想做的事情: 我想在技能启动后立即播放一些音乐。我通过以下方式解决了这个问题:

if ($RequestMessageType == "LaunchRequest") {
    $ReturnValue = '
    {
      "version": "1.0",
      "sessionAttributes": {},
      "response": {
        "outputSpeech": {
          "type": "PlainText",
          "text": null
        },
        "card": {
          "type": "Simple",
          "title": "Play Audio",
          "content": ""
        },
        "reprompt": {
          "outputSpeech": {
            "type": "PlainText",
            "text": null
          }
        },
        "directives": [
          {
            "type": "AudioPlayer.Play",
            "playBehavior": "REPLACE_ALL",
            "audioItem": {
              "stream": {
                "token": "33|fdd9052a-717f-414f-a438-1072a64d0f49|831",
                "url": "hereismyurl",
                "offsetInMilliseconds": 0
              }
            }
          }
        ],
        "shouldEndSession": true
      }
    }';
}

效果很好。

除此之外,如果我说:"Alexa, stop",我希望技能停止播放音乐。这似乎行不通。我尝试了以下方法:

if ($RequestMessageType == "AMAZON.StopIntent" ) {
    $ReturnValue = '{
        "card": {
          "type": "Simple",
          "title": "Stop Audio",
          "content": "Bla bla"
        },
        "directives": [
          {
            "type": "AudioPlayer.Stop",
          }
        ],
        "shouldEndSession": true
      } }';

} 

if ($RequestMessageType == "AMAZON.CancelIntent"){
    $ReturnValue = '{ 
        "card": {
          "type": "Simple",
          "title": "Stop Audio",
          "content": "Bla bla"
        },
        "directives": [
          {
            "type": "AudioPlayer.Stop",
          }
        ],
        "shouldEndSession": true
      } }';
}

我总是收到 "Bad Response": 技能返回无效响应。

我的 SessionEndedRequest 如下所示:

   if ($RequestMessageType == "SessionEndedRequest") {
        $ReturnValue = '{
          "type": "SessionEndedRequest",
          "requestId": "$RequestId",
          "timestamp": "' . date("c") . '",
          "reason": "USER_INITIATED "
        }';
    }

有谁知道如何以正确的方式停止 AudioPlayer?

您不需要覆盖意图,因为您的技能在请求时未激活。当音频正在流式传输并且用户请求停止时,您将收到 AudioPlayer.PlaybackStopped 通知事件并且 Alexa 将停止请求您的音频流。处理这个是可选的。

来自help page。 当 Alexa 停止播放音频流以响应语音请求或 AudioPlayer 指令时发送。

您可以使用AudioPlayer.Stop函数让自己的技能停止音频,但调用过程将是:Alexa,my_skillname,停止。