开发者学堂课程【AI语音技能云开发实践-1024程序员节创造营公益课:【小百科实战 】以小百科技能为例,走一个完整实践流程】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/897/detail/14312
【小百科实战 】以小百科技能为例,走一个完整实践流程
目录
一、 小百科技能创建以及使用流程
二、 问答
一、小百科技能创建以及使用流程
首先创建新技能,选择自定义技能,填写技能名称,调用词,选择阿里云云开发。
创建一个后端服务,关联阿里云账号,
创建技能运用选择JAVA语言,选择刚刚自己填的名称。点击保存,前往开发。
然后进行部署点击预发环境进行部署
进行测试测试版后打开真机测试
package com, alibaba.ailabs;
import. java. uti
l
.Arrays;
import .java . util.LinkedList;
import. java. util.List;
import .java. util.Hap;
import .java. util.Random;
import. java.util. concurrent. ConcurrentHashMap;
import con. alibaba. ailabs. connon.AbstractEntry;
import con. alibaba.da. coin. ide . spi.neta. ExecuteCode; inport con. alibaba. da. coin. ide. spi. neta.ResultType;
import con. alibaba.da.coin. ide . spi. standard.ResutHodel; inport con.alibaba.da. coin. ide. spi. standard.TaskQuery: inport con.alibaba.da.coin. ide . spi. standard.Taskiesult; inport con.alibaba. fastjson.JSON;
import con.aliyun.fc. runtine.Context;r
public class GenieEntry extends AbstractEntry
private static final Map-String, LinkedListeInteger USER
_
MAP . neM ConcurrentHasMapo(); private static final List-String a KNOMLEDGE;
private static Random random . neu Random();
@Override
p
ublic ResultModel<TaskResult> execute(TaskQuery taskQuery,Context context){
c
ontext.getLogger().info(“taskQuery:”+ JSON.toJSONString(taskQuery));
S
tring userId = taskQ
u
ery.getRequesData().get(“userOpenId”);
userId = userId == null ? “testUser” :userId;
LinkedList<Integer> list = USER_MAP.get(userId);
//欢迎意图 或 用户缓存数据为空
if
(welcone".equatsltaskouery. getIntentNanel)) || list null)
list = new LinkedList<>();
int randomIndex = random.nextInt{KNOWLEDGE.
size
()};
list.addLast( randomIndex) ;
USER MAP. put{userId,list}:
return intentchangeReply(KNOWLEDGE. get(randomIndex)):
下一个意图,随机选择一个内容回复,并将 index 追加到用户数据的 LinkedList 集合最后
i
f (“next”.equals(taskQuery.getIntentName())){
i
nt randomIndex = random.nextInt{KNOWLEDGE.size()};
l
ist.addLast{randomIndex};
r
eturn intentChangeReply(KNOWLEDGE.get(randomIndex));
}
上一个意图,将用户数据的 LinkedList 集合中最后一个 index 移除,并返回该 index 的内容。
首先要判断集合内是否有元素,没有则不需要移除
i
f (“prev”.equals(taskQ
u
ery.getIntentname())){
if(list.size()>0){
部署完毕后打开测试页面
打开真机测试
点击添加设备
对天猫精灵说:打开技能测试
然后输入验证码,点击绑定设备,绑定成功
对天猫精灵说:打开地理百科知识
然后天猫精灵会对后端的内容反馈到前端
二、问答
问答专区:
问:定制版的天猫精灵是不可以改唤醒词(定制版的天猫精灵和天猫精灵没有区别)
答:天猫精灵的语速和情感不可以控制
问:能不能让小朋友思考五秒中能在回复的前半句后半句之间通过代码控制实现真的slip五秒
答:如果你想要非常精准的话不可以因为从你的设备到服务端这里是存在延迟的。你无法精准的去控制那个延迟的五秒的时间太短了如果真的想实现五秒钟,只有设备倒计时,那个才精准。
问:立体播放是不是很容易断开,断裂成两台天猫精灵
答:需要试用一下才能看出
问:地图是不是自动生成的
答:是的,模板是为了让大家更简单使用创建一个技能,很多事情会自动完成,减轻负担。
问:任务完成以后得到的是一个什么样的天猫精灵
答:不是一个待频的天猫精灵,而是一个无频的天猫精灵。
问:代码是内置进去的吗
答:对。提供的模板里面自带意图以及代码,方便使用
问:定时功能如何实现
答:定时功能需要用后端去实现,需要使用推送,推送能力暂时没有对个人端进行开放。
问:可以设置闹钟吗
答:可以设置闹钟,它是天猫精灵自带的能力,可以自行设置闹钟。
问:可以定时触发别的任务吗
答:可以
问:定制化精灵和公共产品的区别是什么
答:定制化可以是定制化桌面或者定制化内部的功能,他们所产生的需求不一样,公共产品是面向大众的产品,所具备的能力和定制化产品是不同的,具体的需要自行了解。
问:创建意图是直接套用模板吗
答:创建的意图要看是否适用于自己的意图,如果适用可以直接套用,如果不适用,可以进行新建以及相关修改的操作
问:智能家居在天猫精灵的范围内吗
答:不在,智能家居是另外一个平台的内容
问:测试无频的天猫精灵,他的会话周期是怎么样的,说退出是结束吗
答:如果说退出是会结束的,如果不说退出的话,会在一个周期时间内自动退出
问:天猫精灵的语速和情感能控制吗
答:语速和情感不能进行控制
问:天猫精灵的底层是 linux 吗
答:天猫精灵的底层有很多的系统,不只 linux
问:会话的默认周期是多长,会提醒用户即将结束吗
答:会话的默认周期是一个默认的值,不会提醒用户结束会话