Hvordan jeg programmerede min første Amazon Alexa Skill og vandt en gratis Echo Dot

Det er et år siden jeg begyndte at lære at kode. Jeg blev interesseret i kodning på grund af mit ønske om at arbejde med andre i skønhed, mode og luksus livsstil. Jeg ville skabe fantastiske hjemmesider med animerede elementer og andre digitale medier.

Jeg startede med et online kursus, og en måned senere opdagede jeg freeCodeCamp. Det var da læring til kode blev mere spændende og indsigtsfuld.

Der er kommunikation i realtid med andre kodere, der er klar til at hjælpe dig med at arbejde igennem interaktive udfordringer. De giver feedback og referencer til videre læring. Dette hjalp min selvtillid med at vokse og kodningsevner forbedres.

I begyndelsen af ​​juni fortalte en ven mig om et online-webinar med titlen "Build Voice Enabled Experiences with Amazon Alexa." Idéen om webinaret øgede min nysgerrighed, fordi jeg på det tidspunkt kun havde set reklamer, men ikke havde brugt et Alexa-aktiveret produkt. Jeg tilmeldte mig og var fascineret.

I slutningen af ​​webinaret modtog deltagerne oplysninger om en forfremmelse. Hvis du inden for 30 dage oprettede en færdighed og fik den offentliggjort, var du berettiget til at vinde en gratis Echo Dot. Jeg vidste ikke, om jeg havde nok viden til at lykkes, men jeg besluttede at prøve det at lære.

Tanken om at oprette min første app var spændende. I det øjeblik begyndte min Alexa-læringserfaring.

Hvad er Alexa, og hvordan fungerer det?

Alexa er en skybaseret stemmetjeneste, der styrer millioner af stemmeoplevelser i hjemmet. Enheder Alexa beføjelser inkluderer Amazon Echo, Echo Dot, Amazon Tap og Amazon Fire TV.

A Skill er en stemmestyret applikation til Alexa.

Alexa leverer "Færdigheder", som giver brugerne mulighed for at interagere med enhederne. Færdigheder kan skabes til at gøre mange ting. De kan besvare spørgsmål, spille trivia-spil, spille musik, indstille alarmer, fortælle vittigheder og meget mere.

Alexa Skills Kit (ASK) er en samling af værktøjer, API'er, dokumentation, kodeeksempler og skabeloner med links til GitHub. ASK hjælper udviklere med at oprette færdigheder til Alexa-aktiverede enheder.

En Alexa Skill har to hovedkomponenter: en Skill Service og en Skill Interface.

Din kode er skrevet i Node.js til Skill Service, der bor i skyen (Amazon AWS, Lambda, en HTTPS-tjeneste). Den modtager instruktioner til at bestemme de handlinger, der skal udføres som svar på brugeranmodningerne fra den Alexa-aktiverede enhed.

Skill Service implementerer begivenhedshåndterere, der definerer, hvordan Skill fungerer. Begivenheden udløses, når brugeren taler til en Alexa-aktiveret enhed.

Derefter konfigurerer du Skill Interface med Skill Developer Portal. Interfacet behandler brugernes ord for at udløse de begivenheder, som Skill Service håndterer. I dette område bestemmer du, hvad du skal kalde din Skill, så brugeren kan påkalde den ved navn. Det er også her, du definerer Skill-interaktionsmodellen. Dette er, så det ved, hvordan man lytter til brugernes talte ord og reagerer med de ønskede oplysninger.

Det er interaktionen mellem de to komponenter, der får færdigheden til at fungere.

Amazon-teamet leverede links til tre Skill-skabeloner. Disse skabeloner er gode til at hjælpe dig i gang og lære, hvordan Alexa interagerer og reagerer.

  • Fakta Færdighedsskabelon

    at skabe noget som en "kendsgerning" eller "joke" af dagen.

  • Beslutningstræskabelon

    at skabe enkle eventyrspil og quizzer

  • Sådan skabelon

    at skabe færdigheder som indhold af opskrifter med lignende trin for trin-processer.

