天猫精灵测评与开发案例

点此查看 所有教程、项目、源码导航

文章目录

  • 1. 背景
  • 2. 概念
    • 2.1 天猫精灵
    • 2.2 天猫精灵开放平台
    • 2.3 技能应用平台
    • 2.4 技能
    • 2.5 语音技能
  • 3. 创建技能
    • 3.1 登录
    • 3.2 创建语音技能
    • 3.3 填写技能基本信息
    • 3.4 选择开发方式
  • 4. 开发流程
    • 4.1 概述
    • 4.2 语音交互模型
    • 4.3 开发后端服务
    • 4.4 代码编辑
    • 4.5 使用Git保存源码
    • 4.6 代码部署
    • 4.7 在线测试
    • 4.8 真机测试与发布
  • 5. 小结

1. 背景

作为一个码农,程序猿,不能总沉浸在自己的世界里,也得看看外面的繁华和发展。

我时常关注阿里云开发者社区,这里经常会有一些新产品、新想法、新技能,从中我能获取一些产品、开发、测试、运维相关的思维火花。

近期开发者社区推出了天猫精灵的评测活动,正好之前我在杭州菲住布渴酒店体验过,确实有点意思,可以控制电视、灯光、窗帘,也可以跟用户聊天谈心。

但是实际上,我之前还不确定天猫精灵是否有面向开发者的开放平台,也不甚清楚此类开放平台会如何设计、接入,此次借此活动,也是对这种智慧硬件的一次了解和学习。

2. 概念

2.1 天猫精灵

如下图,天猫精灵是一个可以和用户聊天沟通的硬件产品,类似的产品还有百度的小度。可以通过语音跟它沟通,而它可以通过上面的软件应用,来控制家居设备。所以使用起来还是比较科幻的。

天猫精灵测评与开发案例

2.4 技能

对程序员来说,就是开发一个应用。但是对天猫精灵来说,就是它学会了一个新的技能。这个技能就是程序员通过程序赋予给它的。

2.5 语音技能

天猫精灵支持的技能类型比较多,包含语音技能、小程序、安卓APP应用、H5小游戏。很好很强大,不过本文我们选择最经典的语音技能进行测评。

天猫精灵测评与开发案例

3.2 创建语音技能

如下图,选择自定义技能,这样我们能享有充分的灵活度。

天猫精灵测评与开发案例

3.4 选择开发方式

首先选择熟悉的语言,这个根据个人喜好选择即可。然后选择空白模板,这样我们能更自由的发挥。

天猫精灵测评与开发案例

4.2 语音交互模型

语音交互模型我们需要定义意图和实体。意图就是天猫精灵理解我们想要干啥,这个用户想要做的事情抽象为意图。日程小秘书需要的意图如下:

很好理解,当我们使用日程小秘书时,小秘书会欢迎我们。然后小秘书还可以支持日程查询、日程添加的操作。需要注意的是,这三种操作到代码里面,会匹配welcome/query/add标识,这就是现实中的意图和代码中的字符串的对应关系了。

天猫精灵测评与开发案例
最后在日程添加意图中,关联这个实体概念。这样当用户对天猫精力说【吃饭】的时候,吃饭就会进入item这个参数了。
天猫精灵测评与开发案例
然后选择FAAS开发模式,这个模式下开发部署测试全程线上,还是比较爽快的。
天猫精灵测评与开发案例
接下来是一番操作授权,我个人感觉比较麻烦,本来此处是有若干张具体步骤的截图,我感觉意义不大就去掉了。反正此处就是各种授权、开通、同意,如下图之类的东西。
天猫精灵测评与开发案例
这个云开发平台,核心的编辑器感觉就是个VSCode。
天猫精灵测评与开发案例
我们编写核心接入类代码如下,其实很好理解,根据不同的意图和参数决定不同的行为。

另外我们将日程数据存入数据库,数据库操作使用了ApacheCommonDbUtils,这个库比较简单,封装代码如下:

/** * 数据访问 */public class WorkDao {  /**   * 新增   */  public void insert(Work work) throws Exception {    Connection conn = ConnectionUtils.getConnection();    String sql = "insert into work(token,item)values(";    Object[] params = { work.getToken(), work.getItem() };    QueryRunner runner = new QueryRunner();    runner.update(conn, sql, params);    ConnectionUtils.releaseConnection(conn);  }  /**   * 移除   */  public void deleteById(String id) throws Exception {    Connection conn = ConnectionUtils.getConnection();    String sql = "delete from work where id =;    Object[] params = { id };    QueryRunner runner = new QueryRunner();    runner.update(conn, sql, params);    ConnectionUtils.releaseConnection(conn);  }  /**   * 更新   */  public void update(Work work) throws Exception {    Connection conn = ConnectionUtils.getConnection();    String sql = "update work set token=item=where id =;    Object[] params = { work.getToken(), work.getItem(), work.getId() };    QueryRunner runner = new QueryRunner();    runner.update(conn, sql, params);    ConnectionUtils.releaseConnection(conn);  }  /**   * 获取一个   */  public Work getById(String id) throws 来源:程序员大阳
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月19日
下一篇 2022年8月19日

相关推荐