Browse Source

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

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

* 添加高清语音接口测试代码
master
kennywgx 5 years ago
committed by Binary Wang
parent
commit
4f280bb939
4 changed files with 51 additions and 0 deletions
  1. +16
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMaterialService.java
  2. +8
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java
  3. +4
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java
  4. +23
    -0
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImplTest.java

+ 16
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMaterialService.java View File

@@ -88,6 +88,22 @@ public interface WxMpMaterialService {
*/
File mediaDownload(String mediaId) throws WxErrorException;

/**
* <pre>
* 获取高清语音素材
* 公众号可以使用本接口获取从JSSDK的uploadVoice接口上传的临时语音素材,格式为speex,16K采样率。
* 该音频比上文的临时素材获取接口(格式为amr,8K采样率)更加清晰,适合用作语音识别等对音质要求较高的业务。
* 详情请见: <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


+ 8
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java 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);


+ 4
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java 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.
*/


+ 23
- 0
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImplTest.java 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());
}
}

Loading…
Cancel
Save