springboot项目接入天猫精灵语音功能

目录
  • 1、创建语音技能
  • 2、一个SpringBoot项目
  • 3、后端部署
  • 4、测试

最近工作需要使用到天猫精灵的语音功能,大体是通过呼叫对应的“调用词”实现携带参数,然后调用我项目中的接口,以实现对应的业务。所以在此简单的记录下使用过程 实际上:天猫精灵的官方文档记录的也很详细

重点参见自定义接入

1、创建语音技能

去创建

创建一个意图

先简单填入一个单轮对话,此时我设置了默认意图。所以我对天猫精灵说

天猫精灵 热水用完了 (调用词) 或 天猫精灵 热水用完了 吃了没 (调用词+单轮对话)

都调用的是这个意图

创建实体,对于实体的创建,只有你在如下情况需要用到

天猫精灵 热水用完了 {今天}的天气 (调用词)+ 单轮对话<包含数据> 天猫精灵 热水用完了 放一首{周杰伦}的歌曲 天猫精灵 热水用完了 我要去{19R}楼

像如上这些情况,考虑到{}中的数据是要作为参数传递给后端服务来进行操作的。所以需要创建对应实体。实体的作用就是为了在{}插槽的位置将你口述语音识别的内容转化为符合实体中设定的值的内容。

当然你也可以引用公共的实体(长度,任意数等),这里的@floor写的时候不需要加@,这个标识可以作为后面单论对话的插值,如我要去@{floor}楼

这里也创建一个带参的意图,创建单论对话的时候要选择“模板”

部署后端服务,可以为意图单独绑定服务,这里测试方便就绑定同一服务。这里的服务部署地址就是你为这个意图写的controller的路径,当然得是公网上的。我们先下载认证文件,将认证文件放到我们的springboot项目下,表示这个技能可与这个web service配对 文档指向3

这里除了放在路径下,也可以直接写一个controller,如下。如果后面认证失败,可以试试

@PostMapping("/aligenie/6523cc2653ef3a0fed8证书.txt")
public String authentication(){
    return "Jfc4Z4Ur15JwUBuvUQD5wg7Nu8+l+HscqYlfofbyJdZPKKvjJdxxxxxxxBH+L5";//证书内容
}

2、一个SpringBoot项目

导入官方提供的依赖 文档指向1

<dependency>
    <groupId>com.alibaba.da.coin</groupId>
    <artifactId>semantic-execute-meta</artifactId>
    <version>1.1.18-REALEASE</version>
</dependency>

便于操作,我就直接再控制层中写代码 , 大家可以直接去文档指向2查看官方提供的简单示例和呼叫天猫精灵时产生的请求头和请求正文。参照请求正文的格式,我们可以从传递过来的taskQuery取得正文中的任何数据

@RestController
@RequestMapping("/genie")
@Slf4j
public class GenieController {

    @PostMapping("/getGenieMsg")
    public ResultModel<TaskResult> bindingBuilding(@RequestBody String taskQuery) {
        log.info("天猫精灵测试 : leading:" + taskQuery);

        TaskQuery query = MetaFormat.parseToQuery(taskQuery);

        Map<String, String> requestData = query.getRequestData();
        log.info("requestData:" + requestData.toString());

        List<SlotEntity> slotEntities = query.getSlotEntities();
        if (slotEntities.size() > 0) {
        	log.info("slotEntities:" + slotEntities.get(0).getStandardValue());
    	}

		//返回数据
        ResultModel<TaskResult> resultModel = new ResultModel<TaskResult>();
        TaskResult result = new TaskResult();
        resultModel.setReturnCode("0");
        result.setReply("测试成功");
        result.setExecuteCode(ExecuteCode.SUCCESS);
        result.setResultType(ResultType.RESULT);
        resultModel.setReturnValue(result);
        return resultModel;
    }
}

然后将服务跑起来,采用花生壳的内网穿透将服务部署到公网上,这么用来测试很方便。不会可以参见这篇文章

3、后端部署

继续回到天猫精灵的控制台,将公网服务器地址加上Controller路径填上去,点击保存的时候他会判断你的web service有没有认证文件,如果点击报错报错,可以检查一下 检查指向1

关于服务器SSL证书可参见 文档指向4

4、测试

