2017-08-16 12 views
0

私はピンコードを要求する必要があるインテントが1つだけです。ピンコードが正しくない場合は、最大3回、再度尋ねます。Amazon Alexa - 同じスロットに2度以上お問い合わせください

これを実装する正しい方法は何ですか? (私はnodejsとアレクサ-SDKを使用)

私は2つのアプローチを実装しようとしたが、彼らはEXCEEDED_MAX_REPROMPTSで失敗しました:

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

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") 

この同じ問題を解決する任意の例を?

答えて

1

カウンタを設定し、間違ったエントリごとに増分を保持します。 到達maxが再試行すると、あなたがshouldEndSessionここ

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

例えば

(あなたのSDKのいくつかの変更を加える必要がある)のカスタムメソッドを呼び出すことができます。真はプログラム的にアレクサを停止する役割を果たしています。

+0

ありがとうございます!私の解決策はDialogを使用しないようにしました。何かのように: 'if(!slot or pinIsIncorrect()){this.emit( ':ask'、 'pin again?'); } '。 SDKを変更する必要はありません。 – SergioArcos

関連する問題