Commit e1afe5f4 authored by 何金镒's avatar 何金镒

思必驰的兜底技能6

parent 189b0678
...@@ -107,6 +107,7 @@ public class DifyControllerV2 { ...@@ -107,6 +107,7 @@ public class DifyControllerV2 {
// 异步执行对话???? // 异步执行对话????
eventPublisher.publishEvent(new DifyChatSteamEvent(this,token.getSn(), input)); eventPublisher.publishEvent(new DifyChatSteamEvent(this,token.getSn(), input));
res = String.format(res, "正在思考中", false); res = String.format(res, "正在思考中", false);
response = JSONUtil.parseObj(res); response = JSONUtil.parseObj(res);
}else if(list.size() > 1){ }else if(list.size() > 1){
......
...@@ -33,6 +33,11 @@ public class DifyChatSteamEventListener { ...@@ -33,6 +33,11 @@ public class DifyChatSteamEventListener {
log.info("处理dify AI 聊天:sn:{},input:{}", event.getSn(), event.getInput()); log.info("处理dify AI 聊天:sn:{},input:{}", event.getSn(), event.getInput());
try { try {
if (MsgWebSocket.getWebSocket(event.getSn())) {
log.error("未找到sn:{}的WebSocket连接,不处理对话", event.getSn());
return;
}
QueryWrapper<CDCToken> wrapper = new QueryWrapper<>(); QueryWrapper<CDCToken> wrapper = new QueryWrapper<>();
wrapper.eq("sn", event.getSn()); wrapper.eq("sn", event.getSn());
List<CDCToken> list = tokenService.list(wrapper); List<CDCToken> list = tokenService.list(wrapper);
...@@ -49,11 +54,11 @@ public class DifyChatSteamEventListener { ...@@ -49,11 +54,11 @@ public class DifyChatSteamEventListener {
log.info("dify请求返回:{}",ai_result); log.info("dify请求返回:{}",ai_result);
String result_end = ai_result.replaceAll("(?m)^\\s*$[\r\n]*", "").replaceAll("[\r\n]+", "\n").replaceAll("[\r\n]", "").trim(); // String result_end = ai_result.replaceAll("(?m)^\\s*$[\r\n]*", "").replaceAll("[\r\n]+", "\n").replaceAll("[\r\n]", "").trim();
log.info("dify请求返回2--->:{}",result_end); // log.info("dify请求返回2--->:{}",result_end);
// 通过WebSocket发送消息给屏端 // 通过WebSocket发送消息给屏端
MsgWebSocket.sendToSingle(event.getSn(), result_end); MsgWebSocket.sendToSingle(event.getSn(), ai_result);
log.info("dify请求耗时--->:{}",System.currentTimeMillis() - startTime); log.info("dify请求耗时--->:{}",System.currentTimeMillis() - startTime);
} catch (Exception e) { } catch (Exception e) {
......
...@@ -60,16 +60,17 @@ public class CdcHttpUtils { ...@@ -60,16 +60,17 @@ public class CdcHttpUtils {
* *
*/ */
public UserEntity getOwner(CDCToken bySn){ public UserEntity getOwner(CDCToken bySn){
log.info("去建发获取业主信息,sn:{},ccu:{}",bySn.getSn(),bySn.getCcuId());
if(CDCTokenCache.get(bySn.getSn())!=null){
String s = CDCTokenCache.get(bySn.getSn());
return JSONUtil.toBean(s, UserEntity.class);
}else{
String body = HttpRequest.get(getOwnerUrl) String body = HttpRequest.get(getOwnerUrl)
.header("X-token", bySn.getAccessToken()) .header("X-token", bySn.getAccessToken())
.header("gateway-id", bySn.getSn()) .header("gateway-id", bySn.getCcuId())
.timeout(timeout) .timeout(timeout)
.execute().body(); .execute().body();
if(CDCTokenCache.get(bySn.getSn())!=null){
String s = CDCTokenCache.get(bySn.getSn());
return JSONUtil.toBean(s, UserEntity.class);
}else{
JSONObject jsonObject = JSONUtil.parseObj(body); JSONObject jsonObject = JSONUtil.parseObj(body);
if(jsonObject.getInt("code") == 200){ if(jsonObject.getInt("code") == 200){
UserEntity userEntity = JSONUtil.toBean(jsonObject.getJSONObject("data"), UserEntity.class); UserEntity userEntity = JSONUtil.toBean(jsonObject.getJSONObject("data"), UserEntity.class);
...@@ -92,7 +93,7 @@ public class CdcHttpUtils { ...@@ -92,7 +93,7 @@ public class CdcHttpUtils {
UserEntity userEntity = getOwner(bySn); UserEntity userEntity = getOwner(bySn);
String body = HttpRequest.get(url) String body = HttpRequest.get(url)
.header("X-token",bySn.getAccessToken()) .header("X-token",bySn.getAccessToken())
.header("gateway-id",sn) .header("gateway-id",bySn.getCcuId())
.header("space-yr",userEntity.communityId) .header("space-yr",userEntity.communityId)
.header("communityId",userEntity.communityId) .header("communityId",userEntity.communityId)
.header("space-phone",userEntity.phoneNum) .header("space-phone",userEntity.phoneNum)
...@@ -113,7 +114,7 @@ public class CdcHttpUtils { ...@@ -113,7 +114,7 @@ public class CdcHttpUtils {
UserEntity userEntity = getOwner(bySn); UserEntity userEntity = getOwner(bySn);
String result = HttpRequest.post(url) String result = HttpRequest.post(url)
.header("X-token",bySn.getAccessToken()) .header("X-token",bySn.getAccessToken())
.header("gateway-id",sn) .header("gateway-id",bySn.getCcuId())
.header("space-yr",userEntity.communityId) .header("space-yr",userEntity.communityId)
.header("communityId",userEntity.communityId) .header("communityId",userEntity.communityId)
.header("space-phone",userEntity.phoneNum) .header("space-phone",userEntity.phoneNum)
......
...@@ -45,12 +45,13 @@ public class MsgWebSocket { ...@@ -45,12 +45,13 @@ public class MsgWebSocket {
public static void sendToSingle(String sn, String message) { public static void sendToSingle(String sn, String message) {
try { try {
log.info("===>APP发送:sn={},message={}",sn,message);
Session session = sessions.get(sn); Session session = sessions.get(sn);
if (session != null && session.isOpen()) { if (session != null && session.isOpen()) {
synchronized (session) { // 添加同步锁 synchronized (session) { // 添加同步锁
session.getBasicRemote().sendText(message); session.getBasicRemote().sendText(message);
} }
}else{
log.warn("发送消息的连接不存在:sn={}",sn);
} }
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
...@@ -58,6 +59,10 @@ public class MsgWebSocket { ...@@ -58,6 +59,10 @@ public class MsgWebSocket {
} }
} }
public static boolean getWebSocket(String sn){
Session session = sessions.get(sn);
return session != null && session.isOpen();
}
/** /**
* 建立连接调用的方法 * 建立连接调用的方法
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment