資料介紹
描述
關(guān)于
Find the Button 是一款簡單的游戲,卻提供了驚人的樂趣!在這個游戲中,一個玩家隱藏一個回聲按鈕,另一個玩家去找到它。這對小孩子來說特別有趣!我兩歲的兒子喜歡跑來跑去,從閃爍的燈光中找出按鈕的位置。
要玩游戲,您只需在隱藏或找到它時按一下按鈕即可。每個動作有 30 秒的時間,以努力提高游戲的速度和節(jié)奏。
啟動技能并啟動后,整個游戲循環(huán)只需一個按鈕即可操作!無需語音!您當然可以隨時尋求幫助。
此外,由于這是一項不明確依賴于播放按鈕顏色的技能,您可以隨時禁用和啟用按鈕燈。我為那些可能對閃光燈敏感的人加入了這個功能,但在我這樣做之后我意識到它也大大增加了找到按鈕的挑戰(zhàn)。
執(zhí)行
我使用 Typescript 和 ask-sdk v2 來提高我的技能,并將我的代碼托管在 AWS Lambda 上。
我喜歡盡可能地劃分我的代碼,所以我的處理程序索引文件總是相當簡單:
import { SkillBuilders } from 'ask-sdk';import { RequestHandlers, ErrorHandlers } from './handlers';import { RequestInterceptors } from './request-interceptors';import { ResponseInterceptors } from './response-interceptors';const skillBuilder = SkillBuilders.custom();export const handler = skillBuilder .addRequestInterceptors(...RequestInterceptors) .addRequestHandlers(...RequestHandlers) .addErrorHandlers(...ErrorHandlers) .addResponseInterceptors(...ResponseInterceptors) .lambda();
我有處理程序和攔截器的索引文件,所以我可以像這樣同時導入所有處理程序。這是 RequestHandlers 索引文件:
import { RollCallStateRequestHandlers } from './RollCallState';import { GenericRequestHandlers, GenericErrorHandlers } from './Stateless';import { HideButtonStateRequestHandlers } from './HideButtonState';import { FindButtonStateRequestHandlers } from './FindButtonState';import { GameOverStateRequestHandlers } from './GameOverState';import { LaunchStateRequestHandlers } from './LaunchState';export const RequestHandlers = [ ...LaunchStateRequestHandlers, ...RollCallStateRequestHandlers, ...HideButtonStateRequestHandlers, ...FindButtonStateRequestHandlers, ...GameOverStateRequestHandlers, ...GenericRequestHandlers];export const ErrorHandlers = [ ...GenericErrorHandlers];
我將所有可能的意圖分配給執(zhí)行狀態(tài),然后以這種方式將它們分成文件夾。這是我的處理程序目錄的結(jié)構(gòu):
每個狀態(tài)都有處理程序,需要根據(jù)狀態(tài)執(zhí)行特定操作。例如,AMAZON.HelpIntent 處理程序(認證所需的處理程序)需要根據(jù)您在技能中的位置說出不同的內(nèi)容,并且始終需要以問題結(jié)束。由于基本行為始終相同(唯一可以保證在不同狀態(tài)的幫助處理程序之間發(fā)生變化的是Alexa所說的),我創(chuàng)建了一個通用的 HelpIntentHandler 類,我對其進行擴展并且只將狀態(tài)傳遞到其中。由于我按狀態(tài)名稱對所有語音消息進行排序,處理程序只需將messages[this.state].Help()傳遞給speak調(diào)用即可給出響應(yīng):
import { HandlerInput, ResponseBuilder } from "ask-sdk";import { MyRequestHandler } from "./MyRequestHandler.class";import { GadgetController } from "../../utils";export class HelpIntentHandler extends MyRequestHandler { constructor(private state: string) { super(); } public canHandle(handlerInput: HandlerInput): boolean { const request = handlerInput.requestEnvelope.request; const state = handlerInput.attributesManager.getSessionAttributes().state; return state === this.state && request.type === 'IntentRequest' && request.intent.name === 'AMAZON.HelpIntent'; } protected updateSessionAttributes(handlerInput: HandlerInput) { this.setSessionAttribute('hasBeenAskedAQuestion', true); this.removeSessionAttribute('inputHandlerId'); this.removeSessionAttribute('handlerStartTime'); this.saveSessionAttributes(); } protected createResponse(handlerInput: HandlerInput): ResponseBuilder { const messages = this.getRequestAttribute('messages');; const flashingDisabled = this.getSessionAttribute('flashingDisabled'); const buttonId = this.getSessionAttribute('buttonId'); let response = handlerInput.responseBuilder .speak(messages[this.state].Help()) .addDirective(GadgetController.stopButtonDownAnimation()) .addDirective(GadgetController.stopButtonUpAnimation()) .addDirective(GadgetController.stopDefaultAnimation()) .withShouldEndSession(false); if (!flashingDisabled) { response = response .addDirective(GadgetController.createButtonDownAnimation(undefined, 'FF0000')) .addDirective(GadgetController.createButtonUpAnimation(undefined, 'FF0000')) .addDirective(GadgetController.createHelpAnimation(buttonId)); } return response; }}
您可能會注意到 HelpIntentHandler 擴展了一個名為 MyRequestHandler 的類。這是我創(chuàng)建的一個類,它封裝了所有處理程序共有的行為,包括設(shè)置您可能已經(jīng)注意到我在幫助處理程序中調(diào)用的方法、setSessionAttrribute 、removeSessionAttribute、getRequestAttribute等。這些方法和其他方法我已經(jīng)寫過,允許我以更方便的方式使用handlerInput中包含的attributesManager 。
我還編寫了實用程序類GadgetController和GameEngine,以幫助簡化兩個按鈕 API 的交互,因為它們不直觀。我假設(shè)亞馬遜會在某個時候發(fā)布這樣的按鈕 API 實用程序類;現(xiàn)在,我為使用我所構(gòu)建的東西感到自豪和高興。
總而言之,使用這些很棒的工具,將AMAZON.HelpIntent處理程序添加到您的狀態(tài)之一就像下面這樣簡單:
import { HelpIntentHandler } from "../classes/HelpIntentHandler.class";import { STATES } from "../../data/states";export class RollCallHelpHandler extends HelpIntentHandler { constructor() { super(STATES.RollCall); }}
。
?
?
?
- 大紅色按鈕開源構(gòu)建
- 如何來尋找鑰匙的開源項目
- 航空天氣按鈕開源分享
- 一款帶有按鈕的游戲開源分享
- 13鍵按鈕鋼琴開源分享
- 按鈕逃跑開源硬件
- 打動按鈕開源硬件
- 按鈕檢查器開源分享
- NED按鈕開源分享
- 帶按鈕的警燈開源分享
- 用于IL街機按鈕的LED板開源分享
- 第四個開源項目分析——無刷電機驅(qū)動入門
- labview的按鈕控件匯總 356次下載
- 開源項目
- 關(guān)于分區(qū)無法找開修復工具下載 5次下載
- 關(guān)于FPGA的開源項目介紹 1161次閱讀
- 如何使用Github高效率的查找項目 568次閱讀
- 優(yōu)秀的IC/FPGA開源項目:偽紅外圖像處理 1949次閱讀
- 尋找開源硬件成功的觸發(fā)器 636次閱讀
- 怎么上手 PR 流程?如何開始參與開源項目? 1470次閱讀
- 選擇開源項目的重要因素 2122次閱讀
- 控制按鈕的結(jié)構(gòu)和符號_控制按鈕的分類 1.4w次閱讀
- 全年開源項目的盤點和總結(jié) 3231次閱讀
- 基于Altium Designer的OSHw開源項目 3609次閱讀
- 2018 年 2 月份 GitHub 上最熱門的開源項目 4554次閱讀
- 開發(fā)者不可錯過的開源項目—人工智能篇 6184次閱讀
- Python機器學習開源項目分析過程中的見解和趨勢 703次閱讀
- FAST:基于FPGA的SDN交換機開源項目(一) 4531次閱讀
- 急停按鈕工作原理_急停按鈕電氣符號_急停按鈕型號介紹 12.2w次閱讀
- 11個機器學習開源項目 2767次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多