【Hour of AI】教程:Alexa 计算器
【Hour of AI】教程:Alexa 计算器乘法计算器:
https://www.bilibili.com/video/BV1hW4y1p7zx/
除法计算器:
https://www.bilibili.com/video/BV1CG411M7Pu/
1. [【Hour of AI】教程:Alexa Hello Moon](https://mc.dfrobot.com.cn/thread-314771-1-1.html?fromuid=818739)
2. [【Hour of AI】教程:Alexa Space Fact Generator 随机太空小知识](https://mc.dfrobot.com.cn/thread-314788-1-1.html?fromuid=818739)
3. [【Hour of AI】教程:Alexa Calculator 计算器](https://mc.dfrobot.com.cn/thread-314797-1-1.html?fromuid=818739)
4. [【Hour of AI】教程:Alexa Number Guessing Game 猜数字游戏](https://mc.dfrobot.com.cn/thread-315113-1-1.html?fromuid=818739)
5. [【Hour of AI】教程:Alexa Messenger 信使](https://mc.dfrobot.com.cn/thread-315213-1-1.html?fromuid=818739)
## 【Hour of AI】教程:Alexa 计算器
**难度:** 初级
**课程类型:** 教程
**学科:** 计算机科学
**年级:**
- 6~12年级
在本教程中,你将学习如何使用 MIT App Inventor 的对话式 AI 界面为 Alexa 创建自己的乘法计算器,Alexa在理解用户提出的乘法问题时告诉用户答案。
我们将制作的技能使用插槽slot来跟踪用户要求 Alexa 相乘的数字。
## 1. 增加一个skill技能
意图Intent是对语音 AI 发出的问题或命令的期望响应。本例中我们的意图是让 Alexa 向月亮问好。
a) 单击**Add**,然后单击**Skill**。

b) 在出现的弹出窗口中,输入技能调用名称**my awesome calculator**,然后点确定。

## 2. 定义插槽slot
a)创建技能后会转到技能的设计器页面。 可以看到页面左侧 Built-In 中有 **Intent** 和 **Slot** 组件:

**Designer**页面是定义技能的语音用户界面(用户与 **Alexa** 以不同的方式对话)的地方。
b)为乘法意图定义**slot插槽** 。 从 **Palette** 中取出一个 **Slot** 组件并将其拖放到 **Amazon Echo Dot** 的图像上。

你会看到一个名为 SlotA 的不可见组件 显示在 Echo Dot 图像下。 新的 Slot 组件也会出现在右侧的 Components 组件属性框中。

c)将插槽重命名为 numbOneSlot,稍后编程的时候对我们更有意义。 在“组件”框的底部,单击“rename重命名”按钮。

在弹出窗口中,在新名称文本框中输入“numbOneSlot”。 然后,单击“OK确定”。

d)在 **Properties** 框中,可以看到一个名为 **SlotType** 的下拉菜单。 打开下拉菜单并选择 **Number** ,告诉 Alexa 这个插槽类型是一个数字。

e)对另一个插槽重复相同的操作过程,将其重命名为 **numbTwoSlot**。 不要忘记将 SlotType 更改为 Number。 组件框现在应该如下所示:

## 3. 定义意图Intent
a)定义乘法意图。 首先从 **Palette** 中的 **Built-in** 抽屉中拖出一个 **Intent** 组件并将其放在 Amazon Echo Dot 的图像上。

Intent 应在 Echo Dot 和 Components 框中显示为名为 IntentA 的不可见组件。

b)将 IntentA 重命名为 multiplyIntent。 在 **Components** 框的底部,单击“Rename重命名”按钮。

在弹出窗口中,在新名称文本框中输入“multiplyIntent”。 然后单击“OK”。

d)注意可用于编辑 **multiplyIntent** 的 **Properties** 框的不同部分。
- 首先,我们有一个文本框来编辑当前为此意图定义的任何话语。

- 接下来可以看到我们之前定义的每个插槽都有按钮。 可以在输入话语时单击这些按钮将插槽插入到话语中。也可以直接键入插槽的名称。

- 再下方是一个空的区域。 在文本框输入内容并单击add后,空白区域就会显示添加的话语。

- 最后是添加Add和删除Remove按钮,用来添加和删除 Intent 中的语句。 要删除话语,只需单击要删除的话语,然后单击“删除”按钮。

## 4. 添加utterrance话语列表
a)接下来为 **multiplyIntent** 定义第一个话语。 在**属性**框顶部的文本框中,键入“What is”,然后单击 **numbOneSlot** 按钮。 **属性**框现在应该如下所示。

要完成此话语,请单击文本框中文本的末尾,然后键入“times”,然后单击 **numbTwoSlot** 的按钮。 属性框现在应该如下所示。

