如何在一个小时内为Amazon Echo构建Trivia游戏

很长时间以来,与计算机的通信是通过物理设备上的用户界面进行的:在键盘上编写命令或点击或单击图标。 用自然语言与您的计算机对话只是科幻小说中发生的事情。

但是世界在变化,语音用户界面最终进入了我们的家庭和办公室,模糊了计算和现实生活之间的界限。

Amazon Echo和为其提供支持的语音服务Alexa是这项新技术的首批示例。

在本教程中,我们将使用Alexa Skills Kit , AWS Lambda和Amazon的一些模板源代码来创建琐事游戏,可以使用Amazon Echo设备或任何支持Alexa的设备(例如Amazon Fire TV,Echo)来玩点或Amazon Tap。

在完成本教程之后,您将对创建Alexa的新技能有很好的基本了解,并准备参与探索语音驱动用户体验的新领域。

快速架构概述

Alexa技能(一种语音驱动的Alexa应用程序)由两部分组成:

  • 在Amazon Developer Portal中定义的技能   通过将用户说要与游戏进行交互的短语(例如“开始驯鹿游戏”)链接到应用程序的逻辑,这就是将一切联系在一起的原因。
  • 每当用户向技能发出命令时都会调用的Web服务 该服务可以在任何响应基于JSON的API的安全Web服务器上运行。

在本教程中,我们将在AWS Lambda上运行Web服务,该服务可响应事件执行代码,从而为开发人员节省了维护服务器的麻烦。 Lambda还无缝链接到Alexa Skills Kit,这使其成为运行Alexa Skills代码的出色工具。

我们将服务器功能实现为Node.js模块,因此,要完成本教程,您需要对JavaScript有基本的了解。 具备Node.js经验者优先,但绝对不需要完成本教程。

1.创建Lambda函数

让我们开始通过设置AWS Lambda函数来运行其业务逻辑来构建游戏。

步骤1:AWS Lambda入门

要使用Lambda,您首先需要一个Amazon Web Services (AWS)帐户。

如果您已经有一个帐户,请单击页面右上角的“ 登录到控制台 ”以开始使用。

如果您是新用户,则会看到一个不同的链接,即Create a AWS Account 单击链接,然后按照页面上的说明注册免费会员帐户。

如何在一个小时内为Amazon Echo构建Trivia游戏_第1张图片

注册期间,您需要输入有效的信用卡信息。 但请放心,除非您的使用超出免费使用级别,否则您无需付费,这对Lambda而言意味着每月有100万个免费请求和多达320万秒的 计算 时间” ,远远超过了本教程并测试其功能。

完成注册并登录AWS控制台后 ,您可以为您的账户激活Lambda。

首先,检查页面的右上角以确认您使用的是美国东部(弗吉尼亚北部)地区。

然后,在服务列表中,选择Lambda

如何在一个小时内为Amazon Echo构建Trivia游戏_第2张图片

如果这是您第一次使用该工具,则会看到以下屏幕,其中包含有关您可以使用该工具的一些信息。

单击立即开始

如何在一个小时内为Amazon Echo构建Trivia游戏_第3张图片

步骤2:配置Lambda函数

由于尚未创建任何Lambda函数,因此UI在“ 新建函数”向导中启动。 首先,它显示了一个蓝图列表,以及各种常见用例的Lambda示例配置。

我们将从头开始构建琐事游戏,因此向下滚动并单击页面底部的“ 跳过”按钮。

如何在一个小时内为Amazon Echo构建Trivia游戏_第4张图片

向导的下一步是“ 配置功能 ”:

如何在一个小时内为Amazon Echo构建Trivia游戏_第5张图片

输入有关您的新Lambda函数的一些信息:

如何在一个小时内为Amazon Echo构建Trivia游戏_第6张图片
  • 名称 :为功能选择一个描述性名称。 该名称尚未向Alexa用户公开,因此您无需担心在Lambda帐户之外使其具有唯一性。 只需提出一些描述性的内容,即可帮助您识别AWS Lambda控制台中的功能。 在示例中,我们将使用MyTriviaGame ,但您可以选择任何喜欢的东西。
  • 描述 :此字段是可选的,用于记录您的工作。 如果需要,可以输入“我的第一个Trivia游戏”之类的内容
  • 运行时 :用于运行代码的服务器语言。 AWS Lambda支持Node.js,Java和Python。 在本教程中,我们将使用Node.js。

