使用 Actions SDK 构建适用于 Google 助理的 Action(第 1 级)

Google 助理是一款虚拟智能个人助理,借助 Google 助理开发者平台,您可以打造软件,从而为超过 10 亿台设备(包括智能音箱、手机、汽车、电视、头戴式耳机等)扩展 Google 助理的功能。用户可通过对话与 Google 助理互动,以这种方式处理各种事务,例如购买日用品或约车。作为开发者,您可以使用 Google 助理开发者平台在用户和您自己的第三方履约服务之间轻松打造并管理愉悦、高效的对话体验。

本 Codelab 介绍了关于开发适用于 Google 助理的 Actions SDK 的初级概念;您无需事先熟悉相关平台也可完成学习。在本 Codelab 中,您将构建一个适用于 Google 助理的简单 Action;当用户开始探索神秘大陆 Gryffinberg 后,该 Action 可以告知用户其运势信息。在 Actions SDK 第 2 级 Codelab 中,您可以进一步构建该 Action,根据用户输入自定义用户的运势信息。

构建内容

在本 Codelab 中,您将构建具有以下功能的简单 Action:

  • 使用问候消息回应用户。
  • 向用户提问。在用户回答问题后,您的 Action 会对用户的选择做出适当的回应。
  • 提供建议内容信息卡,用户点击该信息卡即可输入相应内容。
  • 根据用户是否为回访用户,修改问候消息。

完成本 Codelab 后,您完成的 Action 将具有以下对话流(麦克风旁边的文本表示用户的输入,而扬声器旁边的文本则表示 Action 的回应):

1c1e79902bed7230.png

18ef55647b4cb52c.png

学习内容

  • 如何在 Actions 控制台中创建项目
  • 如何使用 gactions 工具在 Actions 控制台和本地文件系统之间推送和拉取您的 Action 项目
  • 如何在用户调用您的 Action 后向其发送提示
  • 如何处理用户的输入并返回回应
  • 如何在 Actions 模拟器中测试您的 Action
  • 如何使用 Cloud Functions 编辑器实现执行方式

所需条件

您的环境中必须安装以下工具:

  • 选择一种 IDE/文本编辑器。
  • 已安装 NodeJSnpm 的终端,用于运行 shell 命令。
  • 网络浏览器,例如 Google Chrome

以下部分介绍了如何设置开发环境,以及如何创建 Actions 项目。

检查您的 Google 权限设置

如需测试您在本 Codelab 中构建的 Action,您需要启用必要的权限,以便模拟器能够访问您的 Action。

如需启用权限,请按以下步骤操作:

  1. 转到活动控件页面。
  2. 使用您的 Google 帐号登录(如果您尚未登录的话)。
  3. 启用以下权限:
  • 网络与应用活动记录
  • 网络与应用活动记录下方,选中包括 Chrome 历史记录和使用 Google 服务的网站、应用和设备上的活动记录旁边的复选框。

创建 Actions 项目

您的 Actions 项目是您的 Action 的容器。

如需为本 Codelab 创建 Actions 项目,请按以下步骤操作:

  1. 打开 Actions 控制台
  2. 点击 New project
  3. 输入 Project name,例如 actions-codelab。(该名称可用作内部参考。稍后,您可以为项目设置外部名称。)

8cd05a84c1c0a32f.png

  1. 点击 Create project
  2. What kind of Action do you want to build? 屏幕中,选择 Custom 卡片。点击 Next
  3. How do you want to build it? 屏幕中,选择 Blank project 卡片。然后,点击 Start building

保存您的 Action 的项目 ID

项目 ID 是 Action 的唯一标识符。在本 Codelab 中,您需要使用项目 ID 执行多个步骤。

如需检索您的项目 ID,请按以下步骤操作:

  1. 在 Actions 控制台中,点击右上角的三个垂直点(在此处插入图标)。
  2. 点击 Project settings

6f59050b85943073.png

  1. 复制 Project ID

关联结算帐号