后端返回数据
2021-12-04 21:13:06.796  INFO 5388 --- [nio-8091-exec-2] c.a.s.demo.controller.GenieController    :
天猫精灵测试 : leading:{
				"sessionId":"79c799a7-d4ee-495e-b472-0effa1c23fa3",
				"utterance":"热水用完了",
				"requestData"{}, //非真机,没有数据
				"botId":114376,
				"domainId":63502,
				"skillId":84340,
				"skillName":"TIAMTEst",
				"intentId":123759,
				"intentName":"天猫精灵测试",
				"slotEntities":[], //没有传参
				"requestId":"20211204211305435-225488739",
				"device":{},
				"skillSession":{
					"skillSessionId":"ae3fa617-ecf7-4c90-a2ac-8ba05038a24e",
					"newSession":true
				},
				"context":{
					"system":{
						"apiAccessToken":""
					}
				}
			}
2021-12-04 21:13:06.796  INFO 5388 --- [nio-8091-exec-2] c.a.s.demo.controller.GenieController    :
requestData:{}

2021-12-04 21:29:51.463  INFO 5388 --- [nio-8091-exec-7] c.a.s.demo.controller.GenieController    :
天猫精灵测试 : leading:{
				"sessionId":"206b0ee1-c4bf-4834-9caa-571960f2a9fc",
				"utterance":"热水用完了上K2楼",
				"requestData":{},
				"botId":114376,
				"domainId":63502,
				"skillId":84340,
				"skillName":"TIAMTEst",
				"intentId":123760,
				"intentName":"传参测试",
				"slotEntities":[
						{"intentParameterId":95268,
						"intentParameterName":"floor1",
						"originalValue":"K2",
						"standardValue":"k2",
						"liveTime":0,
						"createTimeStamp":1638624590055,
						"slotName":"floor1:floor",
						"slotValue":"k2"
						}],
				"requestId":"20211204212949987-504243894",
				device":{},
				"skillSession":{
					"skillSessionId":"1e66de8b-3c89-43c4-8af2-0536edda3f83",
					"newSession":false},
				"context":{"system":{"apiAccessToken":""}}}
2021-12-04 21:29:51.464  INFO 5388 --- [nio-8091-exec-7] c.a.s.demo.controller.GenieController    :
requestData:{}
2021-12-04 21:29:51.464  INFO 5388 --- [nio-8091-exec-7] c.a.s.demo.controller.GenieController    :
slotEntities:k2

然后就可以通过传递过来的设备号,参数等信息进行业务逻辑代码的编写

