This Alexa template enable developer to easily implement a dynamic content Skill. And event after publishing the Skill he can still modify and maintain the skill content without need to change in Alexa model or Lambda code. This skill depend on data saved in DynamoDB table. You can configure every thing inside the database. voice tone, images that will appear in Alexa cards, Alexa reply in case user need help, order of conversation, different content every session,... etc
Each time user lunch the skill, skill will pick a different story from database and Lambda code will control dialogue with user using the story parts.
To Get Started click the button below:
Or click here for instructions using the ASK CLI (command line interface). Kindly note that The ASK CLI (command line interface) cannot complete this task below and provides only partial completion. Therefore it is better to follow the instructions below, by pressing the Getting Started .
1- StoriesTable
Field | Type | Mandatory | Description | Example |
---|---|---|---|---|
pkStoryID | Number | Yes | Represent the a unique story number. When Alexa skill start it pick a random story. | 2 |
firstPartID | Number | Yes | Point to this story first story in parts table | 40 |
2- StoryPartsTable Each story part can be a question that user need to answer to move the next part, or user should select between 2 choices and based on his selection the next parts will be different
Field | Type | Mandatory | Description | Example |
---|---|---|---|---|
pkStoryID | Number | Yes | Represent the story number. | 2 |
skPartID | Number | Yes | Represent the a unique part ID. | 40 |
lastPart | Number 0 or 1 | Yes | 1 means last part in this story. Alexa will end the conversation. 0 means, user input is expected. | 0 |
partType | Number 1 or 2 | Yes | 1 means Choice part so based on user choice sequance of parts will differ. 2 means Question part. | 1 |
speechOutput | String | Yes | Alexa will say this text. You can use SSML. | |
repromptSpeech | String | Yes | Text without SSML tags | first day |
cardTitle | String | Optional | Title of the Card | Guess the Country Name |
cardContent | String | Optional | Card Content | Country of Eiffel Tower |
largeImageUrl | String | Optional | Card large Image. Ensure to follow Alexa requirements in image | https://.... |
smallImageUrl | String | Optional | Card small Image. Ensure to follow Alexa requirements in image | https://.... |
option1PartID | Number | Yes if part type = 1 | In case user select this option. This will be the ID that Alexa will move to it next | 4 |
option1Type | Number | Yes if part type = 1 | This equivalents to categories Alexa will support whatever it is default such as list of countries or custom list of values. Value will be determined based on Configuration.js file inside Lambda and Developer implementation | 4 |
option1Answer | String | Yes if part type = 1 | Alexa will match user input with this value to detect if user want this option or the 2nd option | Country Name |
option2PartID | Number | Yes if part type = 1 | In case user select this option. This will be the ID that Alexa will move to it next | 4 |
option2Type | Number | Yes if part type = 1 | This equivalents to categories Alexa will support whatever it is default such as list of countries or custom list of values. Value will be determined based on Configuration.js file inside Lambda and Developer implementation | 4 |
option2Answer | String | Yes if part type = 1 | Alexa will match user input with this value to detect if user want this option or the 1st option | Country Name |
targetAnswerNextPart | Number | Yes if part type = 2 | if user ansewer the question correctly, Alexa will move to part with this ID | 4 |
targetAnswerType | Number | Yes if part type = 2 | This equivalents to categories Alexa will support whatever it is default such as list of countries or custom list of values. Value will be determined based on Configuration.js file inside Lambda and Developer implementation | 4 |
targetAnswer | String | Yes if part type = 2 | Alexa will match user input with this value to detect if user correctly answer the question or not | France |
hintSpeechOutput | String | Yes | Alexa will say this text when user give wrong answer to help him. You can't use SSML here. | As a hint, it is Capital is Paris. You can Google it if you don’t know. What is the Country Name? |
hintRepromptSpeech | String | Yes | Alexa will say this text when user give wrong answer to help him | As a hint, it is Capital is Paris. You can Google it if you don’t know. What is the Country Name? |
hintCardTitle | String | Optional | Title of the hint Card | Guess the Country Name |
hintCardContent | String | Optional | Hint card Content | Country Capital is Paris |
hintLargeImageUrl | String | Optional | Hint card large Image. Ensure to follow Alexa requirements in image | https://.... |
hintSmallImageUrl | String | Optional | Hint card small Image. Ensure to follow Alexa requirements in image | https://.... |
1- Configuration.js : This file contains all lookup such: part type values, last type value, supported intent types. You can add or modify as you want 2- app.js : don't forget to check TODO comments.
This template is used to build "Play with Mariam" skill which is certified and live. Skill targeting children and its purpose is to teach them new things by engage them in different challenges. Every time child use the skill he will find a different random story, in each story he will be asked different questions and child have to answer those questions to move to next question. And Skill give help to child if he answer wrongly.
StoriesTable for this skill as the below
pkStoryID | firstPartID | name | target |
---|---|---|---|
1 | 1 | Grandfather buzzles | Mathematics challenges. |
2 | 20 | Countries and Flags | Information about different countries. |
3 | 40 | In the Zoo | Information about animals. |
As the above table, this skill has 3 stories. Every time user use this skill one of those stories will be selected randomly. There is 2 mandatory fields: pkStoryID & firstPartID. Other fields are not used by engine of skill. As you can see story with ID = 2, will check table StoryPartsTable to find part which has ID = 40.
pkStoryID | 2 | |
skPartID | 20 | |
lastPart | 0 | This part is not the last part in story #2 |
partType | 1 | Alexa will give user 2 options, and he should choose one of them |
speechOutput | This what Alexa will say. You can use Alexa SSML language. User can choose either country or flag | |
repromptSpeech | Today is first day in school after summer vacation. Mariam is very excited to return back to her friends, teachers and lectures. In her first class, miss Sarah said, Good morning my little heroes, today we will play a small nice game. Game name is Around the world. I’ll choose random students; each student will tell us about a country that he had visited during last summer vacation without telling us the name of the country. Rest of us should guess the country name. Winner will be the one who will correctly answer more questions. Tell me first, do you want to guess the Country name or Country flag color?. | |
cardTitle | Name or Flag | The title of the card in mobile app |
cardContent | Country Name or Flag Color ? | The content of the card in mobile app |
largeImageUrl | https://..... | URL for the large image that will be displayed in the Card. Check Alexa requirements in picture sizes and format |
smallImageUrl | https://..... | URL for the large image that will be displayed in the Card. Check Alexa requirements in picture sizes and format |
option1PartID | 22 | if user select this option, next part will be the part has ID = 22 |
option1Type | 4 | '4' means that we expect user answer to be a string. check Configuration.js to customize values based on your need |
option1Answer | Country Name | if user want to select first option he need to say 'Country Name' |
option2PartID | 42 | if user select this option, next part will be the part has ID = 42 |
option2Type | 4 | '4' means that we expect user answer to be a string. check Configuration.js to customize values based on your need |
option2Answer | Flag Color | if user want to select 2nd option he need to say 'Flag Color' |
targetAnswerNextPart | 0 | Not used in this part type |
targetAnswerType | 0 | Not used in this part type |
targetAnswer | 0 | Not used in this part type |
hintSpeechOutput | Choose Game you like, Say either Country Name or Say Flag Color | |
hintRepromptSpeech | Choose Game you like, Say either Country Name or Say Flag Color | |
hintCardTitle | Name or Flag | |
hintCardContent | Say Country Name or Say Flag Color | |
hintLargeImageUrl | optional | |
hintSmallImageUrl | optional |
First part in this story will ask user choose either the country name or flag color, and based on user choice dialogue will move forward.