在页面的下一步,您将看到一个用于输入函数代码的编辑器。

不过,在开始之前,请向下滚动并配置其余选项:

如何在一个小时内为Amazon Echo构建Trivia游戏_第7张图片
  • 处理程序 :指定Lambda在运行代码时应调用JavaScript函数,格式为. 使用内联编辑器时,代码另存为index.js 正如我们将很快看到的,琐事游戏中的handler函数称为handler 因此,要使用该功能,请输入index.handler
  • 角色 :运行Lambda函数时要使用的IAM安全角色。 在下拉列表中选择“ 基本执行角色 ”以创建一个新角色。 如果您以前使用过Lambda,则可能具有一个名为lambda_basic_execution的角色。 在这种情况下,您可以使用现有的。

将显示一个用于配置角色的新窗口或标签。 如果没有任何反应,请确保将浏览器设置设置为允许弹出窗口,然后重试。

如何在一个小时内为Amazon Echo构建Trivia游戏_第8张图片

无需更改这些默认值。 单击“ 允许”以创建新的IAM规则并返回到上一页。 还要将“ 高级设置”中的字段保留为默认值。

然后,准备好配置,然后放入代码。

步骤3:添加JavaScript代码

定义Lambda函数时,您可以直接在Amazon Lambda界面的嵌入式编辑器中编写代码,也可以将其作为zip文件上传。 内联编辑器当前的最大容量为20KB,因此对于更大的功能,或者如果您需要将代码拆分为多个文件(例如,如果使用库),则使用zip文件方法。

但是,这次我们不会创建任何复杂的东西,因此可以使用内联编辑器。

复制亚马逊“驯鹿游戏”示例技能的源代码,并将其粘贴到代码编辑器中。 驯鹿游戏是一个完整的琐事游戏实现,您可以将其自由用作自己游戏的模板。

如何在一个小时内为Amazon Echo构建Trivia游戏_第9张图片

在此步骤的其余部分中,我们将遍历琐事游戏代码的主要部分,以了解它如何与我们稍后将在教程中创建的Alexa Skills Kit配置进行交互,并为您提供一些入门指南自行探索和定制代码。

JavaScript代码以数据结构(模板源代码中的第18-265行)开头,该数据结构包含琐事游戏的问题。 每个琐事问题由一个问题和一个至少包含四个选项的数组组成:正确答案后接至少三个错误答案:

/**

 * When editing your questions pay attention to your punctuation. Make sure you use question marks or periods.

 * Make sure the first answer is the correct one. Set at least 4 answers, any extras will be shuffled in.

 */

var questions = [

    {

        "Reindeer have very thick coats, how many hairs per square inch do they have?": [

            "13,000",

            "1,200",

            "5,000",

            "700",

            "1,000",

            "120,000"

        ]

    },

    {

        "The 1964 classic Rudolph The Red Nosed Reindeer was filmed in:": [

            "Japan",

            "United States",

            "Finland",

            "Germany"

        ]

    },

   

    // ...

];

自定义琐事游戏时,请用自己的问题代替:添加至少20个,但最好增加多个。 一个相当不错的数字将是100个问题。 另外,请记住,正确的答案始终是第一位的。

接下来,在问题之后,在第267-305行中 ,您将找到我们在上一步中指定的处理程序函数。 每当Alexa Skills Kit向Lambda函数发送请求时,都会调用该函数handler

该函数有两个参数:

  • event将包含一个带有有关请求信息的对象。
  • context将表示Lambda函数的状态(例如,在函数超时之前还剩下多少时间)。 上下文参数还用于将响应发送回调用方。

有关更多信息, 请参阅AWS Lambda文档 。

该函数的外观如下:

// Route the incoming request based on type (LaunchRequest, IntentRequest,

// etc.) The JSON body of the request is provided in the event parameter.

