diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpAiOpenService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpAiOpenService.java index 74b905d6..c57ad9d0 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpAiOpenService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpAiOpenService.java @@ -1,10 +1,10 @@ package me.chanjar.weixin.mp.api; +import java.io.File; + import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.enums.AiLangType; -import java.io.File; - /** *
* 微信AI开放接口(语音识别,微信翻译). @@ -15,24 +15,15 @@ import java.io.File; * @author Binary Wang */ public interface WxMpAiOpenService { + String TRANSLATE_URL = "http://api.weixin.qq.com/cgi-bin/media/voice/translatecontent?lfrom=%s<o=%s"; String VOICE_UPLOAD_URL = "http://api.weixin.qq.com/cgi-bin/media/voice/addvoicetorecofortext?format=%s&voice_id=%s&lang=%s"; String VOICE_QUERY_RESULT_URL = "http://api.weixin.qq.com/cgi-bin/media/voice/queryrecoresultfortext"; /** ** * @param lang 语言,zh_CN 或 en_US,默认中文 @@ -80,18 +64,12 @@ public interface WxMpAiOpenService { * * http请求方式: POST * http://api.weixin.qq.com/cgi-bin/media/voice/translatecontent?access_token=ACCESS_TOKEN&lfrom=xxx<o=xxx - * 参数说明 * - * 参数 是否必须 说明 - * access_token 是 接口调用凭证 - * lfrom 是 源语言,zh_CN 或 en_US - * lto 是 目标语言,zh_CN 或 en_US - * 源内容放body里或者上传文件的形式(utf8格式,最大600Byte) * * * @param langFrom 源语言,zh_CN 或 en_US - * @param langTo 目标语言,zh_CN 或 en_US - * @param content 要翻译的文本内容 + * @param langTo 目标语言,zh_CN 或 en_US + * @param content 要翻译的文本内容 */ String translate(AiLangType langFrom, AiLangType langTo, String content) throws WxErrorException; } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpAiOpenServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpAiOpenServiceImpl.java index b97da0a8..628b6c55 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpAiOpenServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpAiOpenServiceImpl.java @@ -1,17 +1,16 @@ package me.chanjar.weixin.mp.api.impl; -import com.google.gson.JsonObject; +import java.io.File; + import com.google.gson.JsonParser; import me.chanjar.weixin.common.WxType; import me.chanjar.weixin.common.error.WxError; import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.mp.enums.AiLangType; import me.chanjar.weixin.mp.api.WxMpAiOpenService; import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.enums.AiLangType; import me.chanjar.weixin.mp.util.requestexecuter.voice.VoiceUploadRequestExecutor; -import java.io.File; - /** ** 提交语音. - * 接口调用请求说明 - * * http请求方式: POST * http://api.weixin.qq.com/cgi-bin/media/voice/addvoicetorecofortext?access_token=ACCESS_TOKEN&format=&voice_id=xxxxxx&lang=zh_CN - * 参数说明 - * - * 参数 是否必须 说明 - * access_token 是 接口调用凭证 - * format 是 文件格式 (只支持mp3,16k,单声道,最大1M) - * voice_id 是 语音唯一标识 - * lang 否 语言,zh_CN 或 en_US,默认中文 - * 语音内容放body里或者上传文件的形式 ** * @param lang 语言,zh_CN 或 en_US,默认中文 @@ -46,16 +37,9 @@ public interface WxMpAiOpenService { * 获取语音识别结果. * 接口调用请求说明 * - * http请求方式: POST * http://api.weixin.qq.com/cgi-bin/media/voice/queryrecoresultfortext?access_token=ACCESS_TOKEN&voice_id=xxxxxx&lang=zh_CN * 请注意,添加完文件之后10s内调用这个接口 * - * 参数说明 - * - * 参数 是否必须 说明 - * access_token 是 接口调用凭证 - * voice_id 是 语音唯一标识 - * lang 否 语言,zh_CN 或 en_US,默认中文 *
* Created by BinaryWang on 2018/6/9. @@ -20,9 +19,7 @@ import java.io.File; * @author Binary Wang */ public class WxMpAiOpenServiceImpl implements WxMpAiOpenService { - private static final JsonParser JSON_PARSER = new JsonParser(); - public static final String TRANSLATE_URL = "http://api.weixin.qq.com/cgi-bin/media/voice/translatecontent?lfrom=%s<o=%s"; private WxMpService wxMpService; public WxMpAiOpenServiceImpl(WxMpService wxMpService) { @@ -48,14 +45,14 @@ public class WxMpAiOpenServiceImpl implements WxMpAiOpenService { @Override public String translate(AiLangType langFrom, AiLangType langTo, String content) throws WxErrorException { - final String responseContent = this.wxMpService.post(String.format(TRANSLATE_URL, langFrom.getCode(), langTo.getCode()), - content); - final JsonObject jsonObject = new JsonParser().parse(responseContent).getAsJsonObject(); - if (jsonObject.get("errcode") == null || jsonObject.get("errcode").getAsInt() == 0) { - return jsonObject.get("to_content").getAsString(); + String response = this.wxMpService.post(String.format(TRANSLATE_URL, langFrom.getCode(), langTo.getCode()), content); + + WxError error = WxError.fromJson(response, WxType.MP); + if (error.getErrorCode() != 0) { + throw new WxErrorException(error); } - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MP)); + return JSON_PARSER.parse(response).getAsJsonObject().get("to_content").getAsString(); } @Override @@ -64,13 +61,13 @@ public class WxMpAiOpenServiceImpl implements WxMpAiOpenService { lang = AiLangType.zh_CN; } - final String responseContent = this.wxMpService.get(VOICE_QUERY_RESULT_URL, + final String response = this.wxMpService.get(VOICE_QUERY_RESULT_URL, String.format("voice_id=%s&lang=%s", voiceId, lang.getCode())); - final JsonObject jsonObject = JSON_PARSER.parse(responseContent).getAsJsonObject(); - if (jsonObject.get("errcode") == null || jsonObject.get("errcode").getAsInt() == 0) { - return jsonObject.get("result").getAsString(); + WxError error = WxError.fromJson(response, WxType.MP); + if (error.getErrorCode() != 0) { + throw new WxErrorException(error); } - throw new WxErrorException(WxError.fromJson(responseContent, WxType.MP)); + return JSON_PARSER.parse(response).getAsJsonObject().get("result").getAsString(); } } diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpAiOpenServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpAiOpenServiceImplTest.java index 1e61c1fa..9cf770ac 100644 --- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpAiOpenServiceImplTest.java +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpAiOpenServiceImplTest.java @@ -1,14 +1,16 @@ package me.chanjar.weixin.mp.api.impl; +import java.io.File; + +import org.testng.annotations.*; + import com.google.inject.Inject; import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.mp.enums.AiLangType; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.test.ApiTestModule; -import org.testng.annotations.Guice; -import org.testng.annotations.Test; +import me.chanjar.weixin.mp.enums.AiLangType; -import java.io.File; +import static org.assertj.core.api.Assertions.assertThat; /** *@@ -35,13 +37,12 @@ public class WxMpAiOpenServiceImplTest { String voiceId = System.currentTimeMillis() + "a"; AiLangType lang = AiLangType.zh_CN; final String result = this.wxService.getAiOpenService().recogniseVoice(voiceId, lang, new File("d:\\t.mp3")); - System.out.println(result); + assertThat(result).isNotEmpty(); } @Test public void testTranslate() throws WxErrorException { - final String responseContent = this.wxService.getAiOpenService() - .translate(AiLangType.zh_CN, AiLangType.en_US, "微信文档很坑爹"); - System.out.println(responseContent); + final String result = this.wxService.getAiOpenService().translate(AiLangType.zh_CN, AiLangType.en_US, "微信文档很坑爹"); + assertThat(result).isNotEmpty(); } }