【数据库 -- 表设计】
在共享数据库创建一个语音表RB_Voice
Text NVARCHAR(1000) NOT NULL 【该字段要创建唯一索引】(文本)
OssURL VARCHAR(200) NOT NULL (OSS地址)
【业务设计 -- 业务逻辑设计,梳理】
===前端逻辑
1. AJAX获取语音地址OSS Url
2. 使用JQuery 读取OSS Url语音包
语音读取公共脚本名称 irobotbox.common.customSpeech.js, 放到Manager/js目录下
改脚本文件代码内容
$.fn.extend({
//自定义读取语音
CustomSpeech: function (text) {
//AJAX读取语音的OSS URL
//读取语音
$(this).speech({
"speech": false,
"speed": 13,
"src": OSS URL
});
}
});
在调用方页面定义一个隐藏的DIV,domId为隐藏DIV的id
调用方在页面引用irobotbox.common.customSpeech.js,调用方法 $('#' + domId).CustomSpeech(text) 读取语音
===后端逻辑
===流程
1. 先访问【Web层服务端缓存】,如果没有则执行2。
2. 读取数据库,如果数据库有,将数据库的数据缓存到【Web层服务端】。如果数据库没有,则执行3。
3. 直接调用百度语音接口,将百度语音接口返回的MP3文件缓存至OSS,将OSS连接保存到数据。Text字段存语音文本,OssURL存OSS连接。并且将语音文本和OssURL保存到【Web层服务端】
var ossUrl = 获取Web层服务端缓存;Cache key = 语音文本字符串, value = OSS URL
if (ossUrl 为空)
{
ossUrl = 读取数据库
if(ossUrl 不为空)
{
将数据缓存到【Web层服务端】
}
}
if (ossUrl 为空)
{
url 生成百度语音包地址
请求url 下载百度语音包
ossUrl = 将语音包上传只OSS
if(ossUrl 不为空)
{
将数据缓存到【Web层服务端】
将数据保存到【数据库】
}
else
{
ossUrl = url
}
}
return ossUrl
===百度API访问Token
获取百度API Tkoen :new Biz.Irobotbox.BaiduTts().GetCacheTokenModel().AccessToken
//下载百度语音包
client.DownloadData("https://tsn.baidu.com/text2audio?tex=称重发货&lan=zh&aue=3&spd=4&cuid=1&ctp=1&tok=24.3151c8364e4e909bcfcf9119a52b0638.2592000.1636079062.282335-24557501");
MP3测试语音连接:http://test-erp2-files.oss-cn-shenzhen.aliyuncs.com/xxx.mp3
===OSS上传语音包
var ossService = new Biz.Common.FileService();
string urlKey = string.Format("商户号/voice/生成一个guid.mp3");
string ossUrl = ossService.Upload(urlKey, 百度语音返回的字节数组);
ossUrl不为空才是上传成功
【风险识别 -- 性能,开发,扩展】
无
【注意事项 -- 编码规范,可能存在BUG,风险和业务关联】
1. 优化涉及到的功能点
1.1 PackageCheck.aspx 包裹复核1.2 PrintDelivery.aspx 打单
1.3 TwoSortingByBarCode.aspx 二次分拣
1.4 PackageWeight.aspx PackageWeight.js 称重
1.5 Terminal/Terminal.master PDA拣货操作模板