|
|
@@ -315,7 +315,7 @@ public class QwMsgController {
|
|
|
// 接收处理群消息
|
|
|
processRoomMessage(wxWorkMsgResp, wxWorkMessageDTO, id, serverId);
|
|
|
} catch (Exception e) {
|
|
|
- log.error("接收处理群消息失败 err: {}", e.getMessage(), e);
|
|
|
+ log.error("接收处理群消息失败 info: {} err: {}", json, e.getMessage(), e);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
@@ -455,25 +455,29 @@ public class QwMsgController {
|
|
|
qwUserVoiceLogService.addQuUserVoiceByIpadCallback(id,extId,recordType,totalSeconds,wxWorkMsgResp.getUuid());
|
|
|
}
|
|
|
|
|
|
- // 处理文本消息
|
|
|
- if (wxWorkMessageDTO.getMsgtype() == 2 || wxWorkMessageDTO.getMsgtype() == 0) {
|
|
|
- processTextMessage(id, userId, wxWorkMessageDTO.getContent(), wxWorkMsgResp, sendType, false, null, null);
|
|
|
- }
|
|
|
- // 语音消息
|
|
|
- if (wxWorkMessageDTO.getMsgtype() == 16) {
|
|
|
- processVoiceMessage(serverId, wxWorkMessageDTO.getContent(), wxWorkMessageDTO, wxWorkMsgResp, id, userId, sendType, false, null, null);
|
|
|
- }
|
|
|
- // 图片消息
|
|
|
- if (wxWorkMessageDTO.getMsgtype() == 101){
|
|
|
- processImageMessage(serverId, wxWorkMessageDTO, wxWorkMsgResp, id, userId, sendType, false, null, null);
|
|
|
- }
|
|
|
- // gif 表情消息
|
|
|
- if (wxWorkMessageDTO.getMsgtype() == 104){
|
|
|
- processEmotionDynamicMessage(wxWorkMessageDTO, wxWorkMsgResp, id, userId, sendType, false, null, null);
|
|
|
- }
|
|
|
- // 小程序消息
|
|
|
- if (wxWorkMessageDTO.getMsgtype() == 78) {
|
|
|
- processMiniAppMessage(serverId, wxWorkMessageDTO, wxWorkMsgResp, id, userId, sendType, false, null, null);
|
|
|
+ try {
|
|
|
+ // 处理文本消息
|
|
|
+ if (wxWorkMessageDTO.getMsgtype() == 2 || wxWorkMessageDTO.getMsgtype() == 0) {
|
|
|
+ processTextMessage(id, sender, receiver, serverId, wxWorkMessageDTO.getContent(), wxWorkMsgResp, false, null, null);
|
|
|
+ }
|
|
|
+ // 语音消息
|
|
|
+ if (wxWorkMessageDTO.getMsgtype() == 16) {
|
|
|
+ processVoiceMessage(id, sender, receiver, serverId, wxWorkMessageDTO.getContent(), wxWorkMessageDTO, wxWorkMsgResp, false, null, null);
|
|
|
+ }
|
|
|
+ // 图片消息
|
|
|
+ if (wxWorkMessageDTO.getMsgtype() == 101){
|
|
|
+ processImageMessage(id, sender, receiver, serverId, wxWorkMessageDTO, wxWorkMsgResp, false, null, null);
|
|
|
+ }
|
|
|
+ // gif 表情消息
|
|
|
+ if (wxWorkMessageDTO.getMsgtype() == 104){
|
|
|
+ processEmotionDynamicMessage(id, sender, receiver, serverId, wxWorkMessageDTO, wxWorkMsgResp, false, null, null);
|
|
|
+ }
|
|
|
+ // 小程序消息
|
|
|
+ if (wxWorkMessageDTO.getMsgtype() == 78) {
|
|
|
+ processMiniAppMessage(id, sender, receiver, serverId, wxWorkMessageDTO, wxWorkMsgResp, false, null, null);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("接收处理个微消息失败 info: {} err: {}", json, e.getMessage(), e);
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
@@ -602,35 +606,36 @@ public class QwMsgController {
|
|
|
|
|
|
/**
|
|
|
* 处理文本消息
|
|
|
- * @param id 企微用户ID
|
|
|
- * @param userId 消息发送者ID
|
|
|
+ * @param qwUserId 企微用户ID
|
|
|
+ * @param senderVid 消息发送者ID
|
|
|
+ * @param receiverVid 消息接收者ID
|
|
|
+ * @param serverId 服务器ID
|
|
|
* @param content 消息内容
|
|
|
* @param wxWorkMsgResp 回调信息对象
|
|
|
- * @param sendType 发送者类型 1客户 2销售
|
|
|
* @param isRoom 是否群聊
|
|
|
* @param chatId 会话ID(群聊才有)
|
|
|
* @param chatAvatar 群头像(群聊才有)
|
|
|
*/
|
|
|
- private void processTextMessage(Long id, Long userId, String content, WxWorkMsgResp wxWorkMsgResp, Integer sendType, boolean isRoom, String chatId, String chatAvatar) {
|
|
|
+ private void processTextMessage(Long qwUserId, Long senderVid, Long receiverVid, Long serverId, String content, WxWorkMsgResp wxWorkMsgResp, boolean isRoom, String chatId, String chatAvatar) {
|
|
|
// 保存聊天消息
|
|
|
- QwMessageListVO message = aiHookService.saveQwMsg(id, userId, content, wxWorkMsgResp.getUuid(), sendType, wxWorkMsgResp.getJson(), 1, isRoom, chatId, chatAvatar);
|
|
|
+ QwMessageListVO message = aiHookService.saveQwMsg(qwUserId, senderVid, receiverVid, serverId, content, wxWorkMsgResp.getUuid(), wxWorkMsgResp.getJson(), 1, isRoom, chatId, chatAvatar);
|
|
|
QwImSocket.broadcast(message);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 处理语音消息
|
|
|
+ * @param qwUserId 企微用户ID
|
|
|
+ * @param senderVid 消息发送者ID
|
|
|
+ * @param receiverVid 消息接收者ID
|
|
|
* @param serverId 服务器ID
|
|
|
* @param wxWorkMessageDTO 消息DTO
|
|
|
* @param content 翻译后的内容
|
|
|
* @param wxWorkMsgResp 回调信息对象
|
|
|
- * @param id 企微用户ID
|
|
|
- * @param userId 消息发送者ID
|
|
|
- * @param sendType 发送者类型 1客户 2销售
|
|
|
* @param isRoom 是否群聊
|
|
|
* @param chatId 会话ID(群聊才有)
|
|
|
* @param chatAvatar 群头像(群聊才有)
|
|
|
*/
|
|
|
- private void processVoiceMessage(Long serverId, String content, WxWorkMessageDTO wxWorkMessageDTO, WxWorkMsgResp wxWorkMsgResp, Long id, Long userId, Integer sendType, boolean isRoom, String chatId, String chatAvatar) {
|
|
|
+ private void processVoiceMessage(Long qwUserId, Long senderVid, Long receiverVid, Long serverId, String content, WxWorkMessageDTO wxWorkMessageDTO, WxWorkMsgResp wxWorkMsgResp, boolean isRoom, String chatId, String chatAvatar) {
|
|
|
String voiceFileName = IdUtils.fastSimpleUUID() + ".silk";
|
|
|
WxWorkResponseDTO<String> fileUrlResp =
|
|
|
aiHookService.getFileUrl(wxWorkMsgResp.getUuid(), wxWorkMessageDTO.getVoice_id(), wxWorkMessageDTO.getAes_key(), 5, voiceFileName, wxWorkMessageDTO.getVoice_size(), serverId);
|
|
|
@@ -652,31 +657,33 @@ public class QwMsgController {
|
|
|
ste.setMsgid(wxWorkMessageDTO.getMsg_id());
|
|
|
ste.setUuid(wxWorkMsgResp.getUuid());
|
|
|
WxWorkResponseDTO<WxwSpeechToTextEntityRespDTO> dto = wxWorkService.SpeechToTextEntity(ste, serverId);
|
|
|
- content = dto.getData().getText();
|
|
|
+ if (dto.getErrcode() == 0) {
|
|
|
+ content = dto.getData().getText();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- com.alibaba.fastjson.JSONObject json = new com.alibaba.fastjson.JSONObject();
|
|
|
+ JSONObject json = new JSONObject();
|
|
|
json.put("url", url);
|
|
|
json.put("content", content);
|
|
|
|
|
|
// 保存聊天消息
|
|
|
- QwMessageListVO message = aiHookService.saveQwMsg(id, userId, json.toString(), wxWorkMsgResp.getUuid(), sendType, wxWorkMsgResp.getJson(), 4, isRoom, chatId, chatAvatar);
|
|
|
+ QwMessageListVO message = aiHookService.saveQwMsg(qwUserId, senderVid, receiverVid, serverId, json.toString(), wxWorkMsgResp.getUuid(), wxWorkMsgResp.getJson(), 4, isRoom, chatId, chatAvatar);
|
|
|
QwImSocket.broadcast(message);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 处理图片消息
|
|
|
+ * @param qwUserId 企微用户ID
|
|
|
+ * @param senderVid 消息发送者ID
|
|
|
+ * @param receiverVid 消息接收者ID
|
|
|
* @param serverId 服务器ID
|
|
|
* @param wxWorkMessageDTO 消息DTO
|
|
|
* @param wxWorkMsgResp 回调信息对象
|
|
|
- * @param id 企微用户ID
|
|
|
- * @param userId 消息发送者ID
|
|
|
- * @param sendType 发送者类型 1客户 2销售
|
|
|
* @param isRoom 是否群聊
|
|
|
* @param chatId 会话ID(群聊才有)
|
|
|
* @param chatAvatar 群头像(群聊才有)
|
|
|
*/
|
|
|
- private void processImageMessage(Long serverId, WxWorkMessageDTO wxWorkMessageDTO, WxWorkMsgResp wxWorkMsgResp, Long id, Long userId, Integer sendType, boolean isRoom, String chatId, String chatAvatar) {
|
|
|
+ private void processImageMessage(Long qwUserId, Long senderVid, Long receiverVid, Long serverId, WxWorkMessageDTO wxWorkMessageDTO, WxWorkMsgResp wxWorkMsgResp, boolean isRoom, String chatId, String chatAvatar) {
|
|
|
String fileName = IdUtils.fastSimpleUUID() + ".jpg";
|
|
|
WxWorkResponseDTO<String> fileUrlResp =
|
|
|
aiHookService.getFileUrl(wxWorkMsgResp.getUuid(), wxWorkMessageDTO.getFile_id(), wxWorkMessageDTO.getAes_key(), wxWorkMessageDTO.getOpenim_cdn_authkey(), fileName, wxWorkMessageDTO.getFile_size(), serverId);
|
|
|
@@ -687,41 +694,42 @@ public class QwMsgController {
|
|
|
|
|
|
String content = fileUrlResp.getData();
|
|
|
// 保存聊天消息
|
|
|
- QwMessageListVO message = aiHookService.saveQwMsg(id, userId, content, wxWorkMsgResp.getUuid(), sendType, wxWorkMsgResp.getJson(), 2, isRoom, chatId, chatAvatar);
|
|
|
+ QwMessageListVO message = aiHookService.saveQwMsg(qwUserId, senderVid, receiverVid, serverId, content, wxWorkMsgResp.getUuid(), wxWorkMsgResp.getJson(), 2, isRoom, chatId, chatAvatar);
|
|
|
QwImSocket.broadcast(message);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 处理动态表情消息
|
|
|
+ * @param qwUserId 企微用户ID
|
|
|
+ * @param senderVid 消息发送者ID
|
|
|
+ * @param receiverVid 消息接收者ID
|
|
|
+ * @param serverId 服务器ID
|
|
|
* @param wxWorkMessageDTO 消息DTO
|
|
|
* @param wxWorkMsgResp 回调信息对象
|
|
|
- * @param id 企微用户ID
|
|
|
- * @param userId 消息发送者ID
|
|
|
- * @param sendType 发送者类型 1客户 2销售
|
|
|
* @param isRoom 是否群聊
|
|
|
* @param chatId 会话ID(群聊才有)
|
|
|
* @param chatAvatar 群头像(群聊才有)
|
|
|
*/
|
|
|
- private void processEmotionDynamicMessage(WxWorkMessageDTO wxWorkMessageDTO, WxWorkMsgResp wxWorkMsgResp, Long id, Long userId, int sendType, boolean isRoom, String chatId, String chatAvatar) {
|
|
|
+ private void processEmotionDynamicMessage(Long qwUserId, Long senderVid, Long receiverVid, Long serverId, WxWorkMessageDTO wxWorkMessageDTO, WxWorkMsgResp wxWorkMsgResp, boolean isRoom, String chatId, String chatAvatar) {
|
|
|
String content = wxWorkMessageDTO.getUrl();
|
|
|
// 保存聊天消息
|
|
|
- QwMessageListVO message = aiHookService.saveQwMsg(id, userId, content, wxWorkMsgResp.getUuid(), sendType, wxWorkMsgResp.getJson(), 3, isRoom, chatId, chatAvatar);
|
|
|
+ QwMessageListVO message = aiHookService.saveQwMsg(qwUserId, senderVid, receiverVid, serverId, content, wxWorkMsgResp.getUuid(), wxWorkMsgResp.getJson(), 3, isRoom, chatId, chatAvatar);
|
|
|
QwImSocket.broadcast(message);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 小程序消息处理
|
|
|
+ * @param qwUserId 企微用户ID
|
|
|
+ * @param senderVid 消息发送者ID
|
|
|
+ * @param receiverVid 消息接收者ID
|
|
|
* @param serverId 服务器ID
|
|
|
* @param wxWorkMessageDTO 消息DTO
|
|
|
* @param wxWorkMsgResp 回调信息对象
|
|
|
- * @param id 企微用户ID
|
|
|
- * @param userId 消息发送者ID
|
|
|
- * @param sendType 发送者类型 1客户 2销售
|
|
|
* @param isRoom 是否群聊
|
|
|
* @param chatId 会话ID(群聊才有)
|
|
|
* @param chatAvatar 群头像(群聊才有)
|
|
|
*/
|
|
|
- private void processMiniAppMessage(Long serverId, WxWorkMessageDTO wxWorkMessageDTO, WxWorkMsgResp wxWorkMsgResp, Long id, Long userId, int sendType, boolean isRoom, String chatId, String chatAvatar) {
|
|
|
+ private void processMiniAppMessage(Long qwUserId, Long senderVid, Long receiverVid, Long serverId, WxWorkMessageDTO wxWorkMessageDTO, WxWorkMsgResp wxWorkMsgResp, boolean isRoom, String chatId, String chatAvatar) {
|
|
|
String thumbName = IdUtils.fastSimpleUUID() + ".jpg";
|
|
|
WxWorkResponseDTO<String> fileUrlResp =
|
|
|
aiHookService.getFileUrl(wxWorkMsgResp.getUuid(), wxWorkMessageDTO.getThumbFileId(), wxWorkMessageDTO.getThumbAESKey(), 1, thumbName, wxWorkMessageDTO.getSize(), serverId);
|
|
|
@@ -740,7 +748,7 @@ public class QwMsgController {
|
|
|
json.put("thumbnail", fileUrlResp.getData());
|
|
|
|
|
|
// 保存聊天消息
|
|
|
- QwMessageListVO message = aiHookService.saveQwMsg(id, userId, json.toString(), wxWorkMsgResp.getUuid(), sendType, wxWorkMsgResp.getJson(), 5, isRoom, chatId, chatAvatar);
|
|
|
+ QwMessageListVO message = aiHookService.saveQwMsg(qwUserId, senderVid, receiverVid, serverId, json.toString(), wxWorkMsgResp.getUuid(), wxWorkMsgResp.getJson(), 5, isRoom, chatId, chatAvatar);
|
|
|
QwImSocket.broadcast(message);
|
|
|
}
|
|
|
|
|
|
@@ -752,16 +760,6 @@ public class QwMsgController {
|
|
|
Long receiver = wxWorkMessageDTO.getReceiver();
|
|
|
Long sender = wxWorkMessageDTO.getSender();
|
|
|
|
|
|
- // 1客户 2销售
|
|
|
- int sendType = 2;
|
|
|
-
|
|
|
- // 消息发送者用户ID
|
|
|
- Long userId = receiver;
|
|
|
- if (receiver != 0 && 2000000000000000L - receiver > 0){
|
|
|
- sendType = 1;
|
|
|
- userId = sender;
|
|
|
- }
|
|
|
-
|
|
|
WxWorkRoomId2ChatIdDTO roomId2ChatIdDTO = new WxWorkRoomId2ChatIdDTO();
|
|
|
roomId2ChatIdDTO.setUuid(wxWorkMsgResp.getUuid());
|
|
|
roomId2ChatIdDTO.setRoom_id(wxWorkMessageDTO.getRoom_conversation_id());
|
|
|
@@ -783,23 +781,23 @@ public class QwMsgController {
|
|
|
|
|
|
// 处理文本消息
|
|
|
if (wxWorkMessageDTO.getMsgtype() == 2 || wxWorkMessageDTO.getMsgtype() == 0) {
|
|
|
- processTextMessage(qwUserId, userId, wxWorkMessageDTO.getContent(), wxWorkMsgResp, sendType, true, chatId, chatAvatar);
|
|
|
+ processTextMessage(qwUserId, sender, receiver, serverId, wxWorkMessageDTO.getContent(), wxWorkMsgResp, true, chatId, chatAvatar);
|
|
|
}
|
|
|
// 语音消息
|
|
|
if (wxWorkMessageDTO.getMsgtype() == 16) {
|
|
|
- processVoiceMessage(serverId, wxWorkMessageDTO.getContent(), wxWorkMessageDTO, wxWorkMsgResp, qwUserId, userId, sendType, true, chatId, chatAvatar);
|
|
|
+ processVoiceMessage(qwUserId, sender, receiver, serverId, wxWorkMessageDTO.getContent(), wxWorkMessageDTO, wxWorkMsgResp, true, chatId, chatAvatar);
|
|
|
}
|
|
|
// 图片消息
|
|
|
if (wxWorkMessageDTO.getMsgtype() == 101){
|
|
|
- processImageMessage(serverId, wxWorkMessageDTO, wxWorkMsgResp, qwUserId, userId, sendType, true, chatId, chatAvatar);
|
|
|
+ processImageMessage(qwUserId, sender, receiver, serverId, wxWorkMessageDTO, wxWorkMsgResp, true, chatId, chatAvatar);
|
|
|
}
|
|
|
// gif 表情消息
|
|
|
if (wxWorkMessageDTO.getMsgtype() == 104){
|
|
|
- processEmotionDynamicMessage(wxWorkMessageDTO, wxWorkMsgResp, qwUserId, userId, sendType, true, chatId, chatAvatar);
|
|
|
+ processEmotionDynamicMessage(qwUserId, sender, receiver, serverId, wxWorkMessageDTO, wxWorkMsgResp, true, chatId, chatAvatar);
|
|
|
}
|
|
|
// 小程序消息
|
|
|
if (wxWorkMessageDTO.getMsgtype() == 78) {
|
|
|
- processMiniAppMessage(serverId, wxWorkMessageDTO, wxWorkMsgResp, qwUserId, userId, sendType, true, chatId, chatAvatar);
|
|
|
+ processMiniAppMessage(qwUserId, sender, receiver, serverId, wxWorkMessageDTO, wxWorkMsgResp, true, chatId, chatAvatar);
|
|
|
}
|
|
|
}
|
|
|
|