exports.handler = function (event, context) {

    try {

        console.log("event.session.application.applicationId=" + event.session.application.applicationId);



        /**

         * Uncomment this if statement and populate with your skill's application ID to

         * prevent someone else from configuring a skill that sends requests to this function.

         */



//     if (event.session.application.applicationId !== "amzn1.echo-sdk-ams.app.05aecccb3-1461-48fb-a008-822ddrt6b516") {

//         context.fail("Invalid Application ID");

//      }



        if (event.session.new) {

            onSessionStarted({requestId: event.request.requestId}, event.session);

        }



        if (event.request.type === "LaunchRequest") {

            onLaunch(event.request,

                event.session,

                function callback(sessionAttributes, speechletResponse) {

                    context.succeed(buildResponse(sessionAttributes, speechletResponse));

                });

        } else if (event.request.type === "IntentRequest") {

            onIntent(event.request,

                event.session,

                function callback(sessionAttributes, speechletResponse) {

                    context.succeed(buildResponse(sessionAttributes, speechletResponse));

                });

        } else if (event.request.type === "SessionEndedRequest") {

            onSessionEnded(event.request, event.session);

            context.succeed();

        }

    } catch (e) {

        context.fail("Exception: " + e);

    }

};

278-280行 (此代码段中的12-14)上,您会发现一个注释掉的if结构。 需要进行此检查以防止除即将配置的技能以外的其他技能调用Lambda函数。

现在,将代码保持原样。 在本教程的后面,一旦您创建了Alexa技能并为其指定了唯一的ID,请返回此检查并将第278行的示例应用程序ID替换为新的ID。 然后,取消注释代码以使其使用。

来自Alexa Skills Kit的每个请求都有一个类型,该类型在event.request.type传递。

总共有三种请求类型,服务需要分别对它们进行响应:

  • LaunchRequest :在用户启动技能时发送。 该示例代码在onLaunch上调用助手函数来初始化游戏,选择问题并发送第一个问题以及欢迎消息。
  • SessionEndedRequest :当用户通过说“退出”,暂时不响应或出现错误停止使用技能时发送。 该示例代码调用了helper函数onSessionEnded ,该函数目前仅是一个占位符,不执行任何操作。
  • IntentRequest :当用户说出映射到意图的命令时发送。 该示例代码将调用辅助函数onIntent

亚马逊的文档说明:

“ [A] n 意向表示满足用户语音请求的高级操作。意向可以具有称为插槽的参数,这些参数收集满足用户请求所需的其他信息。”

当用户说出命令时,Alexa会将其转换为文本,并将其与应用程序可以理解的短语列表进行比较。 每个短语都映射到一个意图定义,因此您的代码不必担心解析来自用户的自由格式输入,但是可以依靠这些意图来组织与用户的通信。

您很快就会看到如何为您的技能指定意图,但首先,让我们看一下onIntent函数,以了解游戏如何处理意图。

您可以在源代码的第327-371行找到该函数:

/**

 * Called when the user specifies an intent for this skill.

 */

function onIntent(intentRequest, session, callback) {

    console.log("onIntent requestId=" + intentRequest.requestId

        + ", sessionId=" + session.sessionId);



    var intent = intentRequest.intent,

        intentName = intentRequest.intent.name;



    // handle yes/no intent after the user has been prompted

    if (session.attributes && session.attributes.userPromptedToContinue) {

        delete session.attributes.userPromptedToContinue;

        if ("AMAZON.NoIntent" === intentName) {

            handleFinishSessionRequest(intent, session, callback);

        } else if ("AMAZON.YesIntent" === intentName) {

            handleRepeatRequest(intent, session, callback);

        }

    }



    // dispatch custom intents to handlers here

    if ("AnswerIntent" === intentName) {

        handleAnswerRequest(intent, session, callback);

    } else if ("AnswerOnlyIntent" === intentName) {

        handleAnswerRequest(intent, session, callback);

    } else if ("DontKnowIntent" === intentName) {

        handleAnswerRequest(intent, session, callback);

    } else if ("AMAZON.YesIntent" === intentName) {

        handleAnswerRequest(intent, session, callback);

    } else if ("AMAZON.NoIntent" === intentName) {

        handleAnswerRequest(intent, session, callback);

    } else if ("AMAZON.StartOverIntent" === intentName) {

        getWelcomeResponse(callback);

    } else if ("AMAZON.RepeatIntent" === intentName) {

        handleRepeatRequest(intent, session, callback);

    } else if ("AMAZON.HelpIntent" === intentName) {

        handleGetHelpRequest(intent, session, callback);

    } else if ("AMAZON.StopIntent" === intentName) {

        handleFinishSessionRequest(intent, session, callback);

    } else if ("AMAZON.CancelIntent" === intentName) {

        handleFinishSessionRequest(intent, session, callback);

    } else {

        throw "Invalid intent";

    }

}

