Получение элемента из таблицы DynamoDB в функцию-намерение лямбда-узла node.js - PullRequest
0 голосов
/ 27 мая 2018

Я создал таблицу на DynamoDB с именем users с 2 элементами, userID и userName.Ниже приведен код моей простой лямбда-функции.Я создал намерение под названием userNameIntent, где я хочу иметь возможность прочитать элемент userName из моей таблицы.Поэтому я хочу, чтобы Алекса ответила «Ваше имя пользователя», а затем userName из таблицы.Извините за вопрос новичка, довольно плохо знакомый с кодированием, и я не могу найти простое решение.Буду признателен за вашу помощь.Спасибо.

const Alexa = require('alexa-sdk'); 
var AWS = require('aws-sdk');
var DOC = require('dynamodb-doc');
var dynamodb = new AWS.DynamoDB.DocumentClient({region: 'eu-west-1'});

var params = {
    TableName: 'users',
    Key: { 
        "userID": "00001"
    }
};

const handlers = {
    'LaunchRequest': function () {
        this.response.speak('Welcome');
        this.emit(':responseReady');
    },

'userNameIntent': function () {
    this.response.speak('Your username is ');
    this.emit(':responseReady');
    }
};

exports.handler = function (event, context, callback) {
    const alexa = Alexa.handler(event, context, callback);
    alexa.APP_ID = APP_ID;
    alexa.registerHandlers(handlers);
    alexa.execute();

    dynamodb.get(params, function(err, data) {
        if (err){
            callback ("error", null);
        } else {
            callback(null, data);
        }
    });
};

1 Ответ

0 голосов
/ 28 мая 2018

Вы близки, но есть несколько вещей:

1) обработчик намерений должен обработать ответ, передав детали намерения (т. Е. Значения слотов) в запрос DynamoDB, который будет извлекать информацию о пользователе

2) обработчик намерений не может вернуть ответ, пока запрос DynamoDB не будет завершен (т. Е. Вы должны только установить ответ от обратного вызова DynamoDB)

Посмотрите на мой ответ наочень похожий вопрос.

...