Starter Kit

This project is designed to be a simple template for your new skills. With some well thought defaults that have proven useful when developing real life skills.

Directory Structure

It has the following directory structure

.
├── README.md
├── config
│   ├── env.js
│   ├── index.js
│   ├── local.json.example
│   ├── production.json
│   └── staging.json
├── gulpfile.js
├── package.json
├── serverless.yml
├── services
├── skill
│   ├── MainStateMachine.js
│   ├── index.js
│   ├── variables.js
│   └── views.js
├── speechAssets
│   ├── IntentSchema.json
│   ├── SampleUtterances.txt
│   └── customSlotTypes
├── test
└── www
    ├── infrastructure
    │   └── mount.js
    ├── routes
    │   ├── index.js
    │   └── skill.js
    └── server.js

config

By default your skill will have the following environments:

  • local
  • staging
  • production

What environment you’re is determined in the config/env.js module using the following code:

'use strict';

function getEnv() {
  if (process.env.NODE_ENV) return process.env.NODE_ENV;
  if (process.env.AWS_LAMBDA_FUNCTION_NAME) {
    // TODO put your own lambda function name here
    if (process.env.AWS_LAMBDA_FUNCTION_NAME === '') return 'production';
    return 'staging';
  }

  return 'local';
}

module.exports = getEnv();

skill

This is where your code to handle alexa events goes, you will usually have a State Machine definition, this will include states, middleware and a Model, Views and Variables

speechAssets

This should be a version controlled copy of your intent schema, sample utterrances and custom slots.

www

A standard express project configured to serve your skill in the /skill route. Combined with ngrok this is a great tool when developing or debugging.

services

Just a common place to put models and libraries

test

You write tests right?

gulpfile

A gulp runner configured with a watch task that starts your express server and listens for changes to reload your application.

serverless.yml

The serverless framework is a tool that helps you manage your lambda applications, assuming you have your AWS credentials setup properly this starter kit defines the very minimum needed so you can deploy your skill to lambda with the following command:

$ sls deploy

Running the project

  1. Clone the voxa repository
  2. Create a new skill project using the samples/starterKit directory as a basis
  3. Make sure you’re running node 4.3, this is easiest with nvm
  4. Create a config/local.json file using config/local.json.example as an example
  5. Run the project with gulp watch
  6. At this point you should start ngrok http 3000 and configure your skill in the Amazon Developer panel to use the ngrok https endpoint.