Alexa Skills может подключаться к двум различным типам бэкэнда. Это может быть лямбда-функция AWS или любые доступные HTTPS веб-службы Вы пытаетесь смешать оба варианта, поэтому ваш пример кода не работает.
Когда навык размещается как конечная точка HTTPS, он должен предоставить дополнительный код , который не требуется при использовании интеграции AWS Lambda с навыками Alexa. Например, сервис Alexa отправит подписанные запросы через HTTP POST, на которые должен ответить ваш навык. С другой стороны, при размещении в качестве лямбда-функции AWS подпись не требуется, поскольку триггерный механизм AWS Lambda гарантирует, что только сервис Alexa может вызывать код вашего навыка.
В загруженном примере код представлен как лямбда-функция AWS и создается лямбда-триггер, позволяющий сервису Alexa вызывать вашу функцию. Это линия здесь:
Events:
AlexaSkillEvent:
Type: AlexaSkill
Но когда вы выставляете свой код, работающий локально через ngrok
, вы переключаетесь на другую модель: пользовательские конечные точки HTTPS. Таким образом, сервис Alexa ожидает, что ваш код отвечает на POST
запросы, которые он отправляет, на что пример не обращается.
Я бы предложил не использовать ngrok
для проверки вашего навыка Alexa, выставленного как лямбда-функция AWS. Используйте ngrok
, только если вы планируете тестировать код, который будет развернут как настраиваемая конечная точка HTTPS Alexa Skill.
Для локального тестирования кода вы можете использовать каркасные модули тестирования, такие как mocha для NodeJS. Идея состоит в том, чтобы записывать запросы, отправленные Alexa, в консоли разработчика Alexa или в ваших журналах Lambda и воспроизводить их локально на вашем ноутбуке.
Вот пример, который я написал, чтобы проверить свои навыки, используя эту технику: https://github.com/sebsto/maxi80-alexa/tree/master/lambda/test
Вы также можете использовать сторонние платформы тестирования, такие как bespoken . Вот еще один пример, который я написал, чтобы показать, как использовать bespoken для локального модульного теста: https://github.com/alexa/skill-sample-nodejs-audio-player/tree/mainline/single-stream/test/unit