Plus mange flere mellemliggende og avancerede skabeloner til rådighed.

Jeg har nu tre offentliggjorte færdigheder, Makeup Facts, Fashion Facts og Girls Can Code. Jeg arbejder som freelance makeup artist og modestylist og besluttede at starte med det, jeg kender bedst.

For at skabe disse "faktafærdigheder" gennemgik jeg emnet og oplysninger om oprettelse af en færdighed. Derefter oprettede jeg min liste over fakta, der ville blive integreret i Fact Skill Template. Alle færdigheder blev accepteret og offentliggjort inden for et par dage.

Hvordan jeg skabte min første færdighed

Gå til Amazon Developer Portal-login, klik på Alexa øverst på skærmen.

På Alexa-siden skal du vælge "Kom godt i gang" til Alexa Skills Kit.

På den næste side..Vælg "Tilføj ny færdighed."

Udfyld derefter informationssiden .

Færdighedstype: Brugerdefineret

Sprog: engelsk

Navn: Makeup Fakta

Navn på indkaldelse: (hvad din bruger skal have sagt for at starte færdigheden) Makeup-fakta

Klik på næste for at gå til siden Interaktionsmodel . Det er her, du opretter hensigter, eller hvad brugerne vil bede Alexa om at gøre. Opret derefter udtalelser eller mulige måder, som brugeren vil spørge Alexa om den færdighed, du har oprettet. Jeg fandt dette GitHub-lager at være nyttigt. Prøverne inkluderer: Giv mig en kendsgerning, fortæl mig en kendsgerning.

Mine intentioner i den interaktive model for makeup-fakta

{ “intents”: [ { “intent”: “GetNewFactIntent” }, { “intent”: “AMAZON.HelpIntent” }, { “intent”: “AMAZON.StopIntent” }, { “intent”: “AMAZON.CancelIntent” } ] }

Mine Ytringer i Interactive Model for Makeup Fakta.

GetNewFactIntent a factGetNewFactIntent tell me a factGetNewFactIntent tell me a makeup factGetNewFactIntent give me a factGetNewFactIntent give me a makeup factGetNewFactIntent tell me triviaGetNewFactIntent give me triviaGetNewFactIntent give me some informationGetNewFactIntent tell me somethingGetNewFactIntent give me something

Nu er det tid til at oprette Lambda. Gå til //aws.amazon.com/, og log ind på konsollen. Gå derefter til services-Lambda .

On the top right of your page, make sure your AWS Region is N. Virginia.

Then click the blue button to create a Lamda function.

Choose the blueprint that looks like this:

Configure your trigger. Make sure you choose Alexa Skills Kit in the drop down menu.

Configure your function. Make sure your function name is written in camelBack. You can leave the description blank, but you are building this in Node.js.

Add your updated code.

There is an AlexaSkill.js file written with specific event handlers. It specifies output, prompt and speech. There is also an Index.js file that you customize to meet the needs of your Skill.