如您所见,大多数功能是一个if..else结构,该结构将请求中的意图名称与游戏接受的一组意图进行比较。 然后,根据意图名称,它调用匹配的游戏功能。

例如,当游戏收到意图名称为AnswerIntent的请求时,它将知道该请求是当前问题的答案,并调用函数handleAnswerRequest进行处理。

步骤4:保存Lambda函数

由于这是有关为支持Alexa的设备而非游戏开发创建技能的教程,因此我们不会更深入地研究游戏的逻辑。 但是现在您应该对从哪里开始戳探自己的代码有了一些想法。

向下滚动到页面末尾,然后单击“ 下一步”以保存配置。

在向导的最后一步,您将看到Lambda函数设置的概述。 检查一切看起来正确,然后单击创建功能

如何在一个小时内为Amazon Echo构建Trivia游戏_第10张图片

现在已创建Lambda函数。

如果需要从向导更改任何选项,则可以在“ 配置”选项卡上进行更改。

如何在一个小时内为Amazon Echo构建Trivia游戏_第11张图片

步骤5:定义如何触发Lambda函数

现在您已经创建了函数并将其代码放置到位,是时候指定如何调用它了。 我们将通过添加事件源来做到这一点。

首先,单击“ 事件来源”选项卡。

如何在一个小时内为Amazon Echo构建Trivia游戏_第12张图片

在此选项卡上,配置完成后,您将找到为此Lambda函数设置的事件源的列表。 单击添加事件源链接以添加一个。

将打开一个用于选择事件源类型的弹出窗口:


选择Alexa技能套件 然后点击提交

这就是使Lambda函数侦听Alexa Skills Kit中的事件所需的所有配置。

现在,“ 事件源”选项卡上列出了新的事件源

如何在一个小时内为Amazon Echo构建Trivia游戏_第13张图片

注意右上角带有标签ARN的标识符。 您将很快使用它来配置Alexa Skill以调用正确的Lambda函数。

现在,让我们定义技能。

2.在Amazon Developer Portal中设置技能

现在,您已经将琐事游戏的逻辑放在适当的位置,并将该功能配置为根据Alexa Skills Kit的要求执行。

剩下的就是创建技能,以便您和您的用户可以使用支持Alexa的实际设备(例如Amazon Echo)与代码对话。

为此,我们将使用Amazon Developer Portal。

步骤1:创建一个Amazon开发人员帐户

首先注册一个开发人员门户帐户。

单击Amazon Developer页面右上角的登录或创建免费帐户 首先,您将看到默认的Amazon登录名。 使用它来创建一个全新的帐户或使用您现有的Amazon帐户(例如,与注册AWS时使用的帐户相同)进行登录。

如何在一个小时内为Amazon Echo构建Trivia游戏_第14张图片

如果您以前从未使用过开发人员门户,则将要求您输入有关您公司的一些信息并接受应用程序分发协议。 您可以使用此帐户为Amazon Marketplace创建的任何应用程序之间共享此信息。

最后,在最后一步中,注册流程会询问您有关付款的信息 当前,Alexa Skills不能出售或购买,因此,如果您仅打算开发Alexa Skills,请对两个问题均选择“ 否” ,以跳过任何与获利相关的设置步骤。 如果您决定稍后通过应用程序获利,则始终可以在相关时返回到设置。

如何在一个小时内为Amazon Echo构建Trivia游戏_第15张图片

点击保存并继续

现在,您已注册并准备添加您的第一个技能。

步骤2:添加您的第一个Alexa技能

登录开发人员控制台后 ,导航至Alexa Skills Kit页面:首先,单击顶部菜单上的Apps&Services ,然后在子菜单中选择Alexa

如何在一个小时内为Amazon Echo构建Trivia游戏_第16张图片

在此页面上,您将看到以下选项:


通过单击其入门按钮选择Alexa Skills Kit

在显示的屏幕中,您将找到已建立的所有Alexa技能:

如何在一个小时内为Amazon Echo构建Trivia游戏_第17张图片

该列表仍然为空,因此请单击添加新技能以使用五步向导开始定义您的第一个技能 ,该向导将引导您一直发布该技能,以便其他Alexa用户可以找到并使用它。

首先,在“ 技能信息”选项卡上,输入一些基本信息以识别您的新技能。