如果您需要以后使用 Cloud Functions 在本 Codelab 中部署执行方式,则必须为 Google Cloud 中的项目关联结算帐号。如果您已有结算帐号,可以忽略以下步骤。

如需为您的项目关联结算帐号,请按以下步骤操作:

  1. 转到 Google Cloud Platform 结算页面
  2. 点击添加结算帐号
  3. 填写付款信息,然后点击开始免费试用提交并启用结算功能
  4. 点击页面顶部的我的项目标签页。
  5. Actions 下,点击本 Codelab 的 Actions 项目旁边的三点状图标。
  6. 点击更改结算信息
  7. 在下拉菜单中,选择您配置的结算帐号。点击设置帐号

为避免产生费用,请按照本 Codelab 末尾的“后续步骤”页面中的“清理项目”部分所述的步骤操作。

安装 gactions 命令行界面

在本 Codelab 中,您可以使用 gactions 命令行界面 (CLI) 工具,在 Actions 控制台和本地文件系统之间同步您的 Actions 项目。

如需安装 gactions CLI,请按照安装 gactions 命令行工具部分中的说明操作。

下载您的 Actions 项目

通过 Actions 控制台下载您的 Actions 项目,以开始开发您的 Action。

如需下载您的 Actions 项目,请按以下步骤操作:

  1. 如需创建新目录并切换到该目录,请运行以下命令:
mkdir myproject
cd myproject
  1. 如需将 Actions 项目的配置复制到本地文件系统,请运行以下命令:
gactions pull --project-id <projectID>

了解文件结构

您从 Actions 控制台下载的 Actions 项目以 YAML 文件结构表示。下图简要展示了文件结构:

2aefeeab7c8eb32f.png

文件结构包含以下内容:

  • actions/ - 代表您的 Actions 项目。系统会在调用您的 Action 时调用 actions.yaml,随后调用 custom/global/actions.intent.MAIN.yaml 文件。
  • custom/ - 您将在其中修改 Action 的目录。
  • global/ - 此目录包含平台自动添加到项目中的系统 intent。本 Codelab 后面会详细介绍系统 intent。
  • manifest.yaml - 包含“可传输”信息的文件;即并非特定于任何给定项目,并且可以在项目之间移动的文件。
  • settings/ - 代表 Actions 项目的设置,例如显示名、默认语言区域和类别。

用户通过调用与您的 Action 开始对话。例如,如果您的 Action 名为“MovieTime”,用户可以使用如下指令调用您的 Action:“Ok Google, talk to MovieTime”,其中“MovieTime”为显示名。如果您要将 Action 部署到生产环境,则该 Action 必须具有显示名;不过,您无需定义显示名即可测试 Action。相反,您可以在模拟器中使用指令“Talk to my test app”来调用 Action。本部分后面会详细介绍模拟器。

您必须修改主调用,定义在用户调用您的 Action 后会发生什么。

默认情况下,您的 Action 会在您的调用触发后提供通用提示(“Start building your Action by defining main invocation.”)。

在下一部分中,您可以在 custom/global/actions.intent.MAIN.yaml 文件中为主调用自定义提示。

设置主调用

您可以在 actions.intent.MAIN.yaml 文件中修改主调用提示。

如需修改 Action 在被用户调用后向用户发回的提示,请按以下步骤操作:

  1. 在文本编辑器中打开 custom/global/actions.intent.MAIN.yaml
  2. speech 字段 (Start building your action...) 中的文本替换为以下欢迎消息:A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.

actions.intent.MAIN.yaml

handler:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: A wondrous greeting, adventurer! Welcome to the mythical land of
                Gryffinberg! Based on your clothes, you are not from around these lands.
                It looks like you're on your way to an epic journey.
transitionToScene: actions.scene.END_CONVERSATION
  1. 保存文件。

在模拟器中测试主调用

Actions 控制台提供了用于测试 Action 的网页工具,也就是模拟器。接口会模拟硬件设备及其设置,让您可以与 Action 进行对话,就像该 Action 在智能显示屏、手机、音箱或 KaiOS 上运行时一样。

