Набор навыков Алексы: Ошибка с диалоговым делегатом - PullRequest
0 голосов
/ 11 октября 2018

Я использую делегат-функцию alexa-sdk для получения важных значений слотов.

Я использую node.js, и мой Намерение выглядит примерно так:

'SomeIntent': function() {
   var slotValues = delegateSlotCollection.call(this);
}

DelegateSlotCollection проверяет, запущен и завершен ли диалог:

function delegateSlotCollection() {
   if(this.event.request.dialogState === "STARTED") {
      var updatedIntent=this.event.request.intent;
      // optionally pre-fill slots
      return this.emit(":delegate", updatedIntent);
   } else if (this.event.request.dialogState !== "COMPLETED") {
      return this.emit(":delegate", updatedIntent);
   } else {
      return this.event.request.intent.slots;
   }
}

Делегирование и диалог работают хорошо, если я использую именно этот код.Пользователю задают важные слоты и так далее.Но если я добавлю некоторый код в функцию-намерение, например, для доступа к значениям слота, Alexa выдаст ошибку:

'SomeIntent': function() {
   var slotValues = delegateSlotCollection.call(this);
   this.response.speak(slotValues.foo.value);
   this.emit(':responseReady');
}

Это выдаст ошибку.Я проверил длину ключей объекта в slotValues ​​через Object.keys (slotValues) .length.И у каждого слота есть ключ в slotValues.Но если я хочу проверить длину ключей foo в slotValues, например (Object.keys (slotValues.foo) .length; [Должно быть хотя бы 'name' и 'value']), я получу ошибку снова.

Кто-нибудь знает, в чем проблема?

...