

课程介绍
这是天猫精灵新手必看教程,第一节课主要教你如何创建一个语音技能,实现最简单的欢迎功能。
需要时间
10分钟
你会学到
- 如何创建语音技能并设定语音调用词
- 如何创建一个意图
- 如何配置后端服务
- 如何编写后端代码
- 如何部署faas服务
- 如何测试技能
带你创建「天气小蜜」语音技能
step1:登陆平台
1.登录 智能应用平台:https://iap.aligenie.com/home?platform=3.0,登陆后点击控制台,选择技能应用平台并点击进入。

2.首次登录时,您需要签署平台合作协议。

a.单击查看协议,前往签署协议页面。
b. 选中“我已阅读并同意签署《天猫精灵智能应用平台合作协议》”复选框,并单击同意协议。
3.首次登录时,您还需要完成账号认证。

a.单击立即认证,前往认证页面。
b.请根据实际情况选择认证的类型。并根据页面提示填写开发者真实信息,完成账号认证。下面以认证企业账号为例,介绍认证的操作步骤。

c.单击下一步,填写认证所需的资料。

d.单击完成,进入实人认证页面。

e.认证成功后,单击立即前往,进入企业验证页面

f.选择企业验证的方式。平台提供以下两种认证方式
- 使用支付宝企业认证方式(推荐使用)
- 上传企业说明函进行企业认证
当您无法使用支付宝企业认证时,可以通过该方式进行企业认证。此时需要联系商务走审批流程。
g.等待审核结果。
step2:创建语音技能
1.认证通过后进入技能应用平台,我们要创建一个语音技能,选中语音技能分类:点击创建技能。

2.填写技能基本信息
选中语音技能 中的 自定义技能 填写技能创建信息:技能名称和调用词
- 技能名称:展示在技能市场的技能名称,在发布时将进行唯一性检测。
- 技能属性选择 公有技能 / 私有技能。技能属性选择,建议您先参考【公有&私有】,由于我们要开发一个面向所有天猫精灵用户的应用,所以技能属性这里选择公有技能。
- 技能调用词也称为 唤醒词,是用户使用这个技能所需要说的关键字。如“天猫精灵,天气小蜜”,则使用了调用词为“天气小蜜”的技能。
填写技能调用词时系统会进行唯一性检测,截图中填写的“天气小蜜”仅仅作为范例,请您在创建技能时注意不要和范例相同或填重复过的调用词。

基本信息填好后,创建技能;

技能创建成功。

step3:配置语音交互模型
创建技能成功后,需配置语音交互模型,才可与用户进行语音对话,语音交互模型包含意图、实体、问答三块,本节课先配置意图。
首先了解下什么是意图:意图是用户使用语音技能的目的,语音技能至少要有一个意图(至少向用户提供一个功能,也可以是多个)只说调用词会进入默认意图所以有调用词的技能需要有默认意图。
了解什么是意图后,接下来开始创建语音交互模型。
第一步,点击创建意图按钮进入创建意图页面;

第二步,设置意图名称、意图标识,并将这条意图设置为默认意图,设置好后点击提交。


step4:配置后端服务
1.顶部导航栏中选择后端服务,并在左侧导航栏中选择服务部署。

2.单击编辑部署,选择 阿里云云原生开发 的方式,点击关联阿里云账号。

3.选择阿里云账号的登录方式;

4.登陆阿里云账号(如果没有阿里云账号就注册一个);

5.登陆成功后需要您签署《云开发平台服务协议》,签署之后就可以免费使用云开发平台进行服务开发了;

6.签署协议后,在团队注册页翻到页面底部,单机同意授权,授权后单机下一步;

7.完成并返回技能开发平台;

8.单击开通阿里云资源;

9.依次开通阿里云服务资源;

10.点击创建技能应用按钮;

11.选择开发语言和开发模板进行创建,这里以 Java 空白模板为例 创建应用;

12.创建应用后,点击保存按钮保存阿里云服务器配置;

13.点击前往开发,跳转云阿里开发平台;

14.跳转到阿里云开发平台后,会自动进入 CloudIDE,平台会自动生成模板代码,查看代码路径:src/main/GenieEntry.java,您可以直接在示例代码上进行开发;

