第一步:选择操作平台
1.登录官方的应用平台:天猫精灵开放平台。
点击控制台,选择技能应用平台并点击进入。
2.验证操作。
完成必要的验证、合作协议操作后,你会看到这样的界面。
第二步:创建语音技能
1.创建技能
选中语音技能——点击创建新技能。
2.填写技能基本信息
填写技能创建的信息:技能名称和调用词
- 技能名称:展示在技能市场的技能名称,在发布时将进行唯一性检测。
- 技能属性选择: 公有技能 / 私有技能。
- 技能调用词也称为唤醒词,是用户使用这个技能所需要说的关键字。如“天猫精灵”
基本信息填好后,选择部署方式并创建技能;
技能就创建成功了。
第三步:配置语音交互模型
成功后,接着配置语音交互模型,才可进行语音对话,语音交互模型包含了意图、实体、问答三块。
意图:意图是用户使用语音技能的目的,语音技能至少要有一个意图(至少向用户提供一个功能,也可以是多个)只说调用词会进入默认意图所以有调用词的技能需要有默认意图。
1.开始创建语音交互模型
第一步,点击创建意图按钮进入创建意图页面;
第二步,设置意图名称、意图标识,并将这条意图设置为默认意图,设置好后点击提交。
第四步:配置后端服务
1.顶部导航栏中选择后端服务,并在左侧导航栏中选择服务部署。
2.单击编辑部署,选择 阿里云云原生开发 的方式,点击关联阿里云账号。
3.单击开通阿里云资源;
4.依次开通阿里云服务资源;
5.点击创建技能应用按钮;
6.选择开发语言和开发模板进行创建
这里以 Java 空白模板为例创建应用;
7.保存配置
创建应用后,点击保存按钮保存阿里云服务器配置;
8.点击前往开发,跳转云阿里开发平台;
9.进行开发
跳转到阿里云开发平台后,会自动进入 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 { @Override public 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; } }
10.提交代码
成代码编写后,要把代码提交到仓库中,不然再进来就没有了,提交步骤:点击源代码管理,然后点击提交按钮;
提交到仓库时需要填写本次提交的内容介绍;
11.进行部署
提交完成后要选择部署环境,打开 CloudIDE 左侧的 部署调试插件,进入到部署面板,选择预发环境进行部署;
12.要检查路由、函数映射
环境选择好之后,我们要检查路由、函数映射表,第一个字段是应用访问的路径,格式为:/skill-78623/entry,其中数字 67954 为智能应用平台上此应用的技能id,技能id显示在技能概览页中的基本信息表中,这个字段一般系统会默认自动填好。
13.方法说明
第二个字段表示某个文件的函数入口,如果选择Java语言, 此数据为:com.alibaba.ailabs.GenieEntry::handleRequest,表示当应用发布之后,天猫精灵这边的请求会发送到 com.alibaba.ailabs.GenieEntry类的handleRequest方法,handleRequest是从AbstractEntry类中继承的方法, 请不要重写此方法。如果选择NodeJS语言或Python语言,此数据为:index.handler,表示含义和前面类似;由于我们选的是java语言, 所以第二个字段我们要填com.alibaba.ailabs.GenieEntry::handleRequest。
14.第三个字段表示请求的类型,这里只能是post类型。
20.第三个字段表示请求的类型,这里只能是post类型。
PS: 在 部署日志 标签页可以看到部署的进度以及部署是否成功。
第五步:测试
1.在线测试
第一步,进入测试模块,打开在线测试;
第二步,输入创建技能时设置的调用词“天气说明”并发送,测试欢迎意图是否配置成功,系统回复默认欢迎语则技能测试成功;
输入创建技能时设置的调用词并发送(调用词以技能创建时的为准),本教程中以“天气小蜜”调用词为例,系统回复则表示技能部署成功。
2.真机测试
第一步,打开真机测试,并开启真机测试开关;
第二步,添加天猫精灵设备,并按照引导输入语音验证码;
第三步,添加设备成功后,通过唤醒词“天猫精灵”来唤醒音箱,然后通过您设置的技能调用词进入技能,这里以教程中的调用词“天气提示”为例,音箱回复默认欢迎语,则语音技能测试完成。