Things used in this project

Hardware components:
Echo
Amazon Alexa Amazon Echo
×1
Software apps and online services:
Dp image kit 02
Amazon Alexa Alexa Skills Kit
Screen%20shot%202015 07 20%20at%206.10.26%20pm
Amazon Web Services AWS Lambda

Schematics

Voice User Interface Diagram
User interface for Daily Dinosaur
Daily dinosaur diagram ktkprv1cgi

Code

app.jsJavaScript
Daily Dinosaur Alexa app for Node.js
'use strict';
var Alexa = require('alexa-sdk'); // Add Alexa SDK for handling events
var https = require('https');     // Add https for making network calls

// App ID for Daily Dinosaur (UK)
var APP_ID = "amzn1.ask.skill.1e1568e3-4851-450e-90d9-4b3ab99f7ffd";

// URL for HP IDOL API summery for search term
// An API key is needed for this to work
var urlPrefix = 'https://api.idolondemand.com/1/api/sync/querytextindex/v1?apikey=<ENTER API KEY HERE>&max_page_results=1&summary=quick&text=';

// Alexa response messages for handling each request
var SKILL_NAME = "Daily Dinosaur";
var GET_FACT_MESSAGE = "Here's your dinosaur: ";
var HELP_MESSAGE = "You can say tell me about a dinosaur, or, you can say exit... What can I help you with?";
var HELP_REPROMPT = "What can I help you with?";
var NO_NETWORK_MESSAGE = "There is a problem connecting to the internet at this time. Please try again later";
var STOP_MESSAGE = "Goodbye!";