到此这篇关于springboot项目接入天猫精灵的文章就介绍到这了,更多相关springboot天猫精灵内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot项目接入Nacos的实现步骤

    前言 项目中没有使用nacos官方提供的方式使用SpringBoot的集成方式来进行集成,而是使用了Alibaba Spring Cloud的依赖包进行集成. 原因是因为官网提供的SpringBoot集成方式中,同时使用配置中心和服务发现功能,会使得服务发现功能配置的部分属性冲突不生效.最直接的就是配置中心和服务发现功能不可以配置2个不同的namespace,会默认选择使用配置中心中配置的namespace作为服务发现的namespace. 另外一点就是可以很好的和Spring的注解兼容,无需额

  • springboot项目接入天猫精灵语音功能

    目录 1.创建语音技能 2.一个SpringBoot项目 3.后端部署 4.测试 最近工作需要使用到天猫精灵的语音功能,大体是通过呼叫对应的"调用词"实现携带参数,然后调用我项目中的接口,以实现对应的业务.所以在此简单的记录下使用过程 实际上:天猫精灵的官方文档记录的也很详细 重点参见自定义接入 1.创建语音技能 去创建 创建一个意图 先简单填入一个单轮对话,此时我设置了默认意图.所以我对天猫精灵说 天猫精灵 热水用完了 (调用词) 或 天猫精灵 热水用完了 吃了没 (调用词+单轮对话

  • 如何利用IDEA搭建SpringBoot项目整合mybatis实现简单的登录功能

    利用闲余时间想自己搭建一个springboot+mybatis的项目,提升一下自己对项目的了解,毕竟自己还是一个小白,在这里为自己创建项目的过程做一个记录,以便以后回忆.同时将搭建中遇到的问题也在这里做记录.如有遇到同样问题的同学,希望能给你一下借鉴. springboot的优势之一就是快速搭建项目,省去了自己导入jar包和配置xml的时间,使用非常方便. 一,搭建项目: 1.打开IDEA,点击File→New→Project...,如图1所示 图1  搭建项目 2.当我们选择project..

  • SpringBoot项目整合FastDFS+Nginx实现图片上传功能

    目录 FastDFS概述 Fastdfs原理 安装Fastdfs 整合Nginx模块 安装Nginx SpringBoot整合Fastdfs FastDFS概述 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的在线服务,如相册网站.视频网站等等. FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用Fa

  • SpringBoot项目中新增脱敏功能的实例代码

    目录 SpringBoot项目中新增脱敏功能 项目背景 项目需求描述 项目解决方案 1. 解决方案 2. 实现代码 2.1 注解 Sensitive 2.1 脱敏类型枚举 SensitiveType 2.3 脱敏工具 DesensitizedUtils 3 使用实例 3.1 需注解对象 3.2 脱敏操作 SpringBoot项目中新增脱敏功能 项目背景 目前正在开发一个SpringBoot项目,此项目有Web端和微信小程序端.web端提供给工作人员使用,微信小程序提供给群众进行预约操作.项目中有

  • 详解SpringBoot项目整合Vue做一个完整的用户注册功能

    目录 前言 1 实现用户注册流程 1.1 用户注册完整流程 1.2 用户注册信息及校验 2 后台接口设计 2.1 上传头像接口 2.2 用户注册接口 3 后端代码实现 3.1 用户头像上传接口编码实现 3.2 用户注册接口 4 前端代码实现 4.1 完成用户注册界面vue组件编码 4.2 工具类中增加校验方法 4.3 API文件中添加用户注册方法 4.4 全局方法中添加用户注册方法 4.5 路由列表中添加用户注册组件 4.6 登录组件中添加用户注册的跳转链接 4.7 路由跳转控制中添加白名单 5

  • springboot项目整合注册功能模块开发实战

    目录 工程简介 准备工作: 第一步:注册功能的实现 1.1持久层的设计 1.2注册功能-业务层 1.3控制层 1.4前端页面的设计 注册功能实现完成 工程简介 准备工作: 项目所用到的html界面以及sql文件链接如下: 百度网盘获取地址: 链接: https://pan.baidu.com/s/1CcbQWP8RNqyy3ieib1osLg?pwd=t1qu 提取码: t1qu 第一步:注册功能的实现 1.1持久层的设计 1.1.1规范需要执行的SQL语句 1.用户的注册工作,相当于在做数据的

  • SpringBoot项目集成xxljob实现全纪录

    目录 xxljob介绍 代码配置过程 1.引入xxl-job的依赖 2.编写配置文件 3. 编写配置类 4.新建Job文件夹,将自己写的类放到此文件夹下 5. 编写业务代码 登录xxl-Job并配置 1.执行器管理--新增执行器 2.任务管理--新增任务 测试: 断点调试 查看调度日志: xxljob介绍 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 被称为任务调度中心,可做定时任务. 优点特性如下

  • SpringBoot实现文件上传下载功能小结

    最近做的一个项目涉及到文件上传与下载.前端上传采用百度webUploader插件.有关该插件的使用方法还在研究中,日后整理再记录.本文主要介绍SpringBoot后台对文件上传与下载的处理. 单文件上传 // 单文件上传 @RequestMapping(value = "/upload") @ResponseBody public String upload(@RequestParam("file") MultipartFile file) { try { if (

  • 实例详解SpringBoot+nginx实现资源上传功能

    最近小编在学习使用nginx放置静态资源,例如图片.视频.css/js等,下面就来记录一下一波学习干货. 1.nginx安装及配置 小编使用的服务器是阿里云的轻量应用服务器,系统使用的是Ubuntu.注意记得开放 9090TCP端口,如果不使用 9090端口作为服务器端口也可不用. 安装 首先,获取安装包是必要的吧,这里提供一个nginx-1.11.3-ubuntu.tar.gz https://pan.baidu.com/s/1vvb41QkOJ4VqfyFckXBkjA (密码45wz) 小

随机推荐