示例代码:
package com.alibaba.ailabs;
import com.alibaba.ailabs.common.AbstractEntry;
import com.alibaba.da.coin.ide.spi.meta.AskedInfoMsg;
import com.alibaba.da.coin.ide.spi.meta.ExecuteCode;
import com.alibaba.da.coin.ide.spi.meta.ResultType;
import com.alibaba.da.coin.ide.spi.standard.ResultModel;
import com.alibaba.da.coin.ide.spi.standard.TaskQuery;
import com.alibaba.da.coin.ide.spi.standard.TaskResult;
import com.alibaba.fastjson.JSON;
import com.aliyun.fc.runtime.Context;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;/**
* @Description 天猫精灵技能函数入口,FC
* handler:com.alibaba.ailabs.GenieEntry::handleRequest
* @Version 1.0
**/
public class GenieEntry extends AbstractEntry {@Overridepublic ResultModel<TaskResult> execute(TaskQuery taskQuery, Context context) {context.getLogger().info("taskQuery: " + JSON.toJSONString(taskQuery));// ResultModel<TaskResult> res = new ResultModel<>();TaskResult taskResult = new TaskResult();// 从请求中获取意图参数以及参数值Map<String, String> paramMap = taskQuery.getSlotEntities().stream().collect(Collectors.toMap(slotItem -> slotItem.getIntentParameterName(), slotItem -> slotItem.getOriginalValue()));//处理名称为 welcome 的意图if ("welcome".equals(taskQuery.getIntentName())) {taskResult.setReply("欢迎使用天气小蜜,使用小蜜可以查询天气哟");//处理名称为 weather 的意图}else {taskResult.setReply("请检查意图名称是否正确,或者新增的意图没有在代码里添加对应的处理分支。");}return reply(taskResult);}/*** 结束对话的回复,回复后音箱闭麦*/private ResultModel<TaskResult> reply(TaskResult taskResult) {ResultModel<TaskResult> res = new ResultModel<>();taskResult.setExecuteCode(ExecuteCode.SUCCESS);taskResult.setResultType(ResultType.RESULT);res.setReturnCode("0");res.setReturnValue(taskResult);return res;}
}
15.完成代码编写后,要把代码提交到仓库中,不然再进来就没有了,提交步骤:点击源代码管理,然后点击提交按钮;

提交到仓库时需要填写本次提交的内容介绍;

16.提交完成后要选择部署环境,打开 CloudIDE 左侧的 部署调试插件,进入到部署面板,选择预发环境进行部署;

17.环境选择好之后,我们要检查路由、函数映射表,第一个字段是应用访问的路径,格式为:/skill-78623/entry,其中数字 67954 为智能应用平台上此应用的技能id,技能id显示在技能概览页中的基本信息表中,这个字段一般系统会默认自动填好。


18.第二个字段表示某个文件的函数入口,如果选择Java语言, 此数据为:com.alibaba.ailabs.GenieEntry::handleRequest,表示当应用发布之后,天猫精灵这边的请求会发送到 com.alibaba.ailabs.GenieEntry类的handleRequest方法,handleRequest是从AbstractEntry类中继承的方法, 请不要重写此方法。如果选择NodeJS语言或Python语言,此数据为:index.handler,表示含义和前面类似;由于我们选的是java语言, 所以第二个字段我们要填com.alibaba.ailabs.GenieEntry::handleRequest。

19.第三个字段表示请求的类型,这里只能是post类型。

20.第三个字段表示请求的类型,这里只能是post类型。

PS: 在 部署日志 标签页可以看到部署的进度以及部署是否成功。

step5:测试
1.在线测试
第一步,进入测试模块,打开在线测试;

第二步,输入创建技能时设置的调用词“天气小蜜”并发送,测试欢迎意图是否配置成功,系统回复默认欢迎语则技能测试成功;
输入创建技能时设置的调用词并发送(调用词以技能创建时的为准),本教程中以“天气小蜜”调用词为例,系统回复则表示技能部署成功。

2.真机测试
第一步,打开真机测试,并开启真机测试开关;

第二步,添加天猫精灵设备,并按照引导输入语音验证码;


第三步,添加设备成功后,通过唤醒词“天猫精灵”来唤醒音箱,然后通过您设置的技能调用词进入技能,这里以教程中的调用词“天气小蜜”为例,音箱回复默认欢迎语,则语音技能测试完成。
本节课学完了!真是太酷了!
在下一课你将会学到基础的语音交互逻辑设计以及语音交互模型的实现。我们会带你用30分钟时间,丰富天气小助手的功能,建立和用户多轮对话的能力。