Inhoudsopgave:
- Stap 1: Stap 1: Denk na over de algehele stroom van uw vaardigheden
- Stap 2: Stap 2: Maak een leuk welkomstblok met inleidend geluid
- Stap 3: Stap 3: IFTTT instellen
- Stap 4: Stap 4: Stel uw Google-spreadsheet in
- Stap 5: Stap 5: Stel uw "Laatste Tweet" JSON-query in Storyline in
- Stap 6: Optionele extra: een willekeurig resultaat genereren uit Google Spreadsheets zodat Alexa kan lezen
Video: Alexa Skill: Lees de nieuwste tweet (in dit geval van God): 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Ik heb een Alexa Skill gemaakt om "Gods nieuwste tweet" te lezen -- de inhoud, dat wil zeggen, van @TweetOfGod, het account van meer dan 5 miljoen abonnees gemaakt door een voormalige comedyschrijver van de Daily Show. Het maakt gebruik van IFTTT (If This Then That), een Google Spreadsheet en de ongelooflijk gebruiksvriendelijke Alexa Skill Builder, Storyline.
Om een idee te krijgen van het eindresultaat, kun je de vaardigheid hier aan je Alexa-apparaat toevoegen, of je kunt een voorbeeld van de vaardigheid op Storyline bekijken als je Alexa-account zich niet in de VS bevindt of je geen Alexa-apparaat hebt.
Als je een Alexa-vaardigheid wilt bouwen die tweets leest, is dit een relatief eenvoudige manier om het te doen. Er komt geen codering bij kijken als je alleen mijn sjablonen gebruikt, maar als je van het pad wilt afdwalen, helpt het om iets te weten over code in het algemeen en in het bijzonder hoe JSON-aanroepen zijn gestructureerd. Maar als je deze vaardigheid gewoon repliceert voor een ander Twitter-account, heb je geen technische vaardigheden nodig die verder gaan dan knippen en plakken.
Wat je nodig hebt:
- Een Alexa-apparaat (of een account bij Echoism.io - een geweldige virtuele Alexa-simulator)
- Een Alexa Developer-account
- Een Google-account om een spreadsheet mee te maken
- Een account bij Storyline
- Een account bij If This Then That (IFTTT)
- Een dropbox-account of een plek waar je mp3-bestanden kunt hosten op een beveiligde server
Al deze accounts zijn gratis.
Ik zal niet te veel in detail treden over de basisprincipes van het creëren van een Storyline-vaardigheid -- er zijn uitstekende tutorials op de site om te leren hoe je blokken kunt maken, verbinden en vertakken tussen voorwaarden. Deze tutorial richt zich op drie dingen die ik heb geleerd bij het bouwen van deze vaardigheid: een MP3-geluidseffect in je vaardigheid krijgen, Twitter-inhoud verbinden via IFTTT en Google Spreadsheets en hoe je een willekeurige tweet kunt genereren uit een reeks vooraf gemaakte opties.
(En een grote schreeuw naar Alexa Skill-ontwikkelaar George Collier, wiens uitstekende tutorial over het integreren van Twitter in Alexa me op weg heeft geholpen.)
Stap 1: Stap 1: Denk na over de algehele stroom van uw vaardigheden
Verhaallijn is een fantastische manier om Alexa-vaardigheden te creëren met weinig of geen codering. U kunt blokken op hun plaats slepen en neerzetten en verbindingen en paden tussen acties instellen via een gemakkelijk te begrijpen grafische interface. Als je ooit Yahoo Pipes hebt gebruikt, herken je de interface.
Een van de leuke dingen van Storyline is dat het vrij eenvoudig is om Alexa de resultaten van een JSON-query te laten uitspreken. Gegevens uit een Google-spreadsheet halen is eenvoudig met JSON-query's. Tweets in een Google-spreadsheet krijgen met If This Than That is eenvoudig. Eenvoudig. Eenvoudig. Eenvoudig.
Ik vind dat het het beste is om je hele vaardigheid in abstracto te visualiseren voordat je begint.
Toen ik aan mijn vaardigheid dacht, wist ik dat het primaire doel was om de laatste tweet te leveren. Maar ik zou dat kunnen verbeteren met een beetje geluidsontwerp (Storyline laat je vaardigheden toe om elke MP3 af te spelen), en één tweet is misschien niet genoeg om mensen een voorproefje van het account te geven -- ik zou een aantal van de oudere tweets kunnen opslaan en laten de gebruiker hoort een van die na de laatste. Dus mijn schets van de vaardigheidsstroom kan er als volgt uitzien:
- Verwelkom de gebruiker met een stukje gesproken tekst en een passend inleidend geluid
- Lees de laatste tweet
- Een kenmerkend geluid afspelen
-
Vraag de gebruiker of ze een oudere tweet willen horen
- Ja? Lees een oudere tweet.
- Speel het kenmerkende geluid
- Nee? Verlaat de vaardigheid.
De bron van de "Laatste Tweet" is een Google-spreadsheet, gevoed door een If This Then That-script. Dat proces ziet er ongeveer zo uit:
- ALS er een nieuwe tweet is van het @TweetOfGod-account, wordt deze gekopieerd naar de spreadsheet
- Als de tweet een link of een afbeelding bevat, filtert de spreadsheet deze eruit
- Als de tweet een retweet is, filtert de spreadsheet deze eruit
- Tweets die door die twee filters worden gehaald, worden vervolgens verwerkt om te worden gelezen: # wordt vervangen door het woord "Hashtag" en verschillende andere tekens worden vervangen door leesbare equivalenten
- De laatste tweet wordt gekopieerd naar de "laatste tweet"-cel die Alex leest
Stap 2: Stap 2: Maak een leuk welkomstblok met inleidend geluid
Voordat Alexa de laatste tweet leest, genereer ik willekeurig een van de vier humoristische hemelse geluiden. Dit zijn mp3's die per verhaallijn voor Alexa zijn verwerkt. Ik vond mijn mp3's op Freesound (en alles wat er is is echt gratis, maar wees een fatsoenlijk mens en laat een fooi achter).
- Download uw mp3. Het moet minder dan 90 seconden zijn. Alexa is bijzonder over het formaat. Als je weet dat het MPEG-versie 2 en 48kps is, kun je de volgende stap overslaan. Maar als je het niet weet of als het iets anders is, is het gemakkelijk om te zetten.
- Upload het naar Storyline voor verwerking op hun Audio Converter
- Host uw gedownloade audio op een
Als stap 3 gaat u "WAT NU DOEN?" je hebt waarschijnlijk geen toegang tot een https-server waarop je je bestanden kunt hosten. Geen zorgen, dat kan met dropbox. Je hebt een account nodig, maar nogmaals, een gratis is prima. Dit zijn de stappen:
- Ga naar https://www.dropbox.com/h en log in op je account.
- Klik op de knop Bestanden uploaden
- Selecteer het mp3-bestand dat u hebt geconverteerd.
- Klik op Delen
- Klik op Maak een link en kopieer de link
- Vervang in de gekopieerde link "dropbox" door "dl.dropboxusercontent" zonder de aanhalingstekens
- Kopieer die URL
Je gaat nu naar de onderkant van je welkomstblok en klikt op het pictogram Muzieknoot.
Plak uw URL erin. Als u willekeurige variaties wilt toevoegen, herhaalt u het proces voor nog een paar MP3's en klikt u op het Hamburger-menu onder het URL-plakvak.
Stap 3: Stap 3: IFTTT instellen
- Ga naar uw IFTTT-account en selecteer "Een nieuwe applet maken"
- Selecteer TWITTER als de IF-service.
- Selecteer "Nieuwe tweet door specifieke gebruiker als de trigger. Vul de naam in van het account dat je wilt volgen
- Selecteer "Google Spreadsheets" als de THEN-service
- Selecteer "Voeg rij toe aan spreadsheet"
- Verwijder in het veld "Opgemaakte rij" alles behalve het veld {{TEXT}}.
- Creëer je vaardigheid.
Dit creëert een nieuwe spreadsheet en voegt een rij toe telkens wanneer een nieuwe tweet uitgaat. Misschien geeft u er de voorkeur aan om één cel in uw spreadsheet te gebruiken en de inhoud ervan elke keer te overschrijven. In dat geval kun je in stap 5 de optie kiezen om naar een enkele cel te schrijven. Ik houd ervan om de tweets bij te houden, aangezien ik de tweets die niet actueel zijn of die niet op nieuws reageren, regelmatig verplaats naar een 'Oudere Tweets'-spreadsheet. Houd er rekening mee dat als u deze optie kiest, u wat onderhoud aan uw blad moet doen: er wordt na 2000 rijen een nieuwe gemaakt.
Stap 4: Stap 4: Stel uw Google-spreadsheet in
Dit Google-blad is het hart van deze specifieke vaardigheid, omdat het tweets uitfiltert die niet echt goed werken met Alexa (tweets die bijvoorbeeld verwijzen naar afbeeldingen of tweets met links) en het maakt tweets met alleen tekst veel meer Alexa -vriendelijk met een paar eenvoudige vervangingen.
Laat IFTT uw spreadsheet maken met een paar items - wacht dus gewoon op een paar tweets van het account dat u volgt om daar te landen, open Google Spreadsheets en sorteer op tijd die is gemaakt. Je ziet je glimmende nieuwe spreadsheet bovenaan. Nu staat elke nieuwe tweet in een nieuwe rij, dus we willen een formule maken die de tweets met links of afbeeldingen uitfiltert en doorloopt om de laatste in de kolom te vinden.
Je kunt deze kopie van mijn spreadsheet gewoon repliceren of je kunt er zelf een maken met de volgende stappen:
- Hernoem het tabblad met tweets erin "Live from IFTTT"
- Voeg een tabblad met de naam 'Tweets verwerken' toe aan de spreadsheet
- Voeg deze formule toe aan cel A8 van het tabblad Tweets verwerken:
=QUERY('Live van IFTTT'!A3:A2000, "Selecteer A Waar niet A 'https' bevat")
Dat trekt alle tweets die geen link hebben naar kolom A van uw verwerkingstabblad.
Nu moeten we de laatste tweet in die kolom vinden. Plak de volgende formule in cel B7 van het tabblad Verwerking:
=INDEX(FILTER(A:A, NIET(ISBLANK(A:A))), RIJEN(FILTER(A:A, NIET(ISBLANK(A:A)))))
Nu willen we een paar vervangingen doen om de tweet gemakkelijker leesbaar te maken voor Alexa. Deze kunnen eigenlijk allemaal één zijn in een formule met één cel, maar ik heb ze voor de duidelijkheid opgesplitst:
Plak in cel B6 van het tabblad Verwerking:
=trim(regexreplace(B7, "#", "Hashtag"))
Die kijkt naar de inhoud van de onderstaande cel en vervangt het #-teken door het woord "Hashtag"
Plak in cel B5 de volgende iteratie:
=trim(regexreplace(B6, "@", "at"))
Je snapt het idee.
In cel B4 plakken:
=trim(regexreplace(B6, "&", "en "))
In cel B3:
=trim(regexreplace(B6, "%", "procent"))
In cel B2 gaan we een iets gecompliceerdere formule plaatsen:
=ArrayFormula(REGEXREPLACE(B3, "([^A-Za-z0-9., !?:;''])", " "))
Deze verwijdert eenvoudig ALLES dat geen cijfer, letter of een van de leestekens is die Alexa begrijpt.
In cel B1 gaan we gewoon de laatste tweet kopiëren:
=index(B2)
Dat is de definitieve tekst en je kunt een verhaallijn programmeren om die cel te pakken als je een beetje JSON kent, maar om het aan het einde van de verhaallijn een beetje eenvoudiger te maken, kopieer ik de inhoud graag naar het tabblad "Live from IFTTT" door dit te plaatsen formule in A2 op het tabblad "Live from IFTTT":
='Verwerkingscentrum'!B1
Hip. Nu is uw spreadsheet helemaal ingesteld en klaar om te worden gelezen door een Storyline JSON-query.
Stap 5: Stap 5: Stel uw "Laatste Tweet" JSON-query in Storyline in
- Ga naar het welkomstblok van je verhaallijn en voeg een stap 'Wat Alexa zegt' toe.
- Voeg een inleidende zin toe zoals "Hier is de laatste tweet van TheTweetOfGod:"
- Gebruik het Hamburgermenu om variaties toe te voegen
- Klik op het kleine pijltje naar rechts en selecteer "Create New Block"
Ik noemde mijn nieuwe blok "Get God Tweet" De taak hier is om die laatste, gefilterde tweet op te halen uit de spreadsheetcel A2 van het primaire tabblad. Dat doe je door de gegevens op te halen met een JSON-verzoek geleverd via de Google Spreadsheets API: het is eigenlijk niets meer dan een mooie URL.
- Klik op het kleine pictogram helemaal rechts op je nieuwe blok om een JSON-verzoek toe te voegen.
- Geef uw API-verzoek een naam. Ik noemde de mijne "GetGodTweet"
-
Zoek de URL van uw spreadsheet als volgt:
- Klik op Bestand -> Publiceren op internet in uw spreadsheet.
- Gebruik de standaardwaarden en klik gewoon op "Publiceren"
- Kopieer de URL en plak deze in een notitiebestand.
Mijn voorbeeld is:
"https://docs.google.com/spreadsheets/d/e/2PACX-1vSUnz43PEORZbBES1lQ8ZlJjH_4voh4Guc6SWrfjeGk2bZlY5EBYzLD5-fT633ygo_35Jz97cuUwKuy/pubhtml" die je nodig hebt om je document te extraheren. Het is het bit tussen de /d/e en het volgende /-teken. Dus in dit geval:
2PACX-1vSUnz43PEORZbBES1lQ8ZlJjH_4voh4Guc6SWrfjeGk2bZlY5EBYzLD5-fT633ygo_35Jz97cuUwKuy
Je wisselt dat lange nummer in voor het bit in de volgende url met de tekst "SPREASHEET_ID":
"https://spreadsheets.google.com/feeds/list/SPREADSHEET_ID/od6/public/basic?alt=json"
- Neem nu DIE url en plak deze in het URL-vak van de JSON-query in Storyline.
- Selecteer optie "KOOP"
- Laat het vak "Kopteksten" leeg
- In het volgende vak ga je een variabele maken met de inhoud van cel A2 van je eerste tabblad door deze formule te plakken in:
tweet=api_response.feed.entry.0.title.$t
De variabele heet "tweet". Het kopieert de inhoud van het primaire tabblad 0.
Als je nu een "Alexa Says"-blok onder je JSON-query toevoegt en alleen het woord {{tweet}} tussen accolades plaatst, zegt Alexa de inhoud van de cel. Zorg ervoor dat de case overeenkomt met de variabele die u in stap 4 hebt genoemd!!!
Druk op de PLAY-knop op Storyline en test je vaardigheden! Als u het woord "Null" krijgt, betekent dit dat er iets mis is gegaan met uw API-verzoek.
Dat is het eigenlijk voor de basisvaardigheid. Ik voegde een grappige kleine audiohandtekening toe met een andere MP3 en vroeg of de gebruiker een oudere tweet wilde horen. De volgende stap laat je een leuke truc zien voor het genereren van een willekeurige oudere tweet, maar het is ijskoud voor degenen die hun vaardigheden wat extra bruikbaarheid willen geven.
Stap 6: Optionele extra: een willekeurig resultaat genereren uit Google Spreadsheets zodat Alexa kan lezen
Als je willekeurig een van een reeks oudere tweets wilt genereren, is hier een handige truc.
Ik heb een derde tabblad in mijn spreadsheet gemaakt met de naam 'Oudere tweets'. Deze bezetten allemaal cellen A1-A36 in mijn spreadsheet
- Maak in Storyline een nieuw blok met de naam "Oldertweets"
- Een JSON-querystap toevoegen
- Geef het een naam
-
Gebruik in het URL-vak dezelfde API-URL die u hebt gemaakt met uw spreadsheet-ID in de stap Laatste Tweet, met één variatie:
Verander het bit aan het einde dat /od6/basic/public zegt in /3/basic/public - dit roept TAB 3 op in plaats van Tab 1
- Selecteer "KRIJGEN"
- Kopteksten leeg laten
- Plak dit in het volgende vak:
oldtweet=api_response.feed.entry.random.title.$t
Je hebt een nieuwe variabele gemaakt, genaamd "oldtweet" en dat kleine woordje "willekeurig" betekent dat de variabele verandert telkens wanneer de JSON-query wordt aangeroepen.
Voeg nog een "Alexa Says"-stap toe en voeg je nieuwe variabele in, {{oldtweet}} met die accolades. Boom! Willekeurige goedheid!
Als je deze Instructable leuk vond, geef mijn vaardigheid dan een paar sterren of een recensie!
Aanbevolen:
Meet de afstand met de ultrasone sensor HC-SRF04 (nieuwste 2020): 3 stappen
Meet de afstand met de ultrasone sensor HC-SRF04 (nieuwste 2020): Wat is de ultrasone sensor (afstand)? Een echografie (Sonar) met golven op hoog niveau die mensen niet kunnen horen. We kunnen echter overal in de natuur de aanwezigheid van ultrasone golven zien. Gebruik bij dieren zoals vleermuizen, dolfijnen… ultrasone golven om
Arduino Nano elk geval: 4 stappen
Arduino Nano Every Case: Heb je ooit een extra beetje bescherming nodig gehad voor je Arduino Nano Every, of wilde je gewoon een stijlvolle case die nog steeds functioneel en breadboard-vriendelijk is? Nou, je bent hier aan het juiste adres, want vandaag ga ik je laten zien hoe je
Nike LED-swoosh! Dit is een geweldig decor voor een kamer. Dit is het enige project dat iedereen kan herhalen: 5 stappen
Nike LED-swoosh! Dit is een geweldig decor voor een kamer. Dit is het enige project dat iedereen kan herhalen.: Gereedschap - meetlint - schroevendraaier - soldeerbout - copingzaag - elektrische boor - schuurpapier Benodigdheden - LED-strip (RGB) 5 m - LED-controller - Voeding 12V 4A-hout 50-50-1500 2x-hout 20-20-3000 2x-multiplex 500-1000mm-schroeven (45mm) 150x-schroeven (35mm) 30x-scr
Nieuwste MacOS/Hackintosh High Sierra 10.13 Usb Wifi Driver "Future Proof"-oplossing met Raspberry Pi - Ajarnpa
Nieuwste MacOS/Hackintosh High Sierra 10.13 Usb Wifi Driver "Future Proof"-oplossing met Raspberry Pi: een van de meest frustrerende problemen met de nieuwste macOS/Hackintosh is de beschikbaarheid van de usb wifi-driver. Ik heb 3 wifi-usb die niet werken op de nieuwste macOS High Sierra 10.13Mijn nieuwste usb wifi is panda wireless, maar de driverondersteuning voor macO
Bouw een willekeurige muziek- en lichtgenerator en een glimp van het bewijs van GOD - Ajarnpa
Bouw een willekeurige muziek- en lichtgenerator en een glimp van bewijs van GOD: echt willekeurige getallen genereren lijkt onmogelijk. Het is echter vrij eenvoudig om een microcontroller te gebruiken om pseudo-willekeurige getallen te genereren en deze vervolgens te gebruiken om geluiden en verschillende gekleurde lichten weer te geven. Terwijl de muziek die wordt gegenereerd n