#1287 公众号模块新增下载微信jssdk上传的高清语音素材的接口

* 新增下载微信jssdk上传的高清语音素材的接口,格式为.speex

* 添加高清语音接口测试代码
This commit is contained in:
kennywgx 2019-11-19 11:33:52 +08:00 committed by Binary Wang
parent 0c18330deb
commit 4f280bb939
4 changed files with 51 additions and 0 deletions

View File

@ -88,6 +88,22 @@ public interface WxMpMaterialService {
*/
File mediaDownload(String mediaId) throws WxErrorException;
/**
* <pre>
* 获取高清语音素材
* 公众号可以使用本接口获取从JSSDK的uploadVoice接口上传的临时语音素材格式为speex16K采样率
* 该音频比上文的临时素材获取接口格式为amr8K采样率更加清晰适合用作语音识别等对音质要求较高的业务
* 详情请见: <a href="https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Get_temporary_materials.html">
* 获取高清语音素材</a>
* 接口url格式https://api.weixin.qq.com/cgi-bin/media/get/jssdk?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
* </pre>
*
* @param mediaId 媒体文件Id
* @return 保存到本地的临时文件
* @throws WxErrorException
*/
File jssdkMediaDownload(String mediaId) throws WxErrorException;
/**
* <pre>
* 上传图文消息内的图片获取URL

View File

@ -65,6 +65,14 @@ public class WxMpMaterialServiceImpl implements WxMpMaterialService {
"media_id=" + mediaId);
}
@Override
public File jssdkMediaDownload(String mediaId) throws WxErrorException {
return this.wxMpService.execute(
BaseMediaDownloadRequestExecutor.create(this.wxMpService.getRequestHttp(), this.wxMpService.getWxMpConfigStorage().getTmpDirFile()),
JSSDK_MEDIA_GET_URL,
"media_id=" + mediaId);
}
@Override
public WxMediaImgUploadResult mediaImgUpload(File file) throws WxErrorException {
return this.wxMpService.execute(MediaImgUploadRequestExecutor.create(this.wxMpService.getRequestHttp()), IMG_UPLOAD_URL, file);

View File

@ -819,6 +819,10 @@ public interface WxMpApiUrl {
* get.
*/
MEDIA_GET_URL(API_DEFAULT_HOST_URL, "/cgi-bin/media/get"),
/**
* jssdk media get.
*/
JSSDK_MEDIA_GET_URL(API_DEFAULT_HOST_URL, "/cgi-bin/media/get/jssdk"),
/**
* upload.
*/

View File

@ -44,6 +44,8 @@ public class WxMpMaterialServiceImplTest {
private WxMpMaterialCountResult wxMaterialCountResultBeforeTest;
// 以下为media接口的测试
private List<String> mediaIdsToDownload = new ArrayList<>();
// 以下为高清语音接口的测试
private List<String> voiceMediaIdsToDownload = new ArrayList<>();
@DataProvider
public Object[][] mediaFiles() {
@ -289,6 +291,11 @@ public class WxMpMaterialServiceImplTest {
if (res.getMediaId() != null && !mediaType.equals(WxConsts.MediaFileType.VIDEO)) {
//video 不支持下载所以不加入
this.mediaIdsToDownload.add(res.getMediaId());
// 音频media, 用于测试下载高清语音接口
if (mediaType.equals(WxConsts.MediaFileType.VOICE)) {
this.voiceMediaIdsToDownload.add(res.getMediaId());
}
}
if (res.getThumbMediaId() != null) {
@ -308,10 +315,26 @@ public class WxMpMaterialServiceImplTest {
return params;
}
@DataProvider
public Object[][] downloadJssdkMedia() {
Object[][] params = new Object[this.voiceMediaIdsToDownload.size()][];
for (int i = 0; i < this.voiceMediaIdsToDownload.size(); i++) {
params[i] = new Object[]{this.voiceMediaIdsToDownload.get(i)};
}
return params;
}
@Test(dependsOnMethods = {"testUploadMedia"}, dataProvider = "downloadMedia")
public void testDownloadMedia(String mediaId) throws WxErrorException {
File file = this.wxService.getMaterialService().mediaDownload(mediaId);
assertNotNull(file);
System.out.println(file.getAbsolutePath());
}
@Test(dependsOnMethods = {"testUploadMedia"}, dataProvider = "downloadJssdkMedia")
public void testDownloadJssdkMedia(String mediaId) throws WxErrorException {
File file = this.wxService.getMaterialService().jssdkMediaDownload(mediaId);
assertNotNull(file);
System.out.println(file.getAbsolutePath());
}
}