Позвольте мне рассказать о моей проблеме.
У меня есть пользовательский тип слота YesNo . Он обрабатывает да нет и это синонимы. Я использую NodeJ для своих обработчиков.
У меня есть OfferIntent, где я использую этот слот. Я сделал этот слот обязательным, и я обрабатываю подсказки в своем коде. Code всегда задает вопрос «да» или «нет», например: «Бла-бла-бла и Вы заинтересованы в подаче заявки на это предложение?».
Я настроил пользовательские высказывания для этого слота, например,
{confirmation} please
{confirmation} I am
{confirmation}
Проблема в том, что когда я добавляю ElicitSlotDirective для этого слота из другого намерения, и если я отвечаю просто «да», это не продвигается вперед. Журнал устройства показывает «да» в качестве значения, полученного Алекса, но все равно он повторяет запрос. Когда я отвечаю «Да, я есть» или «Да, пожалуйста», это работает как ожидалось.
return handlerInput.responseBuilder
.addElicitSlotDirective("confirmation", {
name: "OfferIntent",
confirmationStatus: "NONE",
slots: {}
})
.speak(speechText + speechText1)
.reprompt(speechText1)
.getResponse();
Если я получаю доступ к этому намерению напрямую вместо перенаправления с использованием addElicitSlotDirective, «да» работает нормально.
Я сравнил журналы устройств для обоих случаев и не обнаружил никакой разницы, кроме времени и requestID.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Я думаю, что это проблема с Алекса. Пожалуйста, поделитесь своими мыслями.