Have ideas to improve npm?Join in the discussion! »

    moesif-alexa-skills

    1.1.2 • Public • Published

    Moesif AWS Alexa Skills Middleware

    NPM

    Built Software License Source Code

    Alexa Skills Middleware (NodeJS) to automatically log API calls from your AWS Lambda functions and sends to Moesif 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.

    Source Code on GitHub

    Package on NPMJS

    How to install

    npm install --save moesif-alexa-skills

    How to use

    The following shows how import Moesif and use:

    1. Import the module:

    // 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. 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, 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

    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

    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.

    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

    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 "/".

    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.

    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.

    '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.

    Install

    npm i moesif-alexa-skills

    DownloadsWeekly Downloads

    1

    Version

    1.1.2

    License

    Apache-2.0

    Unpacked Size

    89.9 kB

    Total Files

    13

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar