前提条件
1. 完成 集成 SDK。
2. 完成 密钥 申请。
设置标签页
pages/index/index.wxml
// 设置标签页<button bindtap="onupload">{{ uploadBtnText }}</button>
SDK 初始化
let plugin = requirePlugin("myPlugin");let manager = null;
设置生命周期回调函数
Page({data: {resps: [],btnText: '本地文件',},onShow: function() {// Do something when page show.},})
固定密钥接入
创建 getSoeRecorderManager 对象,使用 SecretId,SecretKey 进行签名认证。固定密钥适用于前端调试,若使用此格式,请避免泄露密钥。getSoeRecorderManager 获取的对象是唯一的,不同的界面需要重新创建。
注意:
建议用户使用子账号密钥 + 环境变量的方式调用 SDK,提高 SDK 使用的安全性。为子账号授权时,请遵循 最小权限指引,防止泄漏其他资源。
如果您一定要使用永久密钥,建议遵循最小权限指引 对永久密钥的权限范围进行限制。
manager = plugin.getSoeRecorderManager({SecretId: 'your secretid', // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140SecretKey: 'your secretkey', // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140});
临时密钥接入
manager = plugin.getSoeRecorderManager({getAuthorization: function (callback) {wx.request({url: 'https://example.com/server/getTmpIdAndKey',method: 'POST',data: {},success: data => {callback({Token: data.Credentials.Token,TmpSecretId: data.Credentials.TmpSecretId,TmpSecretKey: data.Credentials.TmpSecretKey})}});}});
临时密钥接入(微信云开发)
if (!wx.cloud) {console.error('请使用 2.2.3 或以上的基础库以使用云能力 。。')} else {wx.cloud.init({traceUser: true,})}manager = plugin.getSoeRecorderManager({getAuthorization: function (callback) {wx.cloud.callFunction({name: 'getAuthorization',data: {},success: data => {console.log('test:', data)callback({Token: data.result.Credentials.Token,TmpSecretId: data.result.Credentials.TmpSecretId,TmpSecretKey: data.result.Credentials.TmpSecretKey})}})}})
SDK 使用方法
设置监听函数
// 回调结果manager.onResponse((res) => {console.log(res)})// 最终结果manager.onSuccess((res) => {const tempFilePath = res.tempFilePath // 音频数据console.log(res)});// 失败回调manager.onError((res) => {console.log(res)})
设置评测参数
// 设置音频数据manager.uploadLocalFile({content:"about",audioBase64: '//uQBAAAA'});
const fs = wx.getFileSystemManager()wx.chooseMessageFile({count: 1,type: 'file',success(res) {console.log(res)fs.readFile({filePath: res.tempFiles[0].path,encoding: 'base64',success(file) {console.log(file)}})}})
集成使用
pages/index/index.wxml
// 设置标签页<button bindtap="onupload">{{ uploadBtnText }}</button>
pages/index/index.js
let plugin = requirePlugin("myPlugin");let manager = null;// 设置生命周期回调函数Page({data: {resps: [],uploadBtnText: '本地文件',},onShow: function () {// 设置初始化初始化,具体参考https://cloud.tencent.com/document/product/884/84111#434bdd99-20df-4763-9a51-00cf0b6e46dcif (!wx.cloud) {console.error('请使用 2.2.3 或以上的基础库以使用云能力 。。')} else {wx.cloud.init({traceUser: true,})}manager = plugin.getSoeRecorderManager({getAuthorization: function (callback) {wx.cloud.callFunction({name: 'getAuthorization',data: {},success: data => {console.log('test:', data)callback({Token: data.result.Credentials.Token,TmpSecretId: data.result.Credentials.TmpSecretId,TmpSecretKey: data.result.Credentials.TmpSecretKey})}})}})//设置监听函数// 回调结果manager.onResponse((res) => {console.log(res)})// 最终结果manager.onSuccess((res) => {const tempFilePath = res.tempFilePath // 音频数据console.log(res)});// 失败回调manager.onError((res) => {console.log(res)})},// 对应pages/index/index.wxml中的onupload,点击开始评测onupload: function () {const fs = wx.getFileSystemManager()wx.chooseMessageFile({count: 1,type: 'file',success(res) {console.log(res)fs.readFile({filePath: res.tempFiles[0].path,encoding: 'base64',success(file) {manager.uploadLocalFile({content: "about",audioBase64: file.data,voiceFileType: 3});}})}})},})
uploadLocalFile(options)说明:
属性 | 类型 | 必填 | 默认值 | 说明 |
content | String | 是 | 无 | |
evalMode | Number | 否 | 0 | 评测模式 0:单词模式
1:句子模式
2:段落模式
3:自由说模式
4:单词音素纠错模式
5:情景评测模式
6:句子多分支评测模式
7:单词实时评测模式
8:拼音评测模式 |
scoreCoeff | Number | 否 | 1.5 | |
serverType | Number | 否 | 0 | |
textMode | Number | 否 | 0 | |
soeAppId | String | 否 | 无 | |
keyword | String | 否 | 无 | |
audioBase64 | String | 是 | 无 | 评测的音频数据,格式为 base64。 注意: |
timeoutData | Number | 否 | 5000 | 请求超时时间,以毫秒为单位。 |
voiceFileType | Number | 否 | 3 | 语音文件类型 2:wav,3:mp3。 |