AudioPlayer.stop-Alexa backlend与PHP

AudioPlayer.stop-Alexa backlend与PHP,php,alexa,alexa-skills-kit,alexa-skill,alexa-voice-service,Php,Alexa,Alexa Skills Kit,Alexa Skill,Alexa Voice Service,我正试图为我的Alexa技能开发一个PHP后端。没什么大不了的,只是为了学习 我想做的是: 我想在技能一开始就演奏一些音乐。我用以下方法解决了这个问题: if ($RequestMessageType == "LaunchRequest") { $ReturnValue = ' { "version": "1.0", "sessionAttributes": {}, "response": { "outputSpeech": {

我正试图为我的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,停下来”,我想要停止播放音乐的技能。这似乎不起作用。我尝试了以下方法:

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
      } }';
}
   if ($RequestMessageType == "SessionEndedRequest") {
        $ReturnValue = '{
          "type": "SessionEndedRequest",
          "requestId": "$RequestId",
          "timestamp": "' . date("c") . '",
          "reason": "USER_INITIATED "
        }';
    }
我总是得到一个“糟糕的反应”:技能返回一个无效的反应

我的SessionEndRequest如下所示:

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
      } }';
}
   if ($RequestMessageType == "SessionEndedRequest") {
        $ReturnValue = '{
          "type": "SessionEndedRequest",
          "requestId": "$RequestId",
          "timestamp": "' . date("c") . '",
          "reason": "USER_INITIATED "
        }';
    }

有人知道如何以正确的方式停止音频播放器吗?

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

从。 当Alexa响应语音请求或AudioPlayer指令停止播放音频流时发送


您可以使用AudioPlayer.stop函数来停止音频,但调用过程是:Alexa,my_skillname,stop。

Hi,您使用哪个php库发送Alexa请求并从API接收。