zoukankan      html  css  js  c++  java
  • openfire自定义发送消息

    加入以下类:

    这个是xml格式的,解析时可以将xml转成map,参数可自由定义

    import org.jivesoftware.smack.packet.PacketExtension;
    
    
    /**
     * 为Message扩展信息
     */
    public class ChatInfo implements PacketExtension{
        
        //元素名称小写,便于xml转map时取值
        //聊天信息元素名称
        private static String elementName = "chatinfo";
        //病例id元素名称
        private static String caseIdElement = "caseid";
        //消息类型:1文字2语音3图片4视频5就医建议
        private static String zTypeElement = "ztype";
        //发送人身份:1医生2患者
        private static String identityElement = "identity";
        //长度
        private static String msglengthElement = "msglength";
        //主键
        private static String zidElement = "zid";
        
        //发送人id
        private static String senderIdElement = "senderid";
        
        //接收人id
        private static String sendeeIdElement = "sendeeid";
        
        //极光推送接收人
        private static String tagElement = "tag";
        
        //病例id元素值
        private String caseId;
        //元素值
        private String zType;
        //元素值
        private String identity;
        //长度
        private String msglength;
        //主键
        private String zid;
        
        private String senderid;
        
        private String sendeeid;
        
        private String tag;
        
        @Override
        public String getElementName() {
            return elementName;
        }
        
        /**
         * 返回扩展的xml字符串
         * 此字符串作为message元素的子元素
         */
        @Override
        public String toXML() {
            StringBuilder sb = new StringBuilder();
            
            sb.append("<");
            sb.append(elementName);
            sb.append(">");
            
                sb.append("<");
                sb.append(caseIdElement);
                sb.append(">");
                sb.append(caseId);
                sb.append("</");
                sb.append(caseIdElement);
                sb.append(">");
                
                sb.append("<");
                sb.append(zTypeElement);
                sb.append(">");
                sb.append(zType);
                sb.append("</");
                sb.append(zTypeElement);
                sb.append(">");
            
                sb.append("<");
                sb.append(identityElement);
                sb.append(">");
                sb.append(identity);
                sb.append("</");
                sb.append(identityElement);
                sb.append(">");
                
                sb.append("<");
                sb.append(msglengthElement);
                sb.append(">");
                sb.append(msglength);
                sb.append("</");
                sb.append(msglengthElement);
                sb.append(">");
                
                sb.append("<");
                sb.append(zidElement);
                sb.append(">");
                sb.append(zid);
                sb.append("</");
                sb.append(zidElement);
                sb.append(">");
                
                sb.append("<");
                sb.append(senderIdElement);
                sb.append(">");
                sb.append(senderid);
                sb.append("</");
                sb.append(senderIdElement);
                sb.append(">");
                
                sb.append("<");
                sb.append(sendeeIdElement);
                sb.append(">");
                sb.append(sendeeid);
                sb.append("</");
                sb.append(sendeeIdElement);
                sb.append(">");
                
                sb.append("<");
                sb.append(tagElement);
                sb.append(">");
                sb.append(tag);
                sb.append("</");
                sb.append(tagElement);
                sb.append(">");
                
            sb.append("</");
            sb.append(elementName);
            sb.append(">");
            
            return sb.toString();
        }
    
        public String getCaseId() {
            return caseId;
        }
    
        public void setCaseId(String caseId) {
            this.caseId = caseId;
        }
    
        public String getzType() {
            return zType;
        }
    
        public void setzType(String zType) {
            this.zType = zType;
        }
    
        public String getIdentity() {
            return identity;
        }
    
        public void setIdentity(String identity) {
            this.identity = identity;
        }
    
        @Override
        public String getNamespace() {
            return "";
        }
    
        public String getMsglength() {
            return msglength;
        }
    
        public void setMsglength(String msglength) {
            this.msglength = msglength;
        }
    
        public String getZid() {
            return zid;
        }
    
        public void setZid(String zid) {
            this.zid = zid;
        }
    
        public String getSenderid() {
            return senderid;
        }
    
        public void setSenderid(String senderid) {
            this.senderid = senderid;
        }
    
        public String getSendeeid() {
            return sendeeid;
        }
    
        public void setSendeeid(String sendeeid) {
            this.sendeeid = sendeeid;
        }
    
        public String getTag() {
            return tag;
        }
    
        public void setTag(String tag) {
            this.tag = tag;
        }

    消息发送时将自定义的消息带上(示例用的是smack)

    public static void SendMsg(String username, String pass, String content, String toUser, String type, String caseId, String identity, String filePath, String realPath
                , String senderId, String sendeeId
                ) throws XMPPException {
            Connection con = login(username, pass);
            Chat mychat = con.getChatManager()
                    .createChat(toUser + "@" + "192.168.1.254", // 接收端的JID,JID是要加域的  zsmy-of-test
                    new MessageListener() {
                        @Override
                        public void processMessage(Chat chat, Message message) {
                            String messageBody = message.getBody();
                            Constant.MY_LOG.debug("收到信息:" + messageBody + " " + message.getFrom());
                        }
                    });
    
            Message msg = new Message();
            ChatInfo chatInfo = new ChatInfo();
            chatInfo.setCaseId(caseId);
            chatInfo.setIdentity(identity);
            chatInfo.setzType(type);
            chatInfo.setSenderid(senderId);
            chatInfo.setSendeeid(sendeeId);
            if ("3".equals(type)) {
                chatInfo.setMsglength("0");
                msg.setBody(filePath);
            } else {
                chatInfo.setMsglength(content.length() + "");
                msg.setBody(content);
                // mychat.sendMessage(content);
            }
            msg.addExtension(chatInfo); // 添加扩展内容
            mychat.sendMessage(msg);
            // con.disconnect(); // 断开连接
        }
  • 相关阅读:
    关于 HSSF 和 XSSF 功能的开发者入门指南 (Apache POI 操作 Excel)
    在Windows上安装MySQL(免安装ZIP版)
    Linux下解决中文乱码问题
    VMware安装VMware Tools
    (RHEL)Linux下的oracle(11g R2)安装过程
    每天学一点Python
    简单的Datatable转List,Json
    C# 刷票程序
    一些顿悟,和新的开始!
    每天学一点Python(2)
  • 原文地址:https://www.cnblogs.com/shihaiming/p/5981851.html
Copyright © 2011-2022 走看看