// Array of over 1000 dinosaurs species
var dinosaurList = [
	"Aardonyx",
	"Abelisaurus",
	"Abrictosaurus",
	"Abrosaurus",
	"Abydosaurus",
	"Acanthopholis",
	"Achelousaurus",
	"Acheroraptor",
	"Achillesaurus",
	"Achillobator",
	"Acristavus",
	"Acrocanthosaurus",
	"Acrotholus",
	"Adamantisaurus",
	"Adasaurus",
	"Adelolophus",
	"Adeopapposaurus",
	"Aegyptosaurus",
	"Aeolosaurus",
	"Aepisaurus",
	"Aerosteon",
	"Afrovenator",
	"Agilisaurus",
	"Agnosphitys",
	"Agujaceratops",
	"Agustinia",
	"Ahshislepelta",
	"Ajancingenia",
	"Ajkaceratops",
	"Alamosaurus",
	"Alaskacephale",
	"Albalophosaurus",
	"Albertaceratops",
	"Albertadromeus",
	"Albertonykus",
	"Albertosaurus",
	"Albinykus",
	"Alcovasaurus",
	"Alectrosaurus",
	"Aletopelta",
	"Algoasaurus",
	"Alioramus",
	"Allosaurus",
	"Alnashetri",
	"Alocodon",
	"Altirhinus",
	"Altispinax",
	"Alvarezsaurus",
	"Alwalkeria",
	"Alxasaurus",
	"Amargasaurus",
	"Amargastegos",
	"Amargatitanis",
	"Amazonsaurus",
	"Ammosaurus",
	"Ampelosaurus",
	"Amphicoelias",
	"Amtocephale",
	"Amurosaurus",
	"Amygdalodon",
	"Anabisetia",
	"Anasazisaurus",
	"Anchiceratops",
	"Anchiornis",
	"Anchisaurus",
	"Andesaurus",
	"Andhrasaurus",
	"Angolatitan",
	"Angulomastacator",
	"Aniksosaurus",
	"Animantarx",
	"Ankylosaurus",
	"Anodontosaurus",
	"Anoplosaurus",
	"Anserimimus",
	"Antarctopelta",
	"Antarctosaurus",
	"Antetonitrus",
	"Anzu",
	"Aoniraptor",
	"Aorun",
	"Apatoraptor",
	"Apatosaurus",
	"Appalachiosaurus",
	"Aquilops",
	"Aragosaurus",
	"Aralosaurus",
	"Archaeoceratops",
	"Archaeodontosaurus",
	"Archaeornithoides",
	"Archaeornithomimus",
	"Arcovenator",
	"Arcusaurus",
	"Arenysaurus",
	"Argentinosaurus",
	"Argyrosaurus",
	"Aristosuchus",
	"Arkharavia",
	"Arrhinoceratops",
	"Arstanosaurus",
	"Asiaceratops",
	"Asiatosaurus",
	"Astrodon",
	"Astrophocaudia",
	"Asylosaurus",
	"Atacamatitan",
	"Atlantosaurus",
	"Atlasaurus",
	"Atlascopcosaurus",
	"Atrociraptor",
	"Atsinganosaurus",
	"Aublysodon",
	"Aucasaurus",
	"Augustynolophus",
	"Auroraceratops",
	"Aurornis",
	"Australodocus",
	"Australovenator",
	"Austrocheirus",
	"Austroposeidon",
	"Austroraptor",
	"Austrosaurus",
	"Avaceratops",
	"Aviatyrannis",
	"Avimimus",
	"Bactrosaurus",
	"Bagaceratops",
	"Bagaraatan",
	"Bahariasaurus",
	"Bainoceratops",
	"Balaur",
	"Balochisaurus",
	"Bambiraptor",
	"Banji",
	"Baotianmansaurus",
	"Barapasaurus",
	"Barilium",
	"Barosaurus",
	"Barrosasaurus",
	"Barsboldia",
	"Baryonyx",
	"Batyrosaurus",
	"Baurutitan",
	"Becklespinax",
	"Beipiaognathus",
	"Beipiaosaurus",
	"Beishanlong",
	"Bellusaurus",
	"Berberosaurus",
	"Betasuchus",
	"Bicentenaria",
	"Bienosaurus",
	"Bihariosaurus",
	"Bissektipelta",
	"Bistahieversor",
	"Blasisaurus",
	"Blikanasaurus",
	"Bolong",
	"Bonapartenykus",
	"Bonatitan",
	"Bonitasaura",
	"Borealosaurus",
	"Boreonykus",
	"Borogovia",
	"Bothriospondylus",
	"Brachiosaurus",
	"Brachyceratops",
	"Brachylophosaurus",
	"Brachypodosaurus",
	"Brachytrachelopan",
	"Bradycneme",
	"Brasilotitan",
	"Bravoceratops",
	"Breviceratops",
	"Brohisaurus",
	"Brontomerus",
	"Bruhathkayosaurus",
	"Buitreraptor",
	"Byronosaurus",
	"Caenagnathasa",
	"Caenagnathus",
	"Calamosaurus",
	"Calamospondyls",
	"Callovosauru",
	"Camarasaurus",
	"Camarillaaurus",
	"Camelotia",
	"Camposaurus",
	"Camptosaurus",
	"Campylodniscus",
	"Canardia",
	"Carcharodntosaurus",
	"Cardiodon",
	"Carnotaurus",
	"Caseosaurus",
	"Cathartesaura",
	"Cathetosaurs",
	"Caudipteryx",
	"Cedarosaurs",
	"Cedarpelta",
	"Cedrorestes",
	"Centrosaurs",
	"Cerasinops",
	"Ceratonyus",
	"Ceratops",
	"Ceratosaurus",
	"Cetiosaurisus",
	"Cetiosaurus",
	"Changchunsaurs",
	"Changyuraptor",
	"Chaoyangsauru",
	"Charonosauru",
	"Chasmosaurs",
	"Chebsaurus",
	"Chialingosauus",
	"Chiayusaurus",
	"Chilantaisarus",
	"Chilesaurus",
	"Chindesaurus",
	"Chingkankousaurus",
	"Chinshakiangoaurus",
	"Chirostenotes",
	"Chondrosteosauus",
	"Chromogisaurus",
	"Chuandongocoelrus",
	"Chuanjiesauus",
	"Chuanqilong",
	"Chubutisaurus",
	"Chungkingosauru",
	"Chuxiongsaurus",
	"Cionodon",
	"Citipati",
	"Claosaurus",
	"Clasmodosaurus",
	"Coahuilacertops",
	"Coelophysis",
	"Coeluroies",
	"Coelurus",
	"Colepiocephale",
	"Coloradisauru",
	"Comahuesaurus",
	"Compsognathu",
	"Compsosuchus",
	"Concavenator",
	"Conchoraptor",
	"Condorraptor",
	"Coronosaurus",
	"Corythosaurs",
	"Craspedodon",
	"Craterosaurus",
	"Crichtonpelta",
	"Crichtonsaurus",
	"Cristatusaurs",
	"Cruxicheiros",
	"Cryolophosauus",
	"Cryptosarus",
	"Cumnoria",
	"Daanosaurus",
	"Dacentrurus",
	"Daemonosauus",
	"Dahalokel",
	"Dakotadon",
	"Dakotaraptor",
	"Dandakosaurus",
	"Dashanpusaurus",
	"Daspletosarus",
	"Datanglong",
	"Datonglong",
	"Datousauru",
	"Daxiatitan",
	"Deinocheiru",
	"Deinonychus",
	"Delapparenti",
	"Deltadromeus",
	"Demandasauru",
	"Denversaurus",
	"Diabloceratops",
	"Diamantinsaurus",
	"Diclonius",
	"Dicraesaurus",
	"Dilong",
	"Dilophosarus",
	"Dinodocus",
	"Diplodocus",
	"Diplotomodon",
	"Dolichosuchu",
	"Dongbeititan",
	"Dongyangopelta",
	"Dongyangsaurus",
	"Draconyx",
	"Dracopelta",
	"Dracoraptor",
	"Dracovenator",
	"Dreadnoghtus",
	"Drinker",
	"Dromaeosauroies",
	"Dromaeosauru",
	"Drusilasaua",
	"Dryosaurus",
	"Dryptosauroies",
	"Dryptosaurus",
	"Dubreuilloaurus",
	"Duriatitan",
	"Duriavenator",
	"Dyoplosaurus",
	"Dysalotoaurus",
	"Dysganus",
	"Dyslocosauru",
	"Dystrophaus",
	"Echinodon",
	"Edmontonia",
	"Edmontosurus",
	"Efraasia",
	"Einiosaurus",
	"Ekrixinatsaurus",
	"Elaltitan",
	"Elaphrosauus",
	"Elmisauru",
	"Elopteryx",
	"Elrhazosauus",
	"Emausaurus",
	"Embasaurus",
	"Enigmosaurus",
	"Eoabelisaurs",
	"Eocarchaia",
	"Eocursor",
	"Eodromaes",
	"Eolambia",
	"Eomamenchisurus",
	"Eoplophyis",
	"Eoraptor",
	"Eosinoptery",
	"Eotrachodon",
	"Eotriceratps",
	"Eotyrannus",
	"Eousdryosaurus",
	"Epachthosaurus",
	"Epichirostenoes",
	"Epidexiptryx",
	"Equijubus",
	"Erectous",
	"Erketu",
	"Erliansaurus",
	"Erlikosaurus",
	"Eshanosauru",
	"Eucamerotus",
	"Eucercosaurus",
	"Eucnemesarus",
	"Euhelopus",
	"Euoplocephals",
	"Euronychodon",
	"Europasauus",
	"Europelta",
	"Euskelosaurus",
	"Eustreptopondylus",
	"Falcarius",
	"Fendusaurus",
	"Ferganasaurus",
	"Ferganastegos",
	"Ferganocephale",
	"Foraminacephal",
	"Fosteroventor",
	"Fruitadens",
	"Fukuiraptor",
	"Fukuisaurus",
	"Fukuivenatr",
	"Fukuititn",
	"Fulengia",
	"Fulgurotherum",
	"Fusuisaurus",
	"Futalognkoaurus",
	"Galeamopus",
	"Gallimimus",
	"Galveosaurus",
	"Gannansaurus",
	"Ganzhousaurus",
	"Gargoyleosarus",
	"Garudimimu",
	"Gasosaurus",
	"Gasparinsaura",
	"Gastonia",
	"Geminiraptr",
	"Genusaurus",
	"Genyodectes",
	"Geranosaurus",
	"Gideonmantelli",
	"Giganotosauru",
	"Gigantoraptor",
	"Gigantosaurus",
	"Gigantspinosauus",
	"Gilmoreosaurs",
	"Giraffatitan",
	"Glacialisurus",
	"Glishades",
	"Glyptodontoplta",
	"Gobiceratos",
	"Gobisauru",
	"Gobititan",
	"Gobivenator",
	"Gojirasaurus",
	"Gondwanatita",
	"Gongbusaurus",
	"Gongpoquansauru",
	"Gongxianosarus",
	"Gorgosaurus",
	"Goyocephale",
	"Graciliceratos",
	"Graciliraptr",
	"Gravitholus",
	"Gryphoceatops",
	"Gryponyx",
	"Gryposaurus",
	"Guaibasarus",
	"Gualicho",
	"Guanlong",
	"Hadrosaurus",
	"Haestasauus",
	"Hagryphus",
	"Halticosauus",
	"Hanssuesia",
	"Haplocanthosurus",
	"Haplocheirs",
	"Harpmimus",
	"Haya",
	"Helioceratops",
	"Heptasteornis",
	"Herrerasaurus",
	"Hesperonychus",
	"Hesperosaurus",
	"Heterodontosarus",
	"Hexinlusarus",
	"Heyuannia",
	"Hierosauru",
	"Hippodraco",
	"Histriasaurus",
	"Homalocephale",
	"Hoplitosaurus",
	"Horshamosaurs",
	"Huabeisaurus",
	"Hualianceratps",
	"Huanansaurus",
	"Huanghetitan",
	"Huangshanlong",
	"Huaxiagnathus",
	"Huayangosauus",
	"Hudiesaurus",
	"Huehuecanauhtus",
	"Hungarosauru",
	"Hylaeosaurus",
	"Hypacrosaurus",
	"Hypselosaurus",
	"Hypselospnus",
	"Hypsibema",
	"Hypsilophodon",
	"Ichthyovenator",
	"Ignavusaurus",
	"Iguanacolossus",
	"Iguanodon",
	"Iliosuchus",
	"Ilokelesia",
	"Incisivosaurus",
	"Indosaurus",
	"Indosuchus",
	"Inosaurus",
	"Irritator",
	"Isanosaurus",
	"Ischioceratops",
	"Isisaurus",
	"Itemirus",
	"Iuticosaurus",
	"Jainosaurus",
	"Jaklapallisaurus",
	"Janenschia",
	"Jaxartosaurus",
	"Jeholosaurus",
	"Jeyawati",
	"Jianchangosaurus",
	"Jiangjunosaurus",
	"Jiangshanosaurus",
	"Jiangxisaurus",
	"Jinfengopteryx",
	"Jingshanosaurus",
	"Jintasaurus",
	"Jinzhousaurus",
	"Jiutaisaurus",
	"Jobaria",
	"Jubbulpuria",
	"Judiceratops",
	"Juratyrant",
	"Juravenator",
	"Kaatedocus",
	"Kaijiangosaurus",
	"Kakuru",
	"Kangnasaurus",
	"Karongasaurus",
	"Katepensaurus",
	"Kayentavenator",
	"Kazaklambia",
	"Kelmayisaurus",
	"Kentrosaurus",
	"Kerberosaurus",
	"Khaan",
	"Khetranisaurus",
	"Kileskus",
	"Kinnareemimus",
	"Kol",
	"Komlosaurus",
	"Koparion",
	"Koreaceratops",
	"Koreanosaurus",
	"Koshisaurus",
	"Kosmoceratops",
	"Kotasaurus",
	"Koutalisaurus",
	"Kritosaurus",
	"Kryptops",
	"Kukufeldia",
	"Kulceratops",
	"Kulindadromeus",
	"Kunbarrasaurus",
	"Kundurosaurus",
	"Labocania",
	"Laevisuchus",
	"Lambeosaurus",
	"Lametasaurus",
	"Lamplughsaura",
	"Lanzhousaurus",
	"Laosaurus",
	"Lapampasaurus",
	"Laplatasaurus",
	"Lapparentosaurus",
	"Laquintasaura",
	"Latirhinus",
	"Leaellynasaura",
	"Leinkupal",
	"Leonerasaurus",
	"Lepidus",
	"Leptoceratops",
	"Leptorhynchos",
	"Leshansaurus",
	"Lesothosaurus",
	"Lessemsaurus",
	"Levnesovia",
	"Lexovisaurus",
	"Leyesaurus",
	"Liaoceratops",
	"Liaoningosaurus",
	"Ligabueino",
	"Ligabuesaurus",
	"Liliensternus",
	"Limaysaurus",
	"Limusaurus",
	"Linhenykus",
	"Linheraptor",
	"Linhevenator",
	"Lirainosaurus",
	"Liubangosaurus",
	"Lohuecotitan",
	"Loncosaurus",
	"Lophorhothon",
	"Lophostropheus",
	"Loricatosaurus",
	"Loricosaurus",
	"Losillasaurus",
	"Lourinhanosaurus",
	"Lourinhasaurus",
	"Luanchuanraptor",
	"Lufengosaurus",
	"Luoyanggia",
	"Lurdusaurus",
	"Lusitanosaurus",
	"Lusotitan",
	"Lycorhinus",
	"Lythronax",
	"Machairasaurus",
	"Machairoceratops",
	"Macrogryphosaurus",
	"Macrurosaurus",
	"Magnapaulia",
	"Magnirostris",
	"Magnosaurus",
	"Magyarosaurus",
	"Mahakala",
	"Maiasaura",
	"Majungasaurus",
	"Malarguesaurus",
	"Malawisaurus",
	"Maleevus",
	"Mamenchisaurus",
	"Manidens",
	"Mandschurosaurus",
	"Mantellisaurus",
	"Mapusaurus",
	"Marisaurus",
	"Marshosaurus",
	"Martharaptor",
	"Masiakasaurus",
	"Massospondylus",
	"Maxakalisaurus",
	"Medusaceratops",
	"Megalosaurus",
	"Megaraptor",
	"Mei",
	"Melanorosaurus",
	"Mendozasaurus",
	"Mercuriceratops",
	"Meroktenos",
	"Metriacanthosaurus",
	"Microceratus",
	"Microcoelus",
	"Microhadrosaurus",
	"Micropachycephalosaurus",
	"Microraptor",
	"Microvenator",
	"Minmi",
	"Miragaia",
	"Mirischia",
	"Mochlodon",
	"Mongolosaurus",
	"Monkonosaurus",
	"Monoclonius",
	"Monolophosaurus",
	"Mononykus",
	"Montanoceratops",
	"Morelladon",
	"Morinosaurus",
	"Morrosaurus",
	"Mosaiceratops",
	"Murusraptor",
	"Mussaurus",
	"Muttaburrasaurus",
	"Muyelensaurus",
	"Mymoorapelta",
	"Naashoibitosaurus",
	"Nambalia",
	"Nankangia",
	"Nanningosaurus",
	"Nanosaurus",
	"Nanshiungosaurus",
	"Nanuqsaurus",
	"Nanyangosaurus",
	"Narambuenatitan",
	"Nasutoceratops",
	"Natronasaurus",
	"Nebulasaurus",
	"Nedcolbertia",
	"Neimongosaurus",
	"Nemegtomaia",
	"Nemegtosaurus",
	"Neosodon",
	"Neovenator",
	"Neuquenraptor",
	"Neuquensaurus",
	"Nigersaurus",
	"Ningyuansaurus",
	"Niobrarasaurus",
	"Nipponosaurus",
	"Noasaurus",
	"Nodocephalosaurus",
	"Nodosaurus",
	"Nomingia",
	"Nopcsaspondylus",
	"Normanniasaurus",
	"Nothronychus",
	"Notoceratops",
	"Notocolossus",
	"Notohypsilophodon",
	"Nqwebasaurus",
	"Nuthetes",
	"Ohmdenosaurus",
	"Ojoraptorsaurus",
	"Olorotitan",
	"Omeisaurus",
	"Oplosaurus",
	"Orkoraptor",
	"Ornithodesmus",
	"Ornitholestes",
	"Ornithomimoides",
	"Ornithomimus",
	"Ornithopsis",
	"Orodromeus",
	"Orthogoniosaurus",
	"Orthomerus",
	"Oryctodromeus",
	"Osmakasaurus",
	"Ostafrikasaurus",
	"Othnielia",
	"Othnielosaurus",
	"Otogosaurus",
	"Ouranosaurus",
	"Overosaurus",
	"Oviraptor",
	"Owenodon",
	"Oxalaia",
	"Ozraptor",
	"Pachycephalosaurus",
	"Pachyrhinosaurus",
	"Pachysuchus",
	"Padillasaurus",
	"Pakisaurus",
	"Palaeoscincus",
	"Paludititan",
	"Pampadromaeus",
	"Pamparaptor",
	"Panamericansaurus",
	"Panguraptor",
	"Panoplosaurus",
	"Panphagia",
	"Pantydraco",
	"Paralititan",
	"Paranthodon",
	"Pararhabdodon",
	"Parasaurolophus",
	"Parksosaurus",
	"Paronychodon",
	"Parrosaurus",
	"Parvicursor",
	"Patagonykus",
	"Patagosaurus",
	"Pawpawsaurus",
	"Pectinodon",
	"Pedopenna",
	"Pegomastax",
	"Peishansaurus",
	"Pelecanimimus",
	"Pellegrinisaurus",
	"Peloroplites",
	"Pelorosaurus",
	"Penelopognathus",
	"Pentaceratops",
	"Petrobrasaurus",
	"Phaedrolosaurus",
	"Philovenator",
	"Phuwiangosaurus",
	"Phyllodon",
	"Piatnitzkysaurus",
	"Picrodon",
	"Pinacosaurus",
	"Pisanosaurus",
	"Pitekunsaurus",
	"Piveteausaurus",
	"Planicoxa",
	"Plateosauravus",
	"Plateosaurus",
	"Platyceratops",
	"Plesiohadros",
	"Pneumatoraptor",
	"Podokesaurus",
	"Poekilopleuron",
	"Polacanthus",
	"Polyonax",
	"Ponerosteus",
	"Pradhania",
	"Prenocephale",
	"Prenoceratops",
	"Priconodon",
	"Priodontognathus",
	"Proa",
	"Probrachylophosaurus",
	"Probactrosaurus",
	"Proceratosaurus",
	"Procompsognathus",
	"Prodeinodon",
	"Propanoplosaurus",
	"Prosaurolophus",
	"Protarchaeopteryx",
	"Protoceratops",
	"Protognathosaurus",
	"Protohadros",
	"Psittacosaurus",
	"Pteropelyx",
	"Pterospondylus",
	"Puertasaurus",
	"Pukyongosaurus",
	"Pulanesaura",
	"Pycnonemosaurus",
	"Pyroraptor",
	"Qantassaurus",
	"Qianzhousaurus",
	"Qiaowanlong",
	"Qijianglong",
	"Qinlingosaurus",
	"Qingxiusaurus",
	"Qiupalong",
	"Quaesitosaurus",
	"Quetecsaurus",
	"Quilmesaurus",
	"Rahiolisaurus",
	"Rajasaurus",
	"Rapator",
	"Rapetosaurus",
	"Raptorex",
	"Ratchasimasaurus",
	"Rativates",
	"Rayososaurus",
	"Rebbachisaurus",
	"Regaliceratops",
	"Regnosaurus",
	"Rhabdodon",
	"Rhoetosaurus",
	"Riabininohadros",
	"Richardoestesia",
	"Rinchenia",
	"Rinconsaurus",
	"Riojasaurus",
	"Rocasaurus",
	"Rubeosaurus",
	"Ruehleia",
	"Rugocaudia",
	"Rugops",
	"Rukwatitan",
	"Ruyangosaurus",
	"Sahaliyania",
	"Saichania",
	"Saldamosaurus",
	"Saltasaurus",
	"Sanjuansaurus",
	"Sanpasaurus",
	"Santanaraptor",
	"Sarahsaurus",
	"Sarcolestes",
	"Sarcosaurus",
	"Sarmientosaurus",
	"Saturnalia",
	"Saurolophus",
	"Sauroniops",
	"Sauropelta",
	"Saurophaganax",
	"Sauroplites",
	"Sauroposeidon",
	"Saurornithoides",
	"Saurornitholestes",
	"Savannasaurus",
	"Scansoriopteryx",
	"Scelidosaurus",
	"Scipionyx",
	"Sciurumimus",
	"Scolosaurus",
	"Scutellosaurus",
	"Secernosaurus",
	"Sefapanosaurus",
	"Segisaurus",
	"Segnosaurus",
	"Seitaad",
	"Sellacoxa",
	"Serendipaceratops",
	"Shamosaurus",
	"Shanag",
	"Shantungosaurus",
	"Shanyangosaurus",
	"Shaochilong",
	"Shenzhousaurus",
	"Shidaisaurus",
	"Shixinggia",
	"Shuangmiaosaurus",
	"Shunosaurus",
	"Shuvuuia",
	"Siamodon",
	"Siamodracon",
	"Siamosaurus",
	"Siamotyrannus",
	"Siats",
	"Sibirosaurus",
	"Sigilmassasaurus",
	"Siluosaurus",
	"Silvisaurus",
	"Similicaudipteryx",
	"Sinocalliopteryx",
	"Sinoceratops",
	"Sinocoelurus",
	"Sinopeltosaurus",
	"Sinornithoides",
	"Sinornithomimus",
	"Sinornithosaurus",
	"Sinosauropteryx",
	"Sinosaurus",
	"Sinotyrannus",
	"Sinovenator",
	"Sinraptor",
	"Sinusonasus",
	"Sirindhorna",
	"Skorpiovenator",
	"Sonidosaurus",
	"Sonorasaurus",
	"Sphaerotholus",
	"Sphenospondylus",
	"Spiclypeus",
	"Spinophorosaurus",
	"Spinops",
	"Spinosaurus",
	"Spinostropheus",
	"Staurikosaurus",
	"Stegoceras",
	"Stegopelta",
	"Stegosaurides",
	"Stegosaurus",
	"Stenopelix",
	"Stokesosaurus",
	"Stormbergia",
	"Streptospondylus",
	"Struthiomimus",
	"Struthiosaurus",
	"Styracosaurus",
	"Suchomimus",
	"Sulaimanisaurus",
	"Supersaurus",
	"Suuwassea",
	"Suzhousaurus",
	"Szechuanosaurus",
	"Tachiraptor",
	"Talarurus",
	"Talenkauen",
	"Talos",
	"Tambatitanis",
	"Tangvayosaurus",
	"Tanius",
	"Tanycolagreus",
	"Tanystrosuchus",
	"Taohelong",
	"Tapuiasaurus",
	"Tarascosaurus",
	"Tarbosaurus",
	"Tarchia",
	"Tastavinsaurus",
	"Tatankacephalus",
	"Tataouinea",
	"Tatisaurus",
	"Taurovenator",
	"Taveirosaurus",
	"Tawa",
	"Tazoudasaurus",
	"Tehuelchesaurus",
	"Teinurosaurus",
	"Telmatosaurus",
	"Tendaguria",
	"Tenontosaurus",
	"Teratophoneus",
	"Tethyshadros",
	"Texacephale",
	"Texasetes",
	"Teyuwasu",
	"Thecocoelurus",
	"Thecodontosaurus",
	"Thecospondylus",
	"Theiophytalia",
	"Therizinosaurus",
	"Thescelosaurus",
	"Tianchisaurus",
	"Tianyulong",
	"Tianyuraptor",
	"Tichosteus",
	"Tienshanosaurus",
	"Timimus",
	"Timurlengia",
	"Titanoceratops",
	"Titanosaurus",
	"Tochisaurus",
	"Tonganosaurus",
	"Tongtianlong",
	"Tornieria",
	"Torosaurus",
	"Torvosaurus",
	"Tototlmimus",
	"Trachodon",
	"Traukutitan",
	"Triceratops",
	"Trigonosaurus",
	"Trimucrodon",
	"Trinisaura",
	"Troodon",
	"Tsaagan",
	"Tsagantegia",
	"Tsintaosaurus",
	"Tugulusaurus",
	"Tuojiangosaurus",
	"Turanoceratops",
	"Turiasaurus",
	"Tylocephale",
	"Tyrannosaurus",
	"Tyrannotitan",
	"Uberabatitan",
	"Udanoceratops",
	"Ugrunaaluk",
	"Ultrasaurus",
	"Unaysaurus",
	"Unenlagia",
	"Unescoceratops",
	"Unquillosaurus",
	"Urbacodon",
	"Utahceratops",
	"Utahraptor",
	"Vagaceratops",
	"Vahiny",
	"Valdoraptor",
	"Valdosaurus",
	"Variraptor",
	"Vectisaurus",
	"Velafrons",
	"Velocipes",
	"Velociraptor",
	"Velocisaurus",
	"Venenosaurus",
	"Veterupristisaurus",
	"Viavenator",
	"Vitakridrinda",
	"Vitakrisaurus",
	"Volkheimeria",
	"Vulcanodon",
	"Wakinosaurus",
	"Walgettosuchus",
	"Wannanosaurus",
	"Wendiceratops",
	"Wiehenvenator",
	"Willinakaqe",
	"Wintonotitan",
	"Wuerhosaurus",
	"Wulagasaurus",
	"Wulatelong",
	"Xenoceratops",
	"Xenoposeidon",
	"Xenotarsosaurus",
	"Xianshanosaurus",
	"Xiaosaurus",
	"Xiaotingia",
	"Xinjiangovenator",
	"Xinjiangtitan",
	"Xiongguanlong",
	"Xixianykus",
	"Xixiasaurus",
	"Xixiposaurus",
	"Xuanhanosaurus",
	"Xuanhuaceratops",
	"Xuwulong",
	"Yamaceratops",
	"Yandusaurus",
	"Yangchuanosaurus",
	"Yaverlandia",
	"Yi",
	"Yimenosaurus",
	"Yingshanosaurus",
	"Yinlong",
	"Yixianosaurus",
	"Yongjinglong",
	"Yuanmousaurus",
	"Yueosaurus",
	"Yulong",
	"Yunganglong",
	"Yunmenglong",
	"Yunnanosaurus",
	"Yurgovuchia",
	"Yutyrannus",
	"Zalmoxes",
	"Zanabazar",
	"Zapalasaurus",
	"Zapsalis",
	"Zaraapelta",
	"Zby",
	"Zephyrosaurus",
	"Zhanghenglong",
	"Zhejiangosaurus",
	"Zhenyuanlong",
	"Zhongornis",
	"Zhuchengceratops",
	"Zhuchengtyrannus",
	"Ziapelta",
	"Zigongosaurus",
	"Zizhongosaurus",
	"Zuniceratops",
	"Zuolong",
	"Zuoyunlong",
	"Zupaysaurus"
];

