php
  • alexa
  • alexa-skills-kit
  • alexa-skill
  • alexa-voice-service
  • 2017-08-10 39 views 1 likes 
    1

    我想为我的Alexa技能开发一个PHP后端。没什么大不过,只是为了学习。AudioPlayer.stop - Alexa的backlend与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 
         } }'; 
    } 
    

    我总是得到一个“不良反应”:技能返回的响应无效。

    我SessionEndedRequest如下所示:

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

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

    回答

    1

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

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

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

    相关问题