一、闲话
趁这次拥有了天猫精灵开发平台权限的机会,来根据教程学习搭建下自己的语音小助手,过程比较简单,都是可视化操作,特别适合像我这样子的新手。
二、具体操作
1、天猫精灵开放平台界面
这个页面做的还是特别好看的,主要上面介绍了aligenie的一些资料,到现在已经是5.0的版本了,可以说已经做的非常完善了,对于开发者来说是很好的体验。
2、创建语音技能
选择语音技能,点击创建新技能
创建语音技能选择自定义技能
名称可以自己填写
技能调用词就是关键词,到时候根据关键词来识别指令
3、选择开发语言
语言根据自己的能力选择,因为官方给的是java,所以我这里选择的java,模板选择空白,到时候把案例代码直接复制进去
4、创建意图
5、意图编辑
6、意图列表
7、服务部署
8、编辑部署
选择阿里云云原生开发
需要关联阿里云账号进行授权
因为我之前都开好服务了,所以这里显示都是开通,未开通的需要逐个开通
刚才这个界面也出现过了,选择java语言,新建一个空白的模板,因为官方提供了一个案例,等会直接复制过来即可
9、创建技能应用
10、DevStudio
我比较喜欢用这个DevStudio进行编辑,比在本地电脑上直接编辑代码方便,移动到对应命令上可以有相应智能化提示和解释,这点做的比较舒服
案列代码,根据需求自己修改
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;
}
}
对于天气数据,网上有很多调用接口可以获取到你所在地的实时天气数据,大家自己搜索下就可以得到如下数据。因为涉及到调用key,这里就不放具体网站了,很多数据都是可供大家进行调用的,搜索一下就解决问题
{
"code":"200",
"updateTime":"2022-04-01T11:06+08:00",
"now":{
"obsTime":"2022-04-01T11:06+08:00",
"temp":"15",
"feelsLike":"13",
"icon":"101",
"text":"多云",
"wind360":"0",
"windDir":"北风",
"windScale":"3",
"windSpeed":"18",
"humidity":"93",
"precip":"0.0",
"pressure":"1010",
"vis":"11",
"cloud":"91",
"dew":"13"
}
}
11、保存代码
点击√进行保存
12、增加注释
这里填写注释的目的是为了后面修改时自己识别,否则都不知道这一版修改了哪些内容
13、检查信息准备部署
14、确认部署信息
15、部署完成
16、在测试页面进行测试
17、设置真机测试
18、开发流程状态查看