4.2: Define your Alexa skill
This exercise will guide you through all the necessary steps to define and configure a new Amazon Alexa skill.
Before you can create and configure an Amazon Alexa skill, you must:
- Have an Amazon developer account and be signed in
- Have an AWS account and be signed in
See Exercise 4.1 for more details.
4.2.1: Create an Alexa skill
To create a new skill, follow these steps:
At the Amazon Developer Dashboard screen ( https://developer.amazon.com/dashboard ), select Alexa Skills Kit from the Alexa menu.
In the alexa developer console , click the Create Skill button.
In the Create a new skill screen:
- Specify AEP as the Skill name .
- Select English (UK) or English (US) as the Default Language .
- Select Custom as the model to use in the Choose a model to add to your skill section.
- Select Provision your own as the method to use in the Choose a method to host your skill's backend resources section.Your screen might look a bit different dependent on the Default language you have selected.
- Click Create skill .
In the Choose a template screen:
- Select Start from scratch as the template to use in the Choose a template section.
- Click the Choose button.
You will end up in your AEP skill main screen, which should look like this:
4.2.2: Define invocation name
For your skill to be invoked, it needs an invocation name. To define this:
- Click on Invocation in the left rail, or on the 1. Invocation name > button in the Skill builder checklist of the AEP skill main screen.
- In the Invocation panel, replace AEP with adobe experience platform as the Skill Invocation Name .
Click on Save Model .
This will update the invocation of your Alexa skill so you can say Alexa, open adobe experience platform .
4.2.3: Define Intents, Samples and Slots
The next step is to configure the interaction with our skill. Interaction with an Alexa skill happens through so called intents, of which Amazon provides 5 built-in intents (e.g. AMAZON.HelpIntent , to ask for help). Each intent defines sample utterances; phrases you use to invoke the intent. And each intent can have one or more slot values; values you provide as input to the intent.
Rather than let you define step by step the various intents, utterances and slot values we do require for our skill, we will use a JSON file to set this all up in one go. To do so:
Click on JSON Editor in the left rail.
Open the file aepskillinteractionmodel.json from your Environment Variables GitHub repository . Click on Raw .
Select everything and then, copy everything.
In the JSON Editor panel on the right, select everything and paste the code that you copied in the previous step, by overwriting the text that was there already.
This will load the interaction model.
Click Save Model to save the model.
You will now see the various specific intents for our skill on the left rail, e.g. LdapIntent , GetProductIntent , .... UseEmailAddressIntent . Some of these intents do have a slot, e.g. like productId for GetProductIntent .
4.2.3: Define the interfaces
We will now define the interface for the skill. Interfaces define how you interact with your skill: only through voice or will the skill also support display and touch? If we want our skill to use the display and touch events, we need to enable that interface. Also our skill's implementation will use the Amazon Presentation Language (BETA). To properly configure this:
Click on Intents to collapse all intents. Then click on Interfaces in the left rail.
In the Interfaces panel, enable Display Interface and Alexa Presentation Language BETA .
Click on Save Interfaces .
Exercise 4.2.4: Setup the implementation
Our skill's logic is implemented using the NodeJS Alexa SDK v2 .
We need our functionality deployed in AWS Lambda so that we can invoke it from the skill. And then we also need to tell our skill where to find that serverless functionality so that it can invoke it when so required.
Let's first set up our server-less functionality for the skill. To do so:
Ensure you are logged in to your AWS Management Console ( https://us-east-2.console.aws.amazon.com/console/home ).
Pick a datacenter you prefer from the dropdown listbox at the top right menu. E.g. US East (Ohio) or EU (Ireland) .
In Find Services type lambda and press Enter.
You will end up at the AWS Lambda home screen.
Click on Create a function .
In the Create function screen:
- Select Author from scratch .
- Give your skill function a Function name , e.g. AEP .
- Select Node.js 12.x from the Runtime dropdown list.
- Click on Choose or create an execution role below Permissions . Then select Create a new role with basic Lambda permissions from the Execution role dropdown list. Your screen should look like
- Click on Create function . It will take a while to finish that creation.
- You will end up in your AEP function definition screen, with the Configuration tab active.
- In the list of triggers listed below Add triggers , select Alexa Skills Kit . You will see that the skill is added to the definition screen, with the remark Configuration required .
If Alexa Skills Kit is not available in the Add triggers list, the data center you selected does not support it. Select another datacenter (e.g. EU (Ireland) ) that provides the Alexa Skills Kit trigger.
Move over to your Alexa developer console ( https://developer.amazon.com/alexa/console/ask ).
Click on Endpoint . Then select AWS Lambda ARN . This will show your skill id.
Click on Copy to Clipboard to copy the skill.
Move back to your AEP function definition screen in the AWS Lambda home screen.
- Paste the skill id in the Skill ID field below the Skill ID Verification . Ensure Enable is selected, which is the default and recommended setting.
- Click on Add in the Configure Triggers panel.
- Then click on Save .
Continue, in the AEP definition screen.
- Click on AEP box in the Designer panel.
- In the Function code panel, from the Code entry type dropdown list, select Upload a .zip file .
- Download aepskill.zip from your Environment Variables GitHub repository and save the file somewhere on your computer as aepskill.zip .
- Click on the Upload button. Pick the aepskill.zip you saved on your computer from the file browser dialog.
- Click Save .
Continue in the AEP definition screen
- Scroll down until you see the Environment Variables panel.
- Add the key value pairs from the table below, so your Environment variables panel will look like below.
Ensure you replace alexaBrandName , ldap and emailAddress with your specific configuration details.
- Define your alexaBrandName as the lowercase version of your brand name (e.g. Luma Retail as luma retail ),
- If your brand name contains an & replace it with and . So as an example, H&M becomes h and m .
Click Save .
As a final step, we need to copy the Amazon Resource Name that represents this functionality to our skill.
To do so,
- In the AEP function definition screen, click on the copy icon right from the ARN - arm:aws.lambda:..... text at the top right of the screen.
- A copied will indicate the value has been copied.
Move over to your alexa developer console .
- In the Endpoint config screen.
- Paste the copied ARN from the previous step in the Default Region (Required) field.
- Click on Save Endpoints .
Exercise 4.2.5: Finalizing the skill
After we have setup invocation, intents, interfaces and endpoint, our final step is to build the final version of our skill.
The final step for the skill is to build the model. To do so:
- Select Invocation from the left rail.
- Click on Build Model . This will build the skill's model. This might take a while.
Verify that on your skill's main screen all the items on the Skill builder checklist (except for the optional In-skill products ) are checked. To do so:
- Click on Build .
- Your alexa developer console should display green checkmarks for the first four items in the Skill builder checklist .
- Your skill and its implementation are now ready to be used.
You have finished this exercise.
Next Step: 4.3 Use your Alexa skill