JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 764
  • Score
    100M100P100Q115163F
  • License MIT

An expressjs middleware that verifies HTTP requests sent to an Alexa skill are sent from Amazon.

Package Exports

  • alexa-verifier-middleware
  • alexa-verifier-middleware/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (alexa-verifier-middleware) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

alexa-verifier-middleware

NPM Version

Github CI status

An express middleware that verifies HTTP requests sent to an Alexa skill are sent from Amazon.

Version 3.x is now a pure ES module, and requires node 12.17 or higher. If you want to run this via an older version of node, use alexa-verifier-middleware@1.x

Usage

It is recommended that you attach all Alexa routes to an express Router.

import express  from 'express';
import verifier from 'alexa-verifier-middleware';


const app = express();

// create a router and attach to express before doing anything else
const alexaRouter = express.Router();
app.use('/alexa', alexaRouter);

// attach the verifier middleware first because it needs the entire
// request body, and express doesn't expose this on the request object
alexaRouter.use(verifier);

// Routes that handle alexa traffic are now attached here.
// Since this is attached to a router mounted at /alexa,
// this endpoint will be accessible at /alexa/weather_info
alexaRouter.get('/weather_info', function (req, res) { ... });

app.listen(3000);

Common errors

The raw request body has already been parsed.

  • This means that you're probably using one of the body-parser middlewares and it is loaded before this one. To fix it, you should load the body-parsers after this one.

Before:

const alexaRouter = express.Router();
app.use('/alexa', alexaRouter);

// INCORRECT
alexaRouter.use(bodyParser.json());
alexaRouter.use(verifier);

After:

const alexaRouter = express.Router();
app.use('/alexa', alexaRouter);

// CORRECT
alexaRouter.use(verifier);
alexaRouter.use(bodyParser.json());

Mentions