https://github.com/moesif/moesif-alexa-skills-nodejs
https://github.com/moesif/moesif-alexa-skills-nodejs
alexa alexa-custom-skill alexa-skills-kit aws aws-lambda lambda logger logging serverless
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/moesif/moesif-alexa-skills-nodejs
- Owner: Moesif
- License: other
- Created: 2017-08-25T03:21:40.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2022-12-07T21:32:49.000Z (almost 3 years ago)
- Last Synced: 2025-02-06T11:33:50.671Z (8 months ago)
- Topics: alexa, alexa-custom-skill, alexa-skills-kit, aws, aws-lambda, lambda, logger, logging, serverless
- Language: JavaScript
- Size: 37.1 KB
- Stars: 1
- Watchers: 7
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Moesif AWS Alexa Skills Middleware
[](https://nodei.co/npm/moesif-alexa-skills/)
[![Built][ico-built-for]][link-built-for]
[![Software License][ico-license]][link-license]
[![Source Code][ico-source]][link-source]Alexa Skills Middleware (NodeJS) to automatically log API calls from your AWS Lambda functions
and sends to [Moesif](https://www.moesif.com) for API analytics and log analysis.Designed for AWS Lambda functions that use the Alexa Skills Kit as a trigger.
This middleware expects the
[Alexa skills format.](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interface-reference)[Source Code on GitHub](https://github.com/moesif/moesif-alexa-skills-nodejs)
[Package on NPMJS](https://www.npmjs.com/package/moesif-alexa-skills)
## How to install
```shell
npm install --save moesif-alexa-skills
```## How to use
The following shows how import Moesif and use:
### 1. Import the module:
```javascript
// Import Modules
'use strict'
const moesif = require('moesif-alexa-skills');const moesifOptions = {
applicationId: 'Your Moesif Application Id',
};exports.handler = function (event, context, callback) {
callback(null, {
statusCode: '200',
body: JSON.stringify({key: 'hello world'}),
headers: {
'Content-Type': 'application/json',
},
});
};exports.handler = moesif(moesifOptions, exports.handler);
```
### 2. Enter Moesif Application Id
Your Moesif Application Id can be found in the [_Moesif Portal_](https://www.moesif.com/).
After signing up for a Moesif account, your Moesif Application Id will be displayed during the onboarding steps.You can always find your Moesif Application Id at any time by logging
into the [_Moesif Portal_](https://www.moesif.com/), click on the top right menu,
and then clicking _Installation_.## Repo file structure
- `lib/index.js` the middleware lib
- `index.js` sample AWS Lambda function using the middleware## Configuration options
#### __`identifyUser`__
Type: `(event, context) => String`
identifyUser is a function that takes AWS lambda `event` and `context` objects as arguments
and returns a userId. This helps us attribute requests to unique users.
By default, Moesif will use `event.session.user.userId````javascript
options.identifyUser = function (event, context) {
// your code here, must return a string
return event.requestContext.identity.cognitoIdentityId
}
```#### __`getSessionToken`__
Type: `(event, context) => String`
getSessionToken a function that takes AWS lambda `event` and `context` objects as arguments and returns a
session token (i.e. such as an API key). By default, Moesif will use `event.session.sessionId````javascript
options.getSessionToken = function (event, context) {
// your code here, must return a string.
return event.headers['Authorization'];
}
```#### __`getTags`__
Type: `(event, context) => String`
getTags is a function that takes AWS lambda `event` and `context` objects as arguments and returns a comma-separated string containing a list of tags.
See Moesif documentation for full list of tags.```javascript
options.getTags = function (event, context) {
// your code here. must return a comma-separated string.
if (event.path.startsWith('/users') && event.httpMethod == 'GET'){
return 'user'
}
return 'random_tag_1, random_tag2'
}
```#### __`getApiVersion`__
Type: `(event, context) => String`
getApiVersion is a function that takes AWS lambda `event` and `context` objects as arguments and
returns a string to tag requests with a specific version of your API.
By default, Moesif will use `event.version````javascript
options.getApiVersion = function (event, context) {
// your code here. must return a string.
return '1.0.5'
}
```#### __`skip`__
Type: `(event, context) => Boolean`
skip is a function that takes AWS lambda `event` and `context` objects as arguments and returns true
if the event should be skipped (i.e. not logged)
_The default is shown below and skips requests to the root path "/"._```javascript
options.skip = function (event, context) {
// your code here. must return a boolean.
if (event.path === '/') {
// Skip probes to home page.
return true;
}
return false
}
```#### __`maskContent`__
Type: `MoesifEventModel => MoesifEventModel`
maskContent is a function that takes the final Moesif event model (rather than the AWS lambda event/context objects) as an
argument before being sent to Moesif. With maskContent, you can make modifications to headers or body such as
removing certain header or body fields.```javascript
options.maskContent = function(moesifEvent) {
// remove any field that you don't want to be sent to Moesif.
return moesifEvent;
}
```### updateUser method
A method is attached to the moesif middleware object to update the users profile or metadata.
```javascript
'use strict'
const moesif = require('moesif-alexa-skills');const moesifOptions = {
applicationId: 'Your Moesif application_id',};
var moesifMiddleware = moesif(options);
var user = {
userId: 'your user id', // required.
metadata: {
email: 'user@email.com',
name: 'George'
}
}moesifMiddleware.updateUser(user, callback);
```
The metadata field can be any custom data you want to set on the user.
The userId field is required.## Other integrations
To view more more documentation on integration options, please visit __[the Integration Options Documentation](https://www.moesif.com/docs/getting-started/integration-options/).__
[ico-built-for]: https://img.shields.io/badge/built%20for-aws%20alexa%20skills-blue.svg
[ico-license]: https://img.shields.io/badge/License-Apache%202.0-green.svg
[ico-source]: https://img.shields.io/github/last-commit/moesif/moesif-alexa-skills-nodejs.svg?style=social[link-built-for]: https://aws.amazon.com/lambda/
[link-license]: https://raw.githubusercontent.com/Moesif/moesif-alexa-skills-nodejs/master/LICENSE
[link-source]: https://github.com/moesif/moesif-alexa-skills-nodejs