现在,当您调用相应的 Action 时,该 Action 应该会以您添加的自定义提示作为回应(“A wondrous greeting, adventurer!...”)

您无需更新 Actions 项目的版本,即可使用 gactions deploy preview 命令测试您的 Action。运行此命令时,您在本地文件系统中所做的任何更改都不会传播到 Actions 项目的已部署版本中,但您可以在预览版中对其进行测试。

若要在模拟器中测试 Action 的主调用,请按以下步骤操作:

  1. 如需将项目部署到 Actions 控制台以进行测试,请在终端中运行以下命令:
gactions deploy preview

您应该会看到如下输出:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. 复制提供的网址,并将其粘贴到浏览器中。
  2. 如需在模拟器中调用您的 Action,请在左上角的 Input 字段中输入 Talk to my test app,然后按 Enter 键。

656f5736af6a5a07.png

在您触发 Action 的主调用后,Google 助理会使用您的自定义欢迎消息进行回应。此时,对话会在 Google 助理使用问候语进行回应后结束。在下一部分中,您将修改 Action,让对话能够继续。

查看事件日志

进入 Actions 控制台中的 Test 标签页后,右侧面板会显示事件日志,此类日志会以事件日志形式显示对话记录。每个事件日志都会显示相应对话期间发生的事件。

您的 Action 目前有一个事件日志,它显示了用户的输入(“Talk to my test app”)和 Action 的回应。下方的屏幕截图显示了该 Action 的事件日志:

a1b748d1fcebca80.png

如果您在事件日志中点击 Talk to my test app 旁边的向下箭头,就可以看到其对应的那轮对话期间发生的事件(按时间顺序排列):

  • userInput:与用户的输入(“Talk to my test app”)对应。
  • interactionMatch:与由用户输入触发的 Action 主调用回应对应。如果您点击相应箭头来展开该行,便可以看到您为主调用添加的提示 (A wondrous greeting, adventurer!...)
  • endConversation:与在 Main invocation intent 中所选过渡(目前是结束对话)对应。您可以在本 Codelab 的下一部分详细了解过渡。

您可以通过事件日志了解 Action 的运作情况,并且在您遇到任何问题时,也可以将其作为调试 Action 的实用工具。如需查看某个事件的详细信息,请点击对应的事件名称旁边的箭头,具体如以下屏幕截图所示:

fcc389b59af5bef1.png

您已经定义了用户调用您的 Action 后会发生什么,可以构建 Action 会话的其余内容了。在继续学习本 Codelab 之前,请先熟悉以下术语,以了解 Action 对话的工作原理:

Action 可以有一个或多个场景,您必须先激活各个场景,Action 才能运行。您在本 Codelab 中构建的 Action 仅有一个名为 Start 的场景。激活场景的最常用方法是配置 Action,使得在用户输入内容与场景中的用户 intent 匹配时,相应 intent 会触发向另一个场景的过渡并激活该场景。

例如,假设有一个 Action 可以为用户提供动物知识。当用户调用该 Action 后,系统会匹配到 Main invocation intent,这个 intent 会触发向名为 Facts. 的场景的过渡。该过渡会激活 Facts 场景,继而向用户发送以下提示:Would you like to hear a fact about cats or dogs?Facts 场景中包含名为 Cat 的自定义 intent,其中包含用户在想了解与猫相关的知识时可能会说出的训练指令短语,例如“I want to hear a cat fact”或“cat”。在用户要求听取与猫相关的知识后,系统会匹配到 Cat intent,这个 intent 会触发向名为 Cat fact. 的场景的过渡。Cat fact 场景会激活包含猫相关知识的提示并将其发送给用户。

a78f549c90c3bff6.png

图 1. 使用 Actions SDK 构建的 Action 中的典型对话流。

