2017-08-16 2 views
0

Je n'ai qu'une seule intention, qui doit demander un code PIN. Si le code PIN n'est pas correct, demandez-le à nouveau, maximum 3 fois.Amazon Alexa - Demander même slot plus de deux fois

Quelle est la bonne façon de l'implémenter? (J'utilise alexa-sdk avec nodejs)

J'ai essayé de mettre en œuvre deux approches, mais ils ont échoué avec EXCEEDED_MAX_REPROMPTS:

if pin_is_correct 
    emit(:tell, "cool") 
else 
    emit(:ask, "what is your pin?", "what is your pin?") 

et

unless pin_is_correct 
    let updatedIntent = this.event.request.intent 
    delete updatedIntent.slots.MY_PIN_SLOT_NAME.value 
    this.emit(':delegate', updatedIntent) 

if this.event.request.dialogState !== 'COMPLETED' 
    this.emit(':delegate') 

emit(:tell, "cool") 

aucun exemple résoudre ce même problème?

Répondre

1

Vous réglez votre compteur et conservez-le incrémental pour chaque mauvaise entrée. Lorsque la portée max TENTATIVES vous pouvez appeler la méthode personnalisée (vous devez faire quelques changements dans votre sdk) par exemple

stopAlexa: function (speechOutput) { 
     this._context.succeed(buildSpeechletResponse({ 
      session: this._session, 
      output: speechOutput, 
      shouldEndSession: true 
     })); 
    } 

Ici shouldEndSession: true est de jouer le rôle d'arrêter l'Alexa programatically.

+0

Merci! Cependant, ma solution était d'éviter d'utiliser Dialog. Quelque chose comme: 'if (! Slot ou pinIsIncorrect()) {this.emit (': ask', 'pin again'); } '. Vous n'avez pas besoin de changer le SDK. – SergioArcos