php
  • alexa
  • alexa-skills-kit
  • alexa-skill
  • alexa-voice-service
  • 2017-08-10 54 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。

    相關問題