This is an AWS Lambda project for Voice Control of Raspberry Pi using AWS Alexa voice service & IoT MQTT.
Base on Alexa Voice Service (AVS) on Rasberry PI for Alexa part. Thanks to alexa-app a node module and alexa-app-server to simplify development of Alexa Skills.
Global architecture:
First install alexa-app-server.
Then go in alexa-app-server\examples\apps
and clone this repository:
cd alexa-app-server\examples\apps
git clone https://github.com/ndywicki/alexa-home-lights.git
npm install
Run Nodejs server:
cd alexa-app-server\examples
node start
You can test the Intents on http://localhost:8080/alexa/light
-
Go to the AWS Console and click on the Lambda link. Note: ensure you are in us-east or you won’t be able to use Alexa with Lambda.
-
Click on the Create a Lambda Function or Get Started Now button.
-
Skip the blueprint
-
Name the Lambda Function "Hello-World-Example-Skill".
-
Select the runtime as Node.js
-
Go to the the src directory, select
index.js
,package.json
, the directorynode_modules
and then create a zip file. -
Select Code entry type as "Upload a .ZIP file" and then upload the .zip file to the Lambda
-
Keep the Handler as index.handler (this refers to the main js file in the zip).
-
Create a basic execution role and click create.
-
Leave the Advanced settings as the defaults.
-
Click "Next" and review the settings then click "Create Function"
-
Click the "Event Sources" tab and select "Add event source"
-
Set the Event Source type as Alexa Skills kit and Enable it now. Click Submit.
-
Copy the ARN from the top right to be used later in the Alexa Skill Setup
-
Go to the [Alexa Console](https://developer.amazon.com/edw/home.html) and click Add a New Skill.
-
Set "HelloWorld" as the skill name and "hello world" as the invocation name, this is what is used to activate your skill. For example you would say: "Alexa, tell Hello World to say hello"
-
Select the Lambda ARN for the skill Endpoint and paste the ARN copied from above. Click Next.
-
Copy the Intent Schema from the included IntentSchema.json.
-
Copy the Sample Utterances from the included SampleUtterances.txt. Click Next.
-
[optional] go back to the skill Information tab and copy the appId. Paste the appId into the index.js file for the variable APP_ID, then update the lambda source zip file with this change and upload to lambda again, this step makes sure the lambda function only serves request from authorized source.
-
You are now able to start testing your sample skill! You should be able to go to the [Echo webpage](http://echo.amazon.com/#skills) and see your skill enabled.
-
In order to test it, try to say some of the Sample Utterances from the Examples section below.
-
Your skill is now saved and once you are finished testing you can continue to publish your skill.
User: "Alexa, turn light on" Alexa: "The light has been turn on"