场景、intent 和过渡共同构成对话的逻辑,并且定义了用户在您的 Action 对话中可能选择的各种路径。在下一部分中,您将创建一个场景,并定义在用户调用您的 Action 后激活该场景的方式。

从主调用过渡到场景

在本部分中,您将创建一个名为 Start 的新场景,它会向用户发送提示,以询问用户是否要了解自己的运势。您还可以添加从主调用向新的 Start 场景的过渡。

如需创建该场景并添加向该场景的过渡,请按以下步骤操作:

  1. 在文本编辑器中打开 custom/global/actions.intent.MAIN.yaml
  2. transitionToScene 字段 (actions.scene.END_CONVERSATION) 中的文本替换为以下内容:transitionToScene: Start

actions.intent.MAIN.yaml

handler:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Welcome to the mythical land of  Gryffinberg! Based on your clothes,
              you are not from around these lands. It looks like you're on your way
              to an epic journey.
transitionToScene: Start

这会告知您的 Action 将从主调用过渡为 Start 场景。

  1. 保存文件。
  2. 在终端中,在 custom 目录中创建一个新的 scenes 目录:
mkdir custom/scenes
  1. scenes 目录中创建一个名为 Start.yaml 的新文件,该文件在您的 Action 中代表 start 场景:
touch custom/scenes/Start.yaml
  1. 在文本编辑器中打开 Start.yaml
  2. 将以下代码粘贴到 Start.yaml 文件中:

Start.yaml

onEnter:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Before you continue on your quest, would you like your fortune
              told?

Start.yaml 文件代码中有一个名为 onEnter 的字段,它是在场景的生命周期中运行的第一阶段。

在此示例中,当用户首次进入 Start 场景时,提示 (Before you continue on your quest...) 会被添加到提示队列中。

添加建议内容信息卡

建议内容信息卡可以为用户提供可点击的建议内容,而您的 Action 可以将此类内容作为用户输入进行处理。在本部分中,您将添加此前配置的提示 (Before you continue on your quest, would you like your fortune told?) 下方显示的 YesNo 建议内容信息卡,以便为使用带有屏幕的设备的用户提供支持。

如需在 Start 场景的提示中添加建议内容信息卡,请按以下步骤操作:

  1. 更新 Start.yaml 中的代码以匹配以下代码段,该代码段包含用于配置建议内容信息卡的代码:

Start.yaml

onEnter:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Before you continue on your quest, would you like your fortune
              told?
        suggestions:
        - title: "Yes"
        - title: "No"
  1. 保存文件。

在模拟器中测试您的 Action

此时,您的 Action 应该从主调用过渡为 Start 场景,并询问用户是否确实要了解自己的运势。建议内容信息卡也应显示在模拟显示屏中。

如需在模拟器中测试您的 Action,请按以下步骤操作:

  1. 在终端中,运行以下命令:
gactions deploy preview

您应该会看到如下输出:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. 复制提供的网址,并将其粘贴到浏览器中。
  2. 点击 Test 以转到模拟器。
  3. 在左上角的 Input 字段中输入 Talk to my test app。然后按 Enter 键。您的 Action 应该会以 Main invocation 提示和添加的 Start 场景提示“Before you continue on your quest, would you like your fortune told?”作为回应,还会显示建议内容信息卡。

以下屏幕截图显示了该互动:

3c2013ebb2da886a.png

  1. 点击 YesNo 建议内容信息卡以回应提示。(您也可以说“Yes”或“No”,或在 Input 字段中输入 YesNo。)

在您回应提示后,您的 Action 会以一条消息作为回应,指出其无法解读您的输入:“Sorry, I didn't catch that. Can you try again?”由于您尚未配置 Action 来使其理解和回应“Yes”或“No”输入,因此该 Action 会将您的输入匹配到 NO_MATCH intent。

默认情况下,NO_MATCH 系统 intent 会提供通用回应,但您可以自定义此类回应,以向用户表明您无法理解其输入。如果无法匹配用户输入的次数达到 3 次,Google 助理就会结束用户与 Action 之间的对话。

添加 yes intent 和 no intent

