Brian Cottrell
Published © Apache-2.0

Dino List

When asked, Dino List will randomly present you with a dinosaur species and provide a brief description.

EasyShowcase (no instructions)4 hours184
Dino List

Things used in this project

Story

Read more

Code

index.js

JavaScript
AWS Lambda function for Dino List
/**
 * Dino List
 */

/**
 * App ID for the skill
 */
var APP_ID = 'amzn1.ask.skill.a340ffac-473b-4ab5-8ae2-13184fe7f4bd';

var https = require('https');

/**
 * The AlexaSkill Module that has the AlexaSkill prototype and helper functions
 */
var AlexaSkill = require('./AlexaSkill');

/**
 * URL prefix to download history content from Wikipedia
 */
var urlPrefix = 'https://api.idolondemand.com/1/api/sync/querytextindex/v1?apikey=66c1a05f-e956-426f-a0e0-2c2f3756423f&max_page_results=1&summary=quick&text=';

/**
 * Variable defining number of events to be read at one time
 */
var paginationSize = 3;

/**
 * Variable defining the length of the delimiter between events
 */
var delimiterSize = 2;

/**
 * DinosaurSkill is a child of AlexaSkill.
 * To read more about inheritance in JavaScript, see the link below.
 *
 * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript#Inheritance
 */
var DinosaurSkill = function() {
    AlexaSkill.call(this, APP_ID);
};

// Extend AlexaSkill
DinosaurSkill.prototype = Object.create(AlexaSkill.prototype);
DinosaurSkill.prototype.constructor = DinosaurSkill;

DinosaurSkill.prototype.eventHandlers.onSessionStarted = function (sessionStartedRequest, session) {
    console.log("DinosaurSkill onSessionStarted requestId: " + sessionStartedRequest.requestId
        + ", sessionId: " + session.sessionId);

    // any session init logic would go here
};

DinosaurSkill.prototype.eventHandlers.onLaunch = function (launchRequest, session, response) {
    console.log("DinosaurSkill onLaunch requestId: " + launchRequest.requestId + ", sessionId: " + session.sessionId);
    getWelcomeResponse(response);
};

DinosaurSkill.prototype.eventHandlers.onSessionEnded = function (sessionEndedRequest, session) {
    console.log("onSessionEnded requestId: " + sessionEndedRequest.requestId
        + ", sessionId: " + session.sessionId);

    // any session cleanup logic would go here
};

DinosaurSkill.prototype.intentHandlers = {

    "GetFirstEventIntent": function (intent, session, response) {
        handleFirstEventRequest(intent, session, response);
    },

    "GetNextEventIntent": function (intent, session, response) {
        handleNextEventRequest(intent, session, response);
    },

    "AMAZON.HelpIntent": function (intent, session, response) {
        var speechText = "With Dino List, you can learn fatcs about various species of dinosaur. For example, you could say find me a dinosaur, or you can say exit.";
        var repromptText = "Would you like me to find a dinosaur?";
        var speechOutput = {
            speech: speechText,
            type: AlexaSkill.speechOutputType.PLAIN_TEXT
        };
        var repromptOutput = {
            speech: repromptText,
            type: AlexaSkill.speechOutputType.PLAIN_TEXT
        };
        response.ask(speechOutput, repromptOutput);
    },

    "AMAZON.StopIntent": function (intent, session, response) {
        var speechOutput = {
                speech: "Goodbye",
                type: AlexaSkill.speechOutputType.PLAIN_TEXT
        };
        response.tell(speechOutput);
    },

    "AMAZON.CancelIntent": function (intent, session, response) {
        var speechOutput = {
                speech: "Goodbye",
                type: AlexaSkill.speechOutputType.PLAIN_TEXT
        };
        response.tell(speechOutput);
    }
};

/**
 * Function to handle the onLaunch skill behavior
 */

function getWelcomeResponse(response) {
    // If we wanted to initialize the session to have some attributes we could add those here.
    var cardTitle = "Welcome to Dino List";
    var repromptText = "With Dino List, you can learn fatcs about various species of dinosaur. For example, you could say find me a dinosaur, or you can say exit.";
    var speechText = "<p>Would you like me to find a dinosaur?</p>";
    var cardOutput = "Would you like me to find a dinosaur?";
    // If the user either does not reply to the welcome message or says something that is not
    // understood, they will be prompted again with this text.

    var speechOutput = {
        speech: "<speak>" + speechText + "</speak>",
        type: AlexaSkill.speechOutputType.SSML
    };
    var repromptOutput = {
        speech: repromptText,
        type: AlexaSkill.speechOutputType.PLAIN_TEXT
    };
    response.askWithCard(speechOutput, repromptOutput, cardTitle, cardOutput);
}

