UNPKG

voxa

Version:

A fsm (state machine) framework for Alexa, Dialogflow, Facebook Messenger and Botframework apps using Node.js

201 lines 6.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const _ = require("lodash"); /* * The Game Engine interface enables your skill to receive input from Echo Buttons */ class GameEngine { static getEventsBuilder(name) { return new EventsBuilder(name); } static getDeviationRecognizerBuilder(name) { return new DeviationRecognizerBuilder(name); } static getPatternRecognizerBuilder(name) { return new PatternRecognizerBuilder(name); } static getProgressRecognizerBuilder(name) { return new ProgressRecognizerBuilder(name); } /* * Stops Echo Button events from being sent to your skill. * https://developer.amazon.com/docs/gadget-skills/gameengine-interface-reference.html#stop */ static stopInputHandler(originatingRequestId) { return { originatingRequestId, type: "GameEngine.StopInputHandler", }; } setEvents(...eventArray) { this.events = this.events || {}; this.mergeParameterArray(eventArray, this.events, EventsBuilder); return this; } setRecognizers(...recognizerArray) { this.recognizers = this.recognizers || {}; this.mergeParameterArray(recognizerArray, this.recognizers, RecognizerBuilder); return this; } /* * Configures and starts the Input Handler to send Echo Button events to your skill. * https://developer.amazon.com/docs/gadget-skills/gameengine-interface-reference.html#start */ startInputHandler(timeout, proxies) { return { events: this.events, proxies, recognizers: this.recognizers, timeout, type: "GameEngine.StartInputHandler", }; } mergeParameterArray(parameterArray, parameter, type) { _.forEach(parameterArray, (param) => { if (param instanceof type) { parameter = _.merge(parameter, param.build()); } else { parameter = _.merge(parameter, param); } }); } } exports.GameEngine = GameEngine; /* * The recognizers object contains one or more objects that represent different * types of recognizers: the patternRecognizer, deviationRecognizer, or progressRecognizer */ class RecognizerBuilder { constructor(recognizerName, type) { this.recognizers = {}; this.recognizerName = recognizerName; this.recognizers[recognizerName] = { type }; } setProperty(property) { this.recognizers[this.recognizerName] = _.merge(this.recognizers[this.recognizerName], property); } build() { return this.recognizers; } } exports.RecognizerBuilder = RecognizerBuilder; class DeviationRecognizerBuilder extends RecognizerBuilder { constructor(name) { super(name, "deviation"); } recognizer(recognizer) { this.setProperty({ recognizer }); return this; } } exports.DeviationRecognizerBuilder = DeviationRecognizerBuilder; class PatternRecognizerBuilder extends RecognizerBuilder { constructor(name) { super(name, "match"); } /* * For more information about the event report values, follow this link: * https://developer.amazon.com/docs/gadget-skills/gameengine-interface-reference.html#patternrecognizer */ anchor(anchor) { this.setProperty({ anchor }); return this; } fuzzy(fuzzy) { this.setProperty({ fuzzy }); return this; } gadgetIds(gadgetIds) { this.setProperty({ gadgetIds }); return this; } actions(actions) { this.setProperty({ actions }); return this; } pattern(pattern) { this.setProperty({ pattern }); return this; } } exports.PatternRecognizerBuilder = PatternRecognizerBuilder; class ProgressRecognizerBuilder extends RecognizerBuilder { constructor(name) { super(name, "progress"); } recognizer(recognizer) { this.setProperty({ recognizer }); return this; } completion(completion) { this.setProperty({ completion }); return this; } } exports.ProgressRecognizerBuilder = ProgressRecognizerBuilder; /* * The events object is where you define the conditions that must be met for * your skill to be notified of Echo Button input. */ class EventsBuilder { constructor(eventName) { this.events = {}; this.eventName = eventName; } setProperty(property) { this.events[this.eventName] = _.merge(this.events[this.eventName], property); return this; } meets(meets) { this.setProperty({ meets }); return this; } fails(fails) { this.setProperty({ fails }); return this; } /* * For more information about the event report values, follow this link: * https://developer.amazon.com/docs/gadget-skills/gameengine-interface-reference.html#events */ reports(reports) { this.setProperty({ reports }); return this; } shouldEndInputHandler(shouldEndInputHandler) { this.setProperty({ shouldEndInputHandler }); return this; } maximumInvocations(maximumInvocations) { this.setProperty({ maximumInvocations }); return this; } triggerTimeMilliseconds(triggerTimeMilliseconds) { this.setProperty({ triggerTimeMilliseconds }); return this; } build() { return this.events; } } exports.EventsBuilder = EventsBuilder; /* * For more information about the event report values, follow this link: * https://developer.amazon.com/docs/gadget-skills/gameengine-interface-reference.html#events */ exports.EVENT_REPORT_ENUM = { HISTORY: "history", MATCHES: "matches", NOTHING: "nothing", }; /* * For more information about the event report values, follow this link: * https://developer.amazon.com/docs/gadget-skills/gameengine-interface-reference.html#patternrecognizer */ exports.ANCHOR_ENUM = { ANYWHERE: "anywhere", END: "end", START: "start", }; //# sourceMappingURL=GameEngine.js.map