如何在一个小时内为Amazon Echo构建Trivia游戏_第18张图片
  • 技能类型选择“自定义交互模型”,因为您将在定义交互模型的地方创建自定义技能。 您可以在此处了解有关Alexa技能不同类型的更多信息。
  • 名称 :技能的描述性名称。 发布技能后,这就是潜在用户会看到的名称。 在示例中,Amazon使用Reindeer Games ,但是您应该选择自己的东西,因为该名称已经被使用。
  • 调用名称 :用户想要告诉Alexa执行这项技能时将使用的名称,例如“ Alexa,打开驯鹿游戏” 请注意,它不必与技能名称相同。 确定调用名称时,请使用Echo设备测试您的想法,以确保您选择的名称易于Alexa识别。 这样,您可以确保您的用户将能够激活您的技能而不会造成任何额外的麻烦。

信息到位后,单击“ 下一步”

请注意,如果有错误,您以后随时可以回来编辑此信息。 保存该步骤之后,您还可以通过返回到该步骤来找到该技能的应用程序ID (因此,您可以在JavaScript代码中使用该ID来验证请求,如前所述)。

步骤3:定义互动模型

交互模型是用户与启用了Alexa的设备(例如Amazon Echo)进行对话的链接与我们之前设置的Lambda函数之间的链接。 在某种程度上,它是我们的语音驱动软件的用户界面定义。

该模型由一个Intent Schema组成,该Intent Schema定义了技能使用的Intent集,Intent参数(称为SlotsUtterances) ,用户会说这些短语执行Intent Schema中定义的其中一个Intent。

如何在一个小时内为Amazon Echo构建Trivia游戏_第19张图片

意向架构

将以下代码复制并粘贴到标记为Intent Schema的文本字段中:

{

  "intents": [

    {

      "intent": "AnswerIntent",

      "slots": [

        {

          "name": "Answer",

          "type": "LIST_OF_ANSWERS"

        }

      ]

    },

    {

      "intent": "AnswerOnlyIntent",

      "slots": [

        {

          "name": "Answer",

          "type": "LIST_OF_ANSWERS"

        }

      ]

    },

    {

      "intent": "DontKnowIntent"

    },

    {

      "intent": "AMAZON.StartOverIntent"

    },

    {

      "intent": "AMAZON.RepeatIntent"

    },

    {

      "intent": "AMAZON.HelpIntent"

    },

    {

      "intent": "AMAZON.YesIntent"

    },

    {

      "intent": "AMAZON.NoIntent"

    },

    {

      "intent": "AMAZON.StopIntent"

    },

    {

      "intent": "AMAZON.CancelIntent"

    }

  ]

}

查看数据结构,您会注意到列表中定义的意图名称如何与我们在本教程前面介绍JavaScript代码中的意图名称匹配。 例如,第一个意图AnswerIntent是映射到该功能的那个意图,该功能检查用户的答案是否正确。

有关设计语音界面的更多信息,请参阅Alexa Skills Kit文档 。

插槽

尽管大多数意图只是标识符,仅带名称,但其中有两个指定参数,称为插槽。

仍在查看AnswerIntent ,请注意,该intent定义了一个参数类型Answer ,其插槽类型为LIST_OF_ANSWERS

LIST_OF_ANSWERS是自定义插槽类型,因此我们必须在配置中指定它。

点击添加插槽类型 ,然后输入以下信息:

如何在一个小时内为Amazon Echo构建Trivia游戏_第20张图片
  • 输入类型 :插槽类型的名称,由Intent Schema引用。 输入LIST_OF_ANSWERS
  • 输入值 :插槽的可接受值,每行一个值。 输入14数字,每行一个,以允许用户通过说出正确答案的数字来回答问题。

然后单击“ 确定”

现在,让我们回到JavaScript并查找一个名为isAnswerSlotValid的函数( 第599-603行 ),以查看该函数如何使用该插槽来检索用户的答案:

function isAnswerSlotValid(intent) {

    var answerSlotFilled = intent.slots && intent.slots.Answer && intent.slots.Answer.value;

    var answerSlotIsInt = answerSlotFilled && !isNaN(parseInt(intent.slots.Answer.value));

    return answerSlotIsInt && parseInt(intent.slots.Answer.value) < (ANSWER_COUNT + 1) && parseInt(intent.slots.Answer.value) > 0;

}

在这里,您可以看到intent对象包含一个名为slots的属性,用于传递Intent Schema中定义的任何参数。