现在,用户可以回应您的 Action 提出的问题了,接下来您可以配置该 Action,使其能够理解用户的回应(“Yes”或“No”)。在后面的部分中,您将创建在用户说出“Yes”或“No”后系统所匹配的自定义 intent,然后向 Start 场景添加相应 intent。

创建 yes intent

如需创建 yes intent,请按以下步骤操作:

  1. 在终端中,在 custom 目录中创建一个名为 intents 的新目录:
mkdir custom/intents
  1. intents 目录中创建一个名为 yes.yaml 的新文件。
touch custom/intents/yes.yaml
  1. 在文本编辑器中打开 yes.yaml
  2. 将包含训练指令短语的代码段粘贴到 yes.yaml 中:

yes.yaml

trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
  1. 保存文件。

yes intent 添加到 Start 场景

现在,如果用户表达“yes”intent,该 Action 便可以作出正确理解。您可以将 yes 自定义 intent 添加到 Start 场景,因为用户会回应 Start 提示(“Before you continue on your quest, would you like your fortune told?”)。

如需将此自定义 intent 添加到 Start 场景,请按以下步骤操作:

  1. 在文本编辑器中打开 custom/scenes/Start.yaml
  2. intentEventsyes 处理程序添加到 Start.yaml 文件的末尾:

Start.yaml

intentEvents:
- handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: Your future depends on the item you choose to use for your quest. Choose wisely! Farewell, stranger.
  intent: "yes"
  transitionToScene: actions.scene.END_CONVERSATION

匹配 yes intent 后,提示“Your future depends on the item you choose to use for your quest...”将会被添加到提示队列中。然后,Start 场景会过渡到 actions.scene.END_CONVERSATION 系统场景,该场景在提示队列中传递提示并结束对话。

在模拟器中测试 yes intent

此时,如果用户要听取自己的运势,您的 Action 便可以正确理解并返回适当回应了。

如需在模拟器中测试此 intent,请按以下步骤操作:

  1. 在终端中,运行以下命令:
gactions deploy preview

您应该会看到如下输出:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. 复制提供的网址,并将其粘贴到浏览器中。
  2. 点击 Test 以转到模拟器。
  3. 如需在模拟器中测试您的 Action,请在左上角的 Input 字段中输入 Talk to my test app,然后按 Enter 键。
  4. Input 字段中输入 Yes,然后按 Enter 键。或者,点击 Yes 建议内容信息卡。

f131998710d8ffd8.png

您的 Action 会回应用户,并根据其选择的辅助物告知其对应的运势。然后,您的 Action 会结束会话,因为您为 yes intent 配置了 End conversation 过渡。

创建 no intent

现在,您可以创建 no intent,以便您的 Action 在用户不需要听取其运势时正确理解并作出回应。

如需创建此 intent,请按以下步骤操作:

  1. 在终端中,在 intents 目录中创建一个名为 no.yaml 的新文件:
touch custom/intents/no.yaml
  1. 在文本编辑器中打开 no.yaml
  2. 将以下训练指令短语粘贴到 no.yaml 文件中:

no.yaml

trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
  1. 保存文件。

no intent 添加到 Start 场景

现在,如果用户表达“no”或类似于“no”的内容(例如“nope”),该 Action 便可以作出正确理解。您需要将 no 自定义 intent 添加到 Start 场景,因为用户会回应 Start 提示(“Before you continue on your quest, would you like your fortune told?”)。

如需为 Start 场景添加此 intent,请按以下步骤操作:

  1. 在文本编辑器中打开 custom/scenes/Start.yaml
  2. Start.yaml 中的 yes 处理程序下方添加以下 no 处理程序:

Start.yaml

- handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: I understand, stranger. Best of luck on your quest! Farewell.
  intent: "no"
  transitionToScene: actions.scene.END_CONVERSATION
  1. 保存文件。

在模拟器中测试 no intent

此时,您的 Action 会了解用户何时不希望了解其运势并返回相应的回应。

