diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppSpeechController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppSpeechController.java index d1f9776..2534b91 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppSpeechController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppSpeechController.java @@ -2,6 +2,7 @@ package com.ruoyi.cms.controller.app; import com.alibaba.nls.client.AccessToken; import com.ruoyi.cms.handler.SpeechRecognizerAI; +import com.ruoyi.cms.util.AliyunNlsUtils; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import io.swagger.annotations.Api; @@ -24,14 +25,14 @@ public class AppSpeechController extends BaseController private String appKey = "4lFYn2yPsQymwGu8"; private String id = "LTAI5t9hhSqdDHqwH3RjgyYj"; private String secret = "ni5aW3vxrWouMwcGqJPfh9Uu56PBuv"; - private String url = System.getenv().getOrDefault("NLS_GATEWAY_URL", "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1"); + private String url = System.getenv().getOrDefault("NLS_GATEWAY_URL", AliyunNlsUtils.getNlsUrl()+"/ws/v1/"); @ApiOperation("统计") @GetMapping("/getToken") public AjaxResult getToken() { SpeechRecognizerAI recognizerDemo = new SpeechRecognizerAI(appKey, id, secret, url); AccessToken accessToken = recognizerDemo.getAccessToken(); - String token = "wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1?appkey="+appKey+"&token="+accessToken.getToken(); + String token = AliyunNlsUtils.getNlsUrl()+"/ws/v1/?appkey="+appKey+"&token="+accessToken.getToken(); return AjaxResult.success(token); } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognitionWebSocketHandler.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognitionWebSocketHandler.java index 398afd6..75aa02a 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognitionWebSocketHandler.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognitionWebSocketHandler.java @@ -1,6 +1,6 @@ package com.ruoyi.cms.handler; -import com.alibaba.nls.client.protocol.asr.SpeechRecognizer; +import com.ruoyi.cms.util.AliyunNlsUtils; import org.springframework.stereotype.Component; import javax.websocket.*; @@ -20,7 +20,7 @@ public class SpeechRecognitionWebSocketHandler { String appKey = "4lFYn2yPsQymwGu8"; String id = "LTAI5t9hhSqdDHqwH3RjgyYj"; String secret = "ni5aW3vxrWouMwcGqJPfh9Uu56PBuv"; - String url = System.getenv().getOrDefault("NLS_GATEWAY_URL", "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1"); + String url = System.getenv().getOrDefault("NLS_GATEWAY_URL", AliyunNlsUtils.getNlsUrl()+"/ws/v1/"); recognizerDemo = new SpeechRecognizerAI(appKey, id, secret, url); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognizerAI.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognizerAI.java index 17b1203..3425af2 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognizerAI.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechRecognizerAI.java @@ -7,6 +7,7 @@ import com.alibaba.nls.client.protocol.SampleRateEnum; import com.alibaba.nls.client.protocol.asr.SpeechRecognizer; import com.alibaba.nls.client.protocol.asr.SpeechRecognizerListener; import com.alibaba.nls.client.protocol.asr.SpeechRecognizerResponse; +import com.ruoyi.cms.util.AliyunNlsUtils; import lombok.Data; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,7 +27,12 @@ public class SpeechRecognizerAI { // 获取 AccessToken accessToken = new AccessToken(id, secret); try { - accessToken.apply(); // 申请 Token + if(AliyunNlsUtils.USE_TEST_ENV){ + accessToken.apply(); // 申请 Token + }else{ + AliyunNlsTokenUtil.generateToken(id, secret, this.accessToken); + } + //accessToken.apply(); // 申请 Token logger.info("Token: {}, Expire Time: {}", accessToken.getToken(), accessToken.getExpireTime()); // 初始化 NlsClient @@ -35,7 +41,7 @@ public class SpeechRecognizerAI { } else { this.client = new NlsClient(url, accessToken.getToken()); // 使用自定义服务地址 } - } catch (IOException e) { + } catch (Exception e) { logger.error("Failed to initialize NlsClient: {}", e.getMessage()); } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechSynthesisWebSocketHandler.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechSynthesisWebSocketHandler.java index efdfecd..7aa3c52 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechSynthesisWebSocketHandler.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/handler/SpeechSynthesisWebSocketHandler.java @@ -7,6 +7,7 @@ import com.alibaba.nls.client.protocol.SampleRateEnum; import com.alibaba.nls.client.protocol.tts.SpeechSynthesizer; import com.alibaba.nls.client.protocol.tts.SpeechSynthesizerListener; import com.alibaba.nls.client.protocol.tts.SpeechSynthesizerResponse; +import com.ruoyi.cms.util.AliyunNlsUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @@ -20,18 +21,23 @@ import java.nio.ByteBuffer; @ServerEndpoint("/speech-synthesis") public class SpeechSynthesisWebSocketHandler { private static final Logger logger = LoggerFactory.getLogger(SpeechSynthesisWebSocketHandler.class); - + private NlsClient client; private String appKey = "mtA2pwmvCeefHT3Y"; private String accessKeyId = "LTAI5tRBahK93vPNF1JDVEPA"; private String accessKeySecret = "x95OWb4cV6ccQVtbEJ2Gxm2Uwl2thJ"; - private String url = "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1"; + private String url = AliyunNlsUtils.getNlsUrl()+"/ws/v1/"; public SpeechSynthesisWebSocketHandler() { // Initialize NLS client with token AccessToken accessToken = new AccessToken(accessKeyId, accessKeySecret); try { - accessToken.apply(); + if(AliyunNlsUtils.USE_TEST_ENV){ + accessToken.apply(); + }else{ + AliyunNlsTokenUtil.generateToken(accessKeyId, accessKeySecret, accessToken); + } + //accessToken.apply(); String token = accessToken.getToken(); if(url.isEmpty()) { this.client = new NlsClient(token); diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/AliyunNlsUtils.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/AliyunNlsUtils.java new file mode 100644 index 0000000..8c331c1 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/AliyunNlsUtils.java @@ -0,0 +1,44 @@ +package com.ruoyi.cms.util; + +/** + * 阿里云配置 + */ +public class AliyunNlsUtils { + + /** + * 标志 + */ + public static final boolean USE_TEST_ENV=true; + /** + * 测试nls + */ + public static final String NLS_TEST_URL="wss://nls-gateway-cn-shanghai.aliyuncs.com"; + /** + * 测试微信获取oppenid链接 + */ + public static final String WX_TEST_URL="https://api.weixin.qq.com/sns/jscode2session"; + /** + * 正式nls + */ + public static final String NLS_FORMAL_URL="http://192.168.2.102:10044"; + + /** + * 根据环境判断正式还是测试 + * @return + */ + public static String getNlsUrl(){ + String url = USE_TEST_ENV ? NLS_TEST_URL : NLS_FORMAL_URL; + System.out.println("nls当前环境:" + (USE_TEST_ENV ? "测试" : "正式") + ",WebSocket地址:" + url); + return url; + } + + /** + * 微信授权登录 + * @return + */ + public static String getWXoppenidUrl(){ + String url = USE_TEST_ENV ? WX_TEST_URL : NLS_FORMAL_URL+"/weixin"; + System.out.println("微信授权登录当前环境:" + (USE_TEST_ENV ? "测试" : "正式") + ",获取oppenid地址:" + url); + return url; + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/WechatUtil.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/WechatUtil.java index 852d378..4f7fda6 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/WechatUtil.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/WechatUtil.java @@ -249,7 +249,7 @@ public class WechatUtil { try { System.out.println("appid==============="+appid); System.out.println("secret================"+secret); - String response = getAccessData("https://api.weixin.qq.com/sns/jscode2session?appid="+appid+"&secret="+secret+"&js_code="+code+"&grant_type=authorization_code"); + String response = getAccessData(AliyunNlsUtils.getWXoppenidUrl()+"?appid="+appid+"&secret="+secret+"&js_code="+code+"&grant_type=authorization_code"); JSONObject result = JSONObject.parseObject(response); // 微信返回错误码处理 if (result.containsKey("errcode") && result.getInteger("errcode") != 0) {