/**
 * Gets a poster prepares the speech to reply to the user.
 */
function handleFirstEventRequest(intent, session, response) {
    var repromptText = "Would you like me to find you a dinosaur?";
    var cardContent = "";
    var cardTitle = "First dinosaur.";

    getJsonEventsFromWikipedia(function (summary) {
        var speechText = "";
        if (summary.length == 0) {
            speechText = "There is a problem connecting to the internet at this time. Please try again later.";
            cardContent = speechText;
            response.tell(speechText);
        } else {
            cardContent = summary;
            speechText = "<p>" + summary + "</p> ";
            speechText = speechText + "<p>Would you like me to find another dinosaur?</p>";
            var speechOutput = {
                speech: "<speak>" + speechText + "</speak>",
                type: AlexaSkill.speechOutputType.SSML
            };
            var repromptOutput = {
                speech: repromptText,
                type: AlexaSkill.speechOutputType.PLAIN_TEXT
            };
            response.askWithCard(speechOutput, repromptOutput, cardTitle, cardContent);
        }
    });
}

/**
 * Gets a poster prepares the speech to reply to the user.
 */
function handleNextEventRequest(intent, session, response) {
    var repromptText = "Would you like me to find you a dinosaur?";
    var cardContent = "";
    var cardTitle = "Next dinosaur.";
    getJsonEventsFromWikipedia(function (summary) {
        var speechText = "";
        if (summary.length == 0) {
            speechText = "There is a problem connecting to the internet at this time. Please try again later.";
            cardContent = speechText;
            response.tell(speechText);
        } else {
            cardContent = summary;
            speechText = "<p>" + summary + "</p> ";
            speechText = speechText + "<p>Would you like me to find another dinosaur?</p>";
            var speechOutput = {
                speech: "<speak>" + speechText + "</speak>",
                type: AlexaSkill.speechOutputType.SSML
            };
            var repromptOutput = {
                speech: repromptText,
                type: AlexaSkill.speechOutputType.PLAIN_TEXT
            };
            response.askWithCard(speechOutput, repromptOutput, cardTitle, cardContent);
        }
    });
}

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_(dinosaur)",
	"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",
	"Khetranisaurus",
	"Kileskus",
	"Kinnareemimus",
	"Kol_(dinosaur)",
	"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_(dinosaur)",
	"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_(dinosaur)",
	"Melanorosaurus",
	"Mendozasaurus",
	"Mercuriceratops",
	"Meroktenos",
	"Metriacanthosaurus",
	"Microceratus",
	"Microcoelus",
	"Microhadrosaurus",
	"Micropachycephalosaurus",
	"Microraptor",
	"Microvenator",
	"Minmi_(dinosaur)",
	"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_(dinosaur)",
	"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_(dinosaur)",
	"Tambatitanis",
	"Tangvayosaurus",
	"Tanius",
	"Tanycolagreus",
	"Tanystrosuchus",
	"Taohelong",
	"Tapuiasaurus",
	"Tarascosaurus",
	"Tarbosaurus",
	"Tarchia",
	"Tastavinsaurus",
	"Tatankacephalus",
	"Tataouinea",
	"Tatisaurus",
	"Taurovenator",
	"Taveirosaurus",
	"Tawa_(dinosaur)",
	"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_(dinosaur)",
	"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"
];

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);
    });
}

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

function parseJson(inputText) {
    var text = inputText.substring(inputText.indexOf("summary")+10, inputText.indexOf("wikipedia_category"));
    return text.slice(0, text.lastIndexOf("."));
}

// Create the handler that responds to the Alexa Request.
exports.handler = function (event, context) {
    // Create an instance of the HistoryBuff Skill.
    var skill = new DinosaurSkill();
    skill.execute(event, context);
};

Credits

Brian Cottrell

Brian Cottrell

7 projects • 7 followers
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

Comments