3 votes

Puis-je déterminer si une requête Alexa a été déclenchée par une routine ou par un utilisateur ?

J'ai besoin de faire la différence entre une demande explicite et une demande provenant d'une routine.

Voici un exemple. Disons que je contrôle une lampe intelligente. La lumière est capable de détecter l'occupation.

Si un utilisateur entre dans la pièce et demande d'allumer la lumière, le système vérifie l'occupation et s'éteint. Cependant, si l'utilisateur crée une routine programmée pour allumer la lumière, nous devons désactiver la vérification de l'occupation.

Je ne vois rien dans le documentation pour la directive TurnOn qui indiquerait la source de la demande.

Y a-t-il un indicateur que j'ai manqué ? Puis-je ajouter un indicateur ? Ou quelqu'un a-t-il utilisé une approche différente pour réaliser une fonctionnalité similaire ?

3voto

randyth Points 87

La réponse officielle d'Amazon est que vous ne pouvez pas faire la différence. Voici une réponse récente du forum des développeurs Alexa d'Amazon : https://forums.developer.amazon.com/questions/218340/skills-invoking-routines.html

Cela dit, vous verrez généralement des champs supplémentaires dans la demande de lancement si celle-ci est lancée à partir d'une Routine :

"request": {
    "type": "LaunchRequest",
    "requestId": "amzn1.echo-api.request.abunchofnumbers",
    "timestamp": "2020-01-18T22:27:01Z",
    "locale": "en-US",
    "target": {
        "path": "AMAZON.Launch",
        "address": "amzn1.ask.skill.abunchofnumbers"
    },
    "metadata": {
        "referrer": "amzn1.alexa-speechlet-client.SequencedSimpleIntentHandler"
    },
    "body": {},
    "payload": {},
    "targetURI": "alexa://amzn1.ask.skill.abunchofnumbers/AMAZON.Launch",
    "launchRequestType": "FOLLOW_LINK_WITH_RESULT",
    "shouldLinkResultBeReturned": true
}

Les champs target, metadata, body, payload, targetURI et launchRequestType ne sont généralement pas présents lorsqu'un utilisateur lance une compétence avec sa voix. CEPENDANT, je ne pense pas que l'existence de ces champs soit unique au lancement par une routine Alexa. Je pense que vous les trouverez si la compétence a été lancée lorsque, par exemple, Alexa demande : "Hé, puisque vous aimez la compétence Singe aveugle, voudriez-vous essayer Cochon aveugle ?" et que vous dites "oui".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X