在这种情况下, Answer只有一个。 因此,通过查看intent.slots.Answer.value ,该函数可以查看用户选择的答案,并检查它是否是当前问题的正确答案。

话语样本

最后,要完成交互模型,您需要定义Sample Utterances ,用户可以说出这些语句来调用模式中指定的意图。

如何在一个小时内为Amazon Echo构建Trivia游戏_第21张图片

在文本字段中,使用格式 每行输入一个短语。 要包含参数槽,请使用{Answer} 然后,当用户说这句话,Alexa的会分析它,并调用该服务通过在匹配意向,为解析值Answer插槽。

首先插入以下示例话语。 然后,您可以继续添加任意数量的语音。 实际上,可以提出的短语(相关的)越多越好。

AnswerIntent the answer is {Answer}

AnswerIntent my answer is {Answer}

AnswerIntent is it {Answer}

AnswerIntent {Answer} is my answer

AnswerOnlyIntent {Answer}



AMAZON.StartOverIntent start game

AMAZON.StartOverIntent new game

AMAZON.StartOverIntent start

AMAZON.StartOverIntent start new game



DontKnowIntent i don't know

DontKnowIntent don't know

DontKnowIntent skip

DontKnowIntent i don't know that

DontKnowIntent who knows

DontKnowIntent i don't know this question

DontKnowIntent i don't know that one

DontKnowIntent dunno

有了这些话语之后,例如,当用户说两个是我的答案”时, Alexa将向Lambda函数发送一个IntentRequest ,将AnswerIntent作为意图传递,并将2作为Answer插槽的值传递。

单击下一步保存您的交互模型。 构建交互模型可能需要一两分钟,因此请花一些时间。 然后,构建完成后,就可以配置Alexa技能了。

步骤4:配置您的Alexa技能

在“配置”选项卡上,输入一些信息以配置您的技能并定义负责其逻辑的Web服务。

  • 端点 :执行技能功能的方法。 我们的代码位于AWS Lambda,因此请选择Lambda ARN。 然后,在文本字段中输入我在本教程第一部分末尾指出的标识符。
  • 帐户关联 :选择“否”。

信息到位后,单击“ 下一步” 您已经准备好开始测试您的新Alexa技能!


3.测试琐事游戏

测试新Alexa技能的最佳方法是在实际的Echo设备上玩琐事游戏,您也可以使用添加新技能流程下一步中的工具,在浏览器中测试该技能。

步骤1:在模拟器中测试游戏

在测试页面上,您将找到两个测试工具:


  1. 语音模拟器可用于测试Alexa讲任何句子的方式。 例如,这在为琐事游戏设计问题时很有用:如果语音模拟器中的问题听起来不正确,请重试并将其替换为有问题的版本。
  2. Service Simulator会测试该技能的功能,就像您使用的是实际启用了Alexa的设备一样。 使用此工具,您可以键入语音,并通过Alexa Skills Kit查看您的应用程序如何对此做出响应。

因此,让我们使用Service Simulator对游戏进行测试。

在“ 输入发言”文本框中,键入:

open reindeer games

然后,单击其下方的“ 问驯鹿游戏”按钮。

测试工具使用您的交互模型来解析命令,然后向技能的Lambda函数发出请求。

如果一切顺利,您将在命令框下方看到JSON请求和响应:


在左侧,您将看到Alexa Skills Kit发送给Lambda函数的请求,而在右侧,您的代码将如何响应。

现在,您可以分析JSON响应,或者要获得更真实的Echo体验,请单击“ 侦听”按钮以收听Alexa为您说出响应。

听到问题后,请尝试回答。 选择您在上一步中指定的一种发声格式,然后在“ 输入讲话”文本字段中输入

例如:

the answer is four

请注意,您必须将数字写为单词而不是实际数字4。

你得到正确的答案了吗? 继续使用不同的发音和流量变化进行测试,直到您确信该应用程序可以按预期运行为止,并且您对它的工作方式有了很好的了解。

如果出了什么问题,并且您从服务器收到无效的响应,则可能需要检查一些常见错误,如示例代码的开发人员所列出的:

  • 您是否已将Lambda函数的正确ARN复制到开发人员门户中的Skill中?
  • 您使用的调用名称正确吗? 也许您将其更改为与驯鹿游戏不同的东西,并且仍在使用示例名称进行测试?
  • 您是说启动,启动还是打开?
  • 您确定您的帐户中没有其他具有相同调用名称的技能吗?
  • 具体来说,对于此模板,您至少需要七个问题和答案才能使业务逻辑起作用。

