Как правильно вернуть объект JSON в Alexa Smart Home или завершить AWS Lambda в NodeJS? - PullRequest
1 голос
/ 19 июня 2020

Я видел три способа вернуть объект JSON или завершить лямбда-функцию. Мой триггер - Smart Home Alexa.

  1. Я использую сейчас context.succeed(response_JSON); Этот мне подходит. Даже если эта инструкция находится внутри вложенной функции. Вся лямбда заканчивается и возвращает response_ JSON в Smart Home Alexa.

  2. Я видел в других блогах, где написано callback(response_error,response_JSON). Этот у меня не сработал. Он ничего не вернул в Умный дом.

  3. Остальные просто используют return response_JSON. Я этим не пользовался.

1 Ответ

0 голосов
/ 20 июня 2020

Я сейчас использую context.succeed (response_ JSON); Этот мне подходит. Даже если эта инструкция находится внутри вложенной функции. Вся лямбда завершается и возвращает response_ JSON в Smart Home Alexa.

context.succeed()/fail() вызывает немедленное завершение функции лямбда. Однако я не видел, чтобы это было задокументировано в документации по объектам context , поэтому в более поздних версиях Node он может стать устаревшим (?).

Я видел в других блогах, которые говорят обратный вызов (response_error, response_ JSON). Этот у меня не сработал. Он ничего не вернул в Умный дом.

Этот, вероятно, не сработает для вас, потому что по умолчанию Node.js ожидает, пока событие l oop не станет пустым, перед выполнением callback заявление. Это может быть связано с открытым подключением к сети / базе данных. Согласно do c, установите для переменной context.callbackWaitsForEmptyEventLoop значение false, чтобы сразу отправить ответ.

Другие просто используют return response_ JSON. Я не использовал его.

Его следует использовать с обработчиками asyn c. Подробнее об асинхронных c и неасинхронных c обработчиках здесь: https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...