// Register event handlers with Alexa SDK
exports.handler = function(event, context, callback) {
    var alexa = Alexa.handler(event, context);
    alexa.APP_ID = APP_ID;
    alexa.registerHandlers(handlers);
    alexa.execute();
};

//Handles each app requests
var handlers = {
    'LaunchRequest': function () {         // Run at app launch
        this.emit('GetDinosaurIntent');
    },
    'GetDinosaurIntent': function () {     // Run when user requests a dinosaur
        var alexasdk = this;
        getJsonEventsFromWikipedia(function (summary) {
            var speechOutput = GET_FACT_MESSAGE + summary;
            if (summary.length === 0) {
                speechOutput = NO_NETWORK_MESSAGE;
            }
            alexasdk.emit(':tellWithCard', speechOutput, SKILL_NAME, summary)
        });
    },
    'AMAZON.HelpIntent': function () {     // Called when user asks for help
        var speechOutput = HELP_MESSAGE;
        var reprompt = HELP_REPROMPT;
        this.emit(':ask', speechOutput, reprompt);
    },
    'AMAZON.CancelIntent': function () {   // Called when user cancels app
        this.emit(':tell', STOP_MESSAGE);
    },
    'AMAZON.StopIntent': function () {     // Called when user exits app
        this.emit(':tell', STOP_MESSAGE);
    }
};