步骤2:在装置上测试游戏

正如我们在上一步中看到的那样,在线工具与测试应用程序的逻辑和交互模式的实际设备一样好。

但是,这种测试方法不会向您显示Alexa能够很好地理解和解析这些话语。 因此,如果您要创建计划发布的技能,那么在提交技能之前,还可以使用设备而不是仅使用这些在线工具进行一些最终测试。

Amazon Alexa认证团队还将在接受您的技能推向市场之前进行彻底的测试。 如果您的技能尚未准备好通过认证,他们将向您发送其他反馈,以使您了解所需的编辑,并帮助您准备发布的技能。

要在Echo设备上测试游戏,请首先使用您用于在Amazon Developer Portal上注册开发人员帐户的电子邮件地址注册该设备 。 一旦完成,您就可以像真正的最终用户一样使用该技能。

有关更多测试说明,请参见Alexa文档。

4.发布您的Alexa技能

当您的技能准备好迎接黄金时段时,您可以继续将其发布给全世界。

但是,不要按原样发布示例应用程序。

取而代之的是,使用模板和您在本教程中学到的内容作为惊人的新技能的基础,使游戏自己制作。 在AWS Lambda编辑器中修改代码以替换问题,向技能配置添加新的话语,并可能进行一些其他修改,以适合您的琐事游戏版本。

然后,在“ 测试”选项卡上,一旦您对自己的应用程序有信心,请单击“ 下一步”转到进行该技能发布的最后两个步骤

如何在一个小时内为Amazon Echo构建Trivia游戏_第22张图片

在“ 发布信息”选项卡上,根据需要尽可能详细地描述该技能,以使新用户可以轻松地找到您的技能,了解它的工作原理,为什么值得一试,以及如何使用它。 这是吸引新用户的唯一机会!

该图标还是重要的营销元素。 潜在的用户应该会注意到并对此感到好奇。 另外,请确保仅上传您有权使用的图像。

在编辑数据的任何时候,您都可以通过单击保存并在Alexa Companion App中预览技能的描述页面来保存更改。 当技能生效时,也会在此处显示说明。

仔细检查各个字段,并密切注意说明。 在上面的屏幕截图中,您可以从Amazon的Reindeer Games模板中看到示例值。

如果使用这些值的变体,请记住将示例短语中的 “驯鹿游戏”替换为技能的调用名称。

测试说明仅对Amazon Alexa认证团队可见。 您只能提到:“我正在使用基于Reindeer Games代码示例的Trivia技能模板。”

然后,准备就绪后,单击“ 下一步”

如何在一个小时内为Amazon Echo构建Trivia游戏_第23张图片

在这最后一步,您将回答有关游戏隐私选项的几个问题。

对于基于本教程的琐事游戏,请为“是/否”均选择“ ”:该技能不允许用户花钱或收集用户信息。

隐私政策URL使用条款URL是可选的。

当您认为游戏已准备就绪时,请点击提交以供验证 然后等待来自Alexa Skills团队的输入:您将收到进度电子邮件,并可能会收到一些有关如何提高技能的建议。

而且,如果一切顺利,您的琐事游戏将在不久之后供用户试用Amazon Echo或任何支持Alexa的设备!

下一步是什么?

您现在已经实现了您的第一个Alexa技能,并且应该对构建模块的构建块和过程有很好的理解。 但这仅仅是开始。

深入研究 ,想出使用语音界面的新方法,或向现有Web应用程序添加语音界面。 语音驱动应用程序市场才刚刚起步,仍然有许多未使用的想法供您实施。

玩弄未来吧!

创建Alexa技能并免费获得Envato Tuts的三个月+

您想免费获得我们包含750多个视频课程的广泛图书馆吗? 如果是这样,那么您很幸运。 亚马逊将为2016年3月31日至2016年5月31日期间发布Alexa技能的前500名读者免费提供三个月的Envato Tuts +订阅。

阅读有关限时优惠的更多信息 ,以及如何提交技能以接收三个月的免费订阅!

翻译自: https://code.tutsplus.com/tutorials/how-to-build-a-trivia-game-for-amazon-echo-in-under-an-hour--cms-26140

你可能感兴趣的:(如何在一个小时内为Amazon Echo构建Trivia游戏)