Высказывания для проверки лямбда-функции не работают (но сама лямбда-функция выполняется)

У меня есть лямбда-функция, которая успешно выполняется с намерением GetEvent, которое возвращает определенную строку. Я создал одно высказывание для этого намерения в целях тестирования (простое и не требует каких-либо дополнительных слотов для вызова навыка), но при использовании симулятора службы для проверки лямбда-функции с этим высказыванием для GetEvent я меня встречает лямбда-ответ, который говорит "The response is invalid". Вот как выглядит модель взаимодействия:

#Intent Schema

   {
   "intents": [
     {
       "intent": "GetVessel",
       "slots": [
         {
           "name": "boat",
           "type": "LIST_OF_VESSELS"
         },
         {
           "name": "location",
           "type": "LIST_OF_LOCATIONS"
         },
         {
           "name": "date",
           "type": "AMAZON.DATE"
         },
         {
           "name": "event",
           "type": "LIST_OF_EVENTS"
         }
       ]
     },
     {
       "intent": "GetLocation",
       "slots": [
         {
           "name": "event",
           "type": "LIST_OF_EVENTS"
         },
         {
           "name": "date",
           "type": "AMAZON.DATE"
         },
         {
           "name": "boat",
           "type": "LIST_OF_VESSELS"
         },
         {
           "name": "location",
           "type": "LIST_OF_LOCATIONS"
         }
       ]
     },
     {
       "intent": "GetEvent",
       "slots": [
         {
           "name": "event",
           "type": "LIST_OF_EVENTS"
         },
         {
           "name": "location",
           "type": "LIST_OF_LOCATIONS"
         }
       ]
     }
   ]    
}

С соответствующим синтаксисом типа пользовательского навыка и,

#First test Utterances
GetVessel what are the properties of {boat}

GetLocation where did {event} occur

GetEvent get me my query

При предоставлении Alexa высказывания get me my query лямбда-ответ должен выводить строку, как это было при выполнении. Я не уверен, почему это не так; это мой первый проект с Alexa Skills Kit, так что я новичок. Есть ли что-то, чего я не понимаю в том, как лямбда-функция, схема намерения и высказывания объединены воедино?

ОБНОВЛЕНИЕ: благодаря помощи AWSSupport я сузил проблему до области в запросе json, где новый сеанс помечен как true. Чтобы произнесение работало, для него должно быть установлено значение false (это работает при ручном вводе запроса json, а также во время выполнения лямбда-выражения). Почему это так? Alexa действительно заботится о том, является ли это новым сеансом во время вызова? Я пару дней назад также опубликовали это на форумах разработчиков Amazon, но еще не получили ответа от кого-либо.


person Lame-Ov2.0    schedule 29.06.2016    source источник
comment
Во-первых, вопрос. Вы вводили запрос ‹название навыка›, чтобы получить мой запрос к сервисному симулятору? Это не очень хорошо задокументировано, но вы не можете просто напечатать высказывание. Вам нужно вызвать его, как если бы вы использовали эхо. (За исключением бита Alexa.)   -  person Joseph Jaquinta    schedule 30.06.2016
comment
@JosephJaquinta этого не знал (совсем не интуитивно понятно! Но я обнаружил, что AWS может улучшить их документацию), но я только что попробовал Kirby get me my query и ask Kirby to get me my query, и он все равно дал тот же ответ.   -  person Lame-Ov2.0    schedule 30.06.2016
comment
Я спросил, потому что не вижу ничего явно неправильного в ваших данных. Итак... 1) попробуйте открыть Kirby и посмотреть, выдает ли он запрос на запуск. Если это так, и вы справитесь с этим без ошибок, попробуйте получить мой запрос в том же сеансе. 2) Сократите свою модель взаимодействия только до намерения GetEvent без слотов и только до одного высказывания. Посмотрите, сработает ли это, попросите Кирби передать мне мой запрос. Если это так, добавляйте вещи обратно по одному шагу за раз, пока они не сломаются.   -  person Joseph Jaquinta    schedule 30.06.2016
comment
@JosephJaquinta Пробовал оба метода, и ни один из них не сработал. Мне очень хочется написать в AWSSupport по электронной почте, но я не уверен, насколько они будут полезны.   -  person Lame-Ov2.0    schedule 30.06.2016
comment
Если Open Kirby не создает запрос на запуск, значит проблема в вашем коде, а не в вашей модели взаимодействия. Дважды проверьте, что вы делаете для запроса на запуск и ваши журналы лямбда, и посмотрите, где ошибка.   -  person Joseph Jaquinta    schedule 30.06.2016
comment
@JosephJaquinta Я ввел операторы печати в лямбда-функцию, чтобы увидеть, откуда возникает проблема, затем сравнил тестовое событие с запросом на высказывание, скопировал строку за строкой запрос на высказывание в новое тестовое событие для выполнения лямбда, пока не нашел вещь, которая его ломает. я обновил вопрос   -  person Lame-Ov2.0    schedule 08.07.2016


Ответы (1)


Это могло или не могло измениться - в последний раз, когда я использовал симулятор службы (около двух недель назад на момент написания статьи), в нем была довольно серьезная ошибка, которая приводила к тому, что запросы сопоставлялись с вашим первым/неправильным намерением, независимо от фактический смоделированный речевой ввод. Таким образом, даже если вы ввели что-то случайное, например wafaaefgae, он просто попытается сопоставить это с первым определенным вами намерением, не предоставляя слотов для указанного намерения, что может привести к неожиданным результатам.

Ваша проблема вполне может быть связана с этим, вызывая такое же неожиданное / ошибочное поведение, потому что вы не используете какие-либо слоты в своем образце высказывания.

Прежде чем тратить больше времени на отладку, я бы порекомендовал попробовать Intent, используя фактическое эхо или альтернативно https://echosim.io/ -- взаимодействие через реальную речь работает, как и ожидалось, в отличие от "симулятора"

person nihab    schedule 13.07.2016