in lambda/fulfillment/lib/middleware/2_preprocess.js [8:62]
async function get_userInfo(userId, idattrs, userPrefs = undefined) {
var default_userInfo = {
UserId: userId,
InteractionCount: 1
};
var usersTable = process.env.DYNAMODB_USERSTABLE;
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: '2012-08-10' });
var params = {
TableName: usersTable,
Key: {
'UserId': userId
},
};
qnabot.log("Getting user info for user: ", userId, "from DynamoDB table: ", usersTable);
var ddbResponse = {};
try {
ddbResponse = await docClient.get(params).promise();
} catch (e) {
qnabot.log("DDB Exception caught.. can't retrieve userInfo: ", e)
}
qnabot.log("DDB Response: ", ddbResponse);
var req_userInfo = _.get(ddbResponse, "Item", default_userInfo);
// append user identity attributes if known
if (_.get(idattrs, 'preferred_username')) {
_.set(req_userInfo, 'preferred_username', _.get(idattrs, 'preferred_username'));
}
if (_.get(idattrs, 'cognito:username')) {
_.set(req_userInfo, 'UserName', _.get(idattrs, 'cognito:username'));
}
if (_.get(idattrs, 'given_name')) {
_.set(req_userInfo, 'GivenName', _.get(idattrs, 'given_name'));
}
if (_.get(idattrs, 'family_name')) {
_.set(req_userInfo, 'FamilyName', _.get(idattrs, 'family_name'));
}
if (_.get(idattrs, 'email')) {
_.set(req_userInfo, 'Email', _.get(idattrs, 'email'));
}
if (_.get(idattrs, 'verifiedIdentity')) {
_.set(req_userInfo, 'isVerifiedIdentity', _.get(idattrs, 'verifiedIdentity'));
}
if (_.get(idattrs, 'profile')) {
_.set(req_userInfo, 'Profile', _.get(idattrs, 'profile'));
}
// add session attributes userPrefs to user profile
if (userPrefs) {
_.set(req_userInfo, "userPrefs", userPrefs)
}
// append time since last seen
var now = new Date();
var lastSeen = Date.parse(req_userInfo.LastSeen || "1970/1/1 12:00:00");
var timeSinceLastInteraction = Math.abs(now - lastSeen) / 1000; // seconds
_.set(req_userInfo, 'TimeSinceLastInteraction', timeSinceLastInteraction);
return req_userInfo;
}