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 74b905d68..c57ad9d0f 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";
/**
*
* 提交语音.
- * 接口调用请求说明
- *
* 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,默认中文
*
*
* @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 b97da0a8a..628b6c55f 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;
-
/**
*
* 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 1e61c1faa..9cf770ac5 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();
}
}