// Network call for returning a discription of a dinosaur randomly selected from the dinosaur list
function getJsonEventsFromWikipedia(eventCallback) {
	var index = getRandomInt(0, dinosaurList.length - 1);
    var url = urlPrefix + dinosaurList[index];

    https.get(url, function(res) {
        var body = '';

        res.on('data', function (chunk) {
            body += chunk;
        });

        res.on('end', function () {
            var stringResult = parseJson(body);
            eventCallback(stringResult);
        });
    }).on('error', function (e) {
        console.log("Got error: ", e);
    });
}

// Returns a randon integer
function getRandomInt(min, max) {
	min = Math.ceil(min);
	max = Math.floor(max);
	return Math.floor(Math.random() * (max - min)) + min;
}

// Parses the response from the dinosaur description network call in clean and complete sentences
function parseJson(inputText) {
    var text = inputText.substring(inputText.indexOf("summary")+10, inputText.indexOf("wikipedia_category"));
    text = text.slice(0, text.lastIndexOf(".") + 1);
    if (text.indexOf("(") >= 0 && text.indexOf(")") >= 0) {
        text = text.slice(0, text.indexOf("(") - 1) + text.slice(text.indexOf(")") + 1)
    }
    return text;
}

Credits

Dscn0986
Brian Cottrell

I am a software developer with a background in physics and low level programming and I am currently focused on web and mobile development.

Contact

Replications

Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Similar projects you might like

Iron-Rich Foods!
Easy
  • 47
  • 3

A necessary skill for all people with iron deficiencies. It's always hard to find foods that are rich in iron. Until now. Just ask Alexa!

Movie Quotes Trivia
Easy
  • 15
  • 1

Full instructions

Test your knowledge of great movies by matching five famous movies quotes. It will be great fun activities among famaly and friends.

Wise Quotes
Easy
  • 133
  • 3

Full instructions

More than 100 wise quotes to empower you everyday.

Wildlife Facts Skill
Easy
  • 53
  • 2

Learn more about wildlife animals with more than 200 interesting facts with this Alexa skill.

Compost Helper Alexa Skill
Easy
  • 150
  • 3

Use Alexa to find out if a household item can be added to your compost.

Ferrari Facts
Easy
  • 266
  • 4

Full instructions

learn about the most expensive cars in the world with Ferrari Facts you you will know some interesting facts that you probably didn't hear a

Add projectSign up / Login