alexa-verifier-middleware_custom_2
Version:
An expressjs middleware that verifies HTTP requests sent to an Alexa skill are sent from Amazon.
69 lines (46 loc) • 2.28 kB
Markdown
# alexa-verifier-middleware
[](https://www.npmjs.com/package/alexa-verifier-middleware/)


An [express](https://www.npmjs.com/package/express) middleware that verifies HTTP requests sent to an Alexa skill are sent from Amazon.
Version 2.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](https://www.npmjs.com/package/alexa-verifier-middleware/v/1.0.3)
### Usage
It is recommended that you attach all Alexa routes to an express Router.
```javascript
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:
```javascript
const alexaRouter = express.Router();
app.use('/alexa', alexaRouter);
// INCORRECT
alexaRouter.use(bodyParser.json());
alexaRouter.use(verifier);
```
After:
```javascript
const alexaRouter = express.Router();
app.use('/alexa', alexaRouter);
// CORRECT
alexaRouter.use(verifier);
alexaRouter.use(bodyParser.json());
```
### Mentions
* [mreinstein](https://github.com/mreinstein) for his [alexa-verifier](https://github.com/mreinstein/alexa-verifier) module, which allows you to verify any Amazon requests from any web service