An express middleware that verifies HTTP requests sent to an Alexa skill are sent from Amazon.
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)
- 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());
- mreinstein for his alexa-verifier module, which allows you to verify any Amazon requests from any web service
Copyright (c) 2016-2017 Tejas Shah
MIT License, see LICENSE for details.