Girls Can Code (index.js)
‘use strict’;var Alexa = require(‘alexa-sdk’);
var APP_ID = “amzn1.ask.skill.1f2c85a9-b1b6–49a8-b94d-8a795d545d98”;
var SKILL_NAME = “Girls Can Code”;var GET_FACT_MESSAGE = “Here’s your fact: “;var HELP_MESSAGE = “You can say tell me a code fact, or, you can say exit… What can I help you with?”;var HELP_REPROMPT = “What can I help you with?”;var STOP_MESSAGE = “Goodbye!”;
var data = [ “Coding is awesome.”, “You can create tools that will change the world.”, “Coding is creative.”, “Coding is like solving a puzzle.”, “Coding work can be done remotely”, “Learning code is empowering.”, “Technology and coding help create the future.”, “Girls who can code have the edge”, “Anyone can code. You’ll discover something new.”, “Coding promotes critical thinking”, “Women make great coders”, “Girls who code are role models for all women.”, “Girls who code know that technology is not just for boys.”, “Jobs in tech are in demand.”, “Coding is the language of the 21st century”, “Girls who code help close the gender gap.”, “Coding can be done anywhere, anytime”, “Working in tech can be a very lucrative career choice”, “Coding is not just about building robots and website, you learn to create things that don’t exist”, “A girl who codes could create the next new social media app”, “A girl with tech skills can change the ways businesses communicate”, “Girls who code love to learn.”];
exports.handler = function(event, context, callback) { var alexa = Alexa.handler(event, context); alexa.APP_ID = APP_ID; alexa.registerHandlers(handlers); alexa.execute();};
var handlers = { ‘LaunchRequest’: function () { this.emit(‘GetNewFactIntent’); }, ‘GetNewFactIntent’: function () { var factArr = data; var factIndex = Math.floor(Math.random() * factArr.length); var randomFact = factArr[factIndex]; var speechOutput = GET_FACT_MESSAGE + randomFact; this.emit(‘:tellWithCard’, speechOutput, SKILL_NAME, randomFact) }, ‘AMAZON.HelpIntent’: function () { var speechOutput = HELP_MESSAGE; var reprompt = HELP_REPROMPT; this.emit(‘:ask’, speechOutput, reprompt); }, ‘AMAZON.CancelIntent’: function () { this.emit(‘:tell’, STOP_MESSAGE); }, ‘AMAZON.StopIntent’: function () { this.emit(‘:tell’, STOP_MESSAGE); }};

Create a compressed file with the above two files and upload the zipfile into Lambda.

Skip the Advanced settings.

Copy the ARN # in the top right hand corner of your screen.

Go back to the Amazon Developer page. Select your skill and click on the Configuration tab located in the left sidebar menu.

Select the AWS Lambda option. Check the North America box. Paste the arn# that you copied from your Lambda dashboard.

Test your Skill. If necessary, update it so that it works properly. This GitHub Repository gives you the sample code for creating a Fact Skill. Check it, clone it and update it to write your own.

You can test your code in the Developer Console, in the Lambda functions, on your Echo and at Echoism.io.

Enter your Publishing and Privacy information.

Congrats..you’re ready to submit for certification.

It takes a few days to hear back from the Amazon Developer Team. If your Skill is approved, then everything works and all of the information is compliant. Your Skill will be certified and published and available for others to use.

If not, you will receive feedback and suggestions on what you need to to to resolve any issues so you can re-submit.

What I learned

  • It’s helpful to have some familiarity with JavaScript and Node.js.
  • You will need an AWS (Amazon Web Services) account and an Amazon Developer Account to complete and submit Skills.
  • Review the words you cannot use that will conflict with how Alexa responds.
  • Listen to the preview of your Skill. It’s extremely helpful to know your information flows.
  • It’s very different creating something that is voice activated by an end user as compared to reading on a screen.
  • Lad som om du er slutbruger, når du skriver din færdighed. Det hjalp mig med at forstå, hvordan brugeren ville bede Alexa om oplysninger.
  • Hvis din færdighed ikke accepteres, skal du gennemgå feedbacken fra Alexa Skills Team. De giver gode oplysninger, der hjælper dig med at få din færdighedscertificering klar.
  • Hvis du giver forbedringer til en af ​​dine eksisterende færdigheder, skal den forbedrede færdighed gennemgå den samme proces.
  • Du har brug for et ikon eller billede, som din Skill kan uploade med indsendelse.
  • Når din færdighed er accepteret og certificeret, er den live på Amazon.

Jeg arbejder i øjeblikket på to færdigheder. Den ene bruger "Beslutningstræskabelonen" og den anden bruger "Sådan skabelonen". Disse er lidt mere komplekse at bygge, men jeg er overbevist om, at de snart vil blive offentliggjort.

Jeg har også min gratis Echo Dot. Interaktion med denne enhed har givet mig ideer til at udvikle flere færdigheder.