alexa-verifier-middleware

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

Usage no npm install needed!

<script type="module">
  import alexaVerifierMiddleware from 'https://cdn.skypack.dev/alexa-verifier-middleware';
</script>

README

alexa-verifier-middleware

NPM

NPM Version Build Status dependencies Status

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

This module should work on node v4 and up, though we don't test on those platforms anymore. We guarantee support node v8 and up.

Usage

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

var express  = require('express');
var verifier = require('alexa-verifier-middleware');

var app = express();

// create a router and attach to express before doing anything else
var 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:

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

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

After:

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

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

Mentions