如需在模拟器中测试此 intent,请按以下步骤操作:

  1. 在终端中,运行以下命令:
gactions deploy preview

您应该会看到如下输出:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. 复制提供的网址,并将其粘贴到浏览器中。
  2. 点击 Test 以转到模拟器。
  3. Input 字段中输入 Talk to my test app,然后按 Enter 键。
  4. Input 字段中输入 No,然后按 Enter 键。或者,点击 No 建议内容信息卡。

c0c8b04066577eb2.png

Action 会祝用户在旅途中一帆风顺,而不会提供其运势。然后,您的 Action 会结束会话,因为您为 no intent 配置了 End conversation 过渡。

目前,您的 Action 回应是静态的;激活包含提示的场景后,您的 Action 每次都会发送相同的提示。在本部分中,您将实现包含用于构建动态对话回应的逻辑的执行方式。

您的执行方式会确定用户是回访用户还是新用户,并针对回访用户修改 Action 的问候消息。针对回访用户的问候消息会更为简短,并会确认用户的回访:“A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!”

对于本 Codelab,您可以使用 Cloud Functions 编辑器来修改和部署执行方式代码。

您的 Action 可以触发网络钩子,以将在调用期间或场景执行的特定部分中发生的事件通知您的执行方式。触发网络钩子后,您的 Action 会向执行方式发送一个包含 JSON 负载的请求,以及用于处理事件的处理程序的名称。该处理程序会执行一些逻辑并返回相应的 JSON 回应。

构建执行方式

在本部分中,您将修改执行方式,以便在回访用户和新用户调用您的 Action 后,针对这两种客户生成不同的提示。

如需向执行方式添加该逻辑,请按以下步骤操作:

  1. 在终端中,确保您位于项目的根目录中并创建一个新的 webhooks 目录:
mkdir webhooks
  1. webhooks 目录中创建一个名为 ActionsOnGoogleFulfillment.yaml 的新文件。
touch webhooks/ActionsOnGoogleFulfillment.yaml
  1. 在文本编辑器中打开 ActionsOnGoogleFulfillment.yaml
  2. greeting 处理程序和 inlineCloudFunction 内容添加到 ActionsOnGoogleFulfillment.yaml 文件中:

ActionsOnGoogleFulfillment.yaml

handlers:
- name: greeting
inlineCloudFunction:
  executeFunction: ActionsOnGoogleFulfillment

ActionsOnGoogleFulfillment.yaml 文件定义了您的网络钩子处理程序(例如 greeting 处理程序),并告知您的 Action 将 Cloud Functions 用作网络钩子端点。

  1. webhooks 目录中创建一个新的 ActionsOnGoogleFulfillment 目录:
mkdir webhooks/ActionsOnGoogleFulfillment
  1. ActionsOnGoogleFulfillment 目录中创建一个名为 index.js 的新文件。
touch webhooks/ActionsOnGoogleFulfillment/index.js
  1. 在文本编辑器中打开 index.js
  2. 将以下代码添加到 index.js

index.js

const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');

const app = conversation({debug: true});

app.handle('greeting', conv => {
 let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
 if (!conv.user.lastSeenTime) {
   message = 'Welcome to the mythical land of  Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
 }
 conv.add(message);
});

exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

此代码定义了 greeting 处理程序,用于向用户发送相应的问候语。

  1. 保存文件。
  2. ActionsOnGoogleFulfillment 目录中创建一个名为 package.json 的新文件。
touch webhooks/ActionsOnGoogleFulfillment/package.json

package.json 文件为您的网络钩子指定依赖项和其他元数据。

  1. 在文本编辑器中打开 package.json
  2. 复制此 GitHub 代码库中的代码,并将其粘贴到 package.json 文件中。
  3. 保存文件。

了解代码

您的执行方式(使用适用于 Node.js 的 Actions on Google 执行方式库)回应了来自 Google 助理的 HTTP 请求。

