An express middleware that verifies HTTP requests sent to an Alexa skill are sent from Amazon.
JavaScript
Latest commit cbc360f Feb 16, 2017 @tejashah88 tejashah88 committed on GitHub Updated section format for "Common Errors"

README.md

alexa-verifier-middleware

NPM

NPM Version Build Status Coverage Status dependencies Status

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

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

License

Copyright (c) 2016-2017 Tejas Shah

MIT License, see LICENSE for details.