1

J'essaie de développer un backend PHP pour ma compétence Alexa. Rien de grand, juste pour apprendre. Ce que je veux faire: Je veux jouer de la musique dès que la compétence commence. J'ai résolu que la manière suivante:AudioPlayer.stop - Alexa backlend avec 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 
     } 
    }'; 
} 

Cela fonctionne très bien. En dehors de cela, je veux que la Compétence arrête de jouer de la musique si je dis: "Alexa, arrêtez". Cela ne semble pas fonctionner. J'ai essayé ce qui suit:

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 
     } }'; 
} 

Je reçois toujours une "mauvaise réponse": La compétence a retourné une réponse invalide.

Mon SessionEndedRequest se présente comme suit:

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

Est-ce que quelqu'un sait comment arrêter la AudioPlayer la bonne voie?

Répondre

1

Vous ne devriez pas avoir à remplacer l'intention car votre compétence n'est pas active au moment de la demande. Lorsque l'audio est en streaming et que l'utilisateur demande un arrêt, vous recevez un événement de notification AudioPlayer.PlaybackStopped et Alexa arrête de demander votre flux audio. La manipulation est facultative.

Depuis le help page. Envoyé lorsque Alexa arrête de lire un flux audio en réponse à une demande vocale ou à une directive AudioPlayer.

Vous pouvez avoir votre propre compétence pour arrêter l'audio avec la fonction AudioPlayer.Stop, mais le processus d'appel serait: Alexa, my_skillname, stop.