在前面的代码段中,您将定义 greeting 处理程序,它将检查用户之前是否已使用 lastSeenTime 属性访问过相应的 Action。如果未定义 lastSeenTime 属性,则表示用户是新用户,且会收到针对新用户的问候语。否则,该消息会确认用户为回访用户,并生成修改后的问候语。

更新主调用以触发网络钩子

现在您已经定义了 greeting 函数,可以在主调用 intent 中配置 greeting 事件处理程序,以便您的 Action 知道在用户调用您的 Action 时调用此函数。

如需配置您的 Action 以调用新的 greeting 处理程序,请按以下步骤操作:

  1. 在文本编辑器中打开 custom/global/actions.intent.MAIN.yaml
  2. actions.intent.MAIN.yaml 中的代码替换为以下代码:

actions.intent.MAIN.yaml

handler:
  webhookHandler: greeting
transitionToScene: Start
  1. 保存文件。

现在,如果您的主调用 intent 匹配,系统会调用 greeting 网络钩子处理程序。

在模拟器中测试更新后的主调用

如需在模拟器中测试您的 Action,请按以下步骤操作:

  1. 在终端中,运行以下命令:
gactions deploy preview

您应该会看到如下输出:

✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
  1. 复制提供的网址,并将其粘贴到浏览器中。
  2. 如需在模拟器中测试您的 Action,请在 Input 字段中输入 Talk to my test app,然后按 Enter 键。

由于您已在本 Codelab 中测试过 Action,因此您并非新用户,所以您会收到一条简短的问候语:“A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!...”

Actions SDK 与名为 Actions Builder 的基于网络的 IDE 可进行互操作,后者已集成到 Actions 控制台中。您可以使用 gactions push 命令,将本地文件系统推送到控制台中的 Action 草稿。gactions pushgactions deploy preview 不同,后者仅允许您在模拟器中测试您的 Action,而前者会将本地文件中的所有内容移至 Actions Builder。

Actions 控制台可直观地呈现您的 Action 配置。直观地呈现您的 Action 在开发过程中会很有用,并不会影响为测试提供的 Action 版本。

如需推送您的 Actions 项目并在 Actions 控制台中查看该项目,请按以下步骤操作:

  1. 在终端中,将您的项目推送到 Actions 控制台:
gactions push

您应该会看到如下输出:

✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
  1. 复制提供的网址,并将其粘贴到浏览器中。
  2. Actions 控制台中,点击顶部导航栏中的 Develop
  3. 点击 Scenes 旁的下拉箭头,然后点击 Start。您应会看到 Action 的 Start 场景的直观视图,如以下屏幕截图所示:

332404b148609e96.png

恭喜您!

您已掌握了使用 Actions SDK 构建适用于 Google 助理的 Actions 的基础知识。

所学内容

  • 如何在 Actions 控制台中设置 Actions 项目
  • 如何使用 Actions SDK 在本地文件系统上构建 Actions 项目
  • 如何向主调用添加提示,以便用户与您的 Action 开始会话
  • 如何使用场景、intent、过渡、建议内容信息卡和执行方式创建对话界面
  • 如何使用 Actions 模拟器测试 Action

其他学习资源

请参阅以下资源,详细了解如何构建适用于 Google 助理的 Action:

欢迎关注我们的 Twitter 帐号 @ActionsOnGoogle,及时了解我们的最新公告,还可以使用标签 #AoGDevs 发布 Twitter 微博,分享您构建的成果!

清理项目 [推荐]

为避免可能产生的费用,建议您移除不想使用的项目。如需删除您在本 Codelab 中创建的项目,请按以下步骤操作:

  1. 如需删除 Cloud 项目和资源,请完成关停(删除)项目部分中所列的步骤。
  1. 可选:如需立即从 Actions 控制台移除您的项目,请完成删除项目部分中所列的步骤。如果您未完成该步骤,系统会在大约 30 天后自动移除您的项目。

反馈意见调查

在您离开本页面前,请填写简短的调查问卷,与我们分享您的体验。