Набор навыков Алексы: Ошибка с диалоговым делегатом

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

Я использую node.js, и мой Intent примерно такой:

'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']), я получу ошибку снова,

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

0 ответов

Другие вопросы по тегам