Dialog.ElicitSlot работает в цикле, как закончить и начать диалог снова в alexa? - PullRequest
0 голосов
/ 16 мая 2018
function delegateSlotCollection(){
 console.log("current dialogState: "+this.event.request.dialogState);
   if (this.event.request.dialogState === "STARTED") {
     var updatedIntent=this.event.request.intent;
     this.emit(":delegate", updatedIntent);
   } else if (this.event.request.dialogState !== "COMPLETED") {
     console.log("in not completed");
      if(this.event.request.intent.slots.customername.value) {
            let prompt = "Please Tell Me your Item name  ";
            let reprompt = "";
            console.log("Printed");
            this.emit(':elicitSlot', 'item', prompt, reprompt); 
      }

   } else {

     return this.event.request.intent;
   }
}

После запуска этого кода он запрашивает имя клиента, после чего выявляет значение элемента, а после этого, когда я ввожу значение элемента, он зацикливается и снова и снова спрашивает значение элемента, как это сломать?

выходной JSON: -

"директивы": [ { "type": "Dialog.ElicitSlot", "slotToElicit": "элемент" }],

1 Ответ

0 голосов
/ 16 мая 2018
function delegateSlotCollection(){
 console.log("current dialogState: "+this.event.request.dialogState);
   if (this.event.request.dialogState === "STARTED") {
     var updatedIntent=this.event.request.intent;
     this.emit(":delegate", updatedIntent);
   } else if (this.event.request.dialogState !== "COMPLETED") {
     console.log("in not completed");
     if (this.event.request.intent.slots.item.value) {
         this.emit(":delegate");
     }
      else if(this.event.request.intent.slots.customername.value) {
            let prompt = "Please Tell Me your Item name HELLO  ";
            let reprompt = "";
            console.log("Printed");
            this.emit(':elicitSlot', 'item', prompt, reprompt); 
      }

   } else {

     return this.event.request.intent;
   }
}

Хорошо, нашел это решение работало

...