关于MessageContentFactory.decodeMessageContent这个方法从数据库解析数据, 为啥解析不了我通过API发送的消息

wenzhouh 1天前 20

MessageContent messageContent = MessageContentFactory.decodeMessageContent(protoContent); 对于在页面上发的图片,文件类型可以解析成功,但是我通过API发送的文件,图片它就无法解析出来,protoContent也是有值的。 这是我的API方法:

最新回复 (6)
  • wenzhouh 1天前
    引用 2
        public static void sendImageMessage(String fromUser, String toUser, String url, String base64Thumbnail) {
            Conversation conversation = new Conversation();
            conversation.setTarget(toUser);
            conversation.setType(ProtoConstants.ConversationType.ConversationType_Private);
            MessagePayload payload = new MessagePayload();
            payload.setType(3);
            payload.setRemoteMediaUrl(url);
            payload.setBase64edData(base64Thumbnail);
            payload.setMediaType(ProtoConstants.MessageMediaType.IMAGE);
            payload.setSearchableContent("[图片]");

            sendMessage(fromUser, conversation, payload);
        }
  • wenzhouh 1天前
    引用 3
        public static void sendFileMessage(String fromUser, String toUser, String url, String filename) {
            Conversation conversation = new Conversation();
            conversation.setTarget(toUser);
            conversation.setType(ProtoConstants.ConversationType.ConversationType_Private);
            MessagePayload payload = new MessagePayload();
            payload.setType(5);
            payload.setRemoteMediaUrl(url);
            payload.setMediaType(ProtoConstants.MessageMediaType.FILE);
            payload.setSearchableContent(filename);

            sendMessage(fromUser, conversation, payload);
        }
  • wenzhouh 1天前
    引用 4
        /**
         * 发送消息
         *
         * @param fromUser     发送者
         * @param conversation 会话
         * @param payload      消息负载
         */
        private static void sendMessage(String fromUser, Conversation conversation, MessagePayload payload) {
            try {
                IMResult<SendMessageResult> resultSendMessage = MessageAdmin.sendMessage(fromUser, conversation, payload);
                if (resultSendMessage != null && resultSendMessage.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) {
                    LOG.info("send message success");
                } else {
                    LOG.error("send message error {}", resultSendMessage != null ? resultSendMessage.getErrorCode().code : "unknown");
                }
            } catch (Exception e) {
                e.printStackTrace();
                LOG.error("send message error {}", e.getLocalizedMessage());
            }
        }
  • HeavyRain 1天前
    引用 5
    你试试客户端发送的能解析吗?有可能你发的不对
  • HeavyRain 1天前
    引用 6
    server sdk的示例里也有组建消息发送的代码,用那个代码发送试试能不能解析
  • wenzhouh 5小时前
    引用 7
    已解决, 要构造成这样的MessagePayload ,才能正常解析。
    TextMessageContent textMessageContent = new TextMessageContent("测试文本消息");  
    //消息转成Payload并发送
    MessagePayload payload = textMessageContent.encode();
返回