b)让我们尝试在不使用插槽按钮的情况下添加下一个话语。 首先单击第一个话语下方的“添加”按钮。

注意在第一个话语下方有一个新的突出显示空间。 这是编辑新话语后将出现的位置。 在顶部的文本框中,输入“What is {numbOneSlot} multiplied by {numbTwoSlot}”。 然后单击Utterance右边的Add。 属性框现在应该如下所示。

c)最后添加最后一个话语。 这句话应该是某人可能要求将两个数字相乘的类似表达方式,例如“Multiply {numbOneSlot} and {numbTwoSlot}”。
属性框现在应该看起来像这样。

我们已经完成了这项技能的 multiplyIntent! 如果你愿意,可以按照相同的步骤为涉及两个数字的另一个计算(如除法、加法或减法)定义 Intent。 也可以仅使用乘法意图继续。
这是我们技能的完整语音用户界面 (VUI)! 现在可以继续定义 Alexa 来响应我们的意图。
## 5. 定义第一个Intent事件处理器
a)为了定义 Intent Handlers,先转到 Blocks 页面。

打开 **Voice** 抽屉。 你会注意到所有最初用于定义插槽和意图的块都不见了! 这是因为我们现在在逻辑界面来定义 VUI。

接下来可以看到 Slot 和 Intent 组件有自己的块抽屉。 这主要是为了让 Alexa Skill 界面更类似于常规的 App Inventor 界面。

b)现在定义 **Intent Handlers**。 打开 **multiplyIntent** 的抽屉,拖出 **when multiplyIntent.spoken** 块。

c)接下来打开 **Voice** 抽屉并将 **say** 块拖到 **when multiplyIntent.spoken** 块中。

d)接下来打开 **Text** 抽屉并拖出一个 **join** 块,将它拼接到 **say** 块。


e)单击 **join** 块上的**蓝色齿轮**,在弹出窗口中,将 3 个字符串块拖到连接块中现有 2 个字符串块的下方。


f)打开 **numbOneIntent** 抽屉并将 **numbOneIntent.value** 块拖出到 **join** 块的第一个插槽。

g)接下来打开 **text** 抽屉并将一个空文本块拖出到 **join** 块的第二个插槽。 在文本块中输入“ times ”。 一定不要忘记times两边的空格!


h)点击 **numbTwoSlot** 抽屉并将 **numbTwoSlot.value** 块拖出到 **join** 块的第三个插槽。

i)在 **join** 块的第四个插槽位置添加另一个文本块,并输入文本 **“ is definitely equal to ”**。 不要忘记前后的空格! 这里用“definitely”以区别于 Alexa 的内置语音计算器,确保测试时能够调用自己的 Skill。 代码块现在应该是这样的:

j)在最后的插槽进行计算! 打开 **math** 抽屉并将 **乘法** 块拖出到 **join**块最后一个插槽位置。


k)右键单击 **join** 块第一个位置的 **numbOneSlot.value** 块并选择**复制**。 将其放入**乘法**块的第一个位置。 对 **numbTwoSlot.value** 块重复相同的过程,并将其放入乘法块的第二个位置。

代码块应该如下所示:

我们已经完成了 **multiplyIntent** 函数! 如果你之前在界面设计中添加了更多自己的意图,请按照类似过程为的所有意图创建函数。
## 6. 更新技能
我们的新计算器技能现已完成! 让我们将其发送到亚马逊并进行测试。
因为我们使用了批量生成的学生账号,因此无需登录亚马逊开发者账号即可使用其人工智能服务。点击页面右侧窗口下方的的 **Send Updates** 将代码发送给亚马逊。其中 **Sending code to Amazon** 和 **Building skill** 的步骤会比较耗时。

## 7. 测试技能
a)当显示 "Your skill is ready to test",说明技能更新成功,底部的文本框是可用状态。

(注:如果界面是深灰色的,则可能是utterance编辑的有语法错误导致无法完成技能更新)
b)输入“alexa ask my awesome calculator what is three times five”(或任何其他你想相乘的两个数字),看看她如何回应! 对话框应该看起来像这样。

c)你还可以尝试通过语音进行测试,方法是单击“麦克风”按钮开始说话,并在结束说话后再次单击它!
**注意:使用麦克风输入会有一个问题,Alexa会将乘法识别为 * 号,因为星号是符号,不是自然语言,所以Alexa是无法进行正常回应的。**

**同样在进行除法操作时也是一样,Alexa会将除法识别为 / ,也无法正常回应。**

恭喜! 你完成了“我的计算器”教程的编程并学习了插槽的使用方法!
请在附件中下载原始文件。
页:
[1]