/// <summary> /// 获取整合后的单条信息 将图片也作为字符串发送出去,图片用占位符代替 2018年12月20日 添加了文件消息,type=2 /// </summary> /// <param name="message"></param> /// <param name="fromuid"></param> /// <param name="msgtime"></param> /// <param name="fromusername"></param> /// <param name="photo"></param> /// <param name="groupid"></param> /// <param name="msgid"></param> /// <param name="type">type=0表示是存文本,type=2表示是单独的文件类型,type=3表是文本类型和图片类型的整合,type=4表示语音消息</param> /// <param name="fileurl">如果是文件/语音类型,则该字段存放的是文件的下载地址URL</param> /// <param name="duration">如果是语音消息,则记录语音消息的长度</param> /// <returns></returns> public static SingleMsg GetSingleMessage(string message, string fromuid, string msgtime, string fromusername, string photo, string groupid, string msgid, int type, string fileurl, int duration) { //var linkurl = RegexHelper.GetLinkString(message); if (type != 2 && type != 4) { /*利用正则表达式去判断,将消息分为文本、图片*/ var msgQueue = RegexHelper.GetMessageDictionaryQueue(message); var item = new SingleMsg { msgid = msgid, uid = fromuid, truename = fromusername, photo = photo, createtime = msgtime, type = type, //需要重新赋值 msg = "", //需要重新赋值 groupid = groupid, fileurl = "", duration = 0, }; foreach (var msg in msgQueue) { if (msg.Key.Contains("text")) { item.msg += msg.Value; } else if (msg.Key.Contains("img")) { item.msg += "[$PICTURE$]"; item.imgs.Add(msg.Value); item.type = 3; } } return(item); } else { var item = new SingleMsg { msgid = msgid, uid = fromuid, truename = fromusername, photo = photo, createtime = msgtime, type = type, msg = message, groupid = groupid, fileurl = fileurl, duration = duration, }; return(item); } }
/// <summary> /// 获取要发送的消息List 通过这个方法将要发送的消息都处理成一个个SingleMsg对象,将图片和文字两种类型分开 /// </summary> /// <param name="message">消息内容</param> /// <param name="fromuid">发送者ID</param> /// <param name="msgtime">发送时间</param> /// <param name="fromusername">发送者姓名</param> /// <param name="photo">发送者头像</param> /// <param name="groupid">所在群组ID</param> /// <param name="msgid">消息数据库中的msgid</param> /// <param name="type">type=0表示是存文本,type=2表示是单独的文件类型,type=3表是文本类型和图片类型的整合,type=4表示语音消息</param> /// <param name="fileurl">如果是文件/语音类型,则该字段存放的是文件的下载地址URL</param> /// <param name="duration">如果是语音消息,则记录语音消息的长度</param> /// <returns></returns> public static List <SingleMsg> GetMessageList(string message, string fromuid, string msgtime, string fromusername, string photo, string groupid, string msgid, int type, string fileurl, int duration) { var list = new List <SingleMsg>(); // 0 1 3分别表示 文字、图片、图文混合,这三种情况一样 if (type != 2 && type != 4) { /*利用正则表达式去判断,将消息分为文本、图片*/ var msgQueue = RegexHelper.GetMessageDictionaryQueue(message); foreach (var msg in msgQueue) { if (msg.Key.Contains("text")) { var item = new SingleMsg { uid = fromuid, truename = fromusername, photo = photo, createtime = msgtime, type = 0, msg = msg.Value, groupid = groupid, msgid = msgid, fileurl = "", duration = 0, }; list.Add(item); } else if (msg.Key.Contains("img")) { var item = new SingleMsg { uid = fromuid, truename = fromusername, photo = photo, createtime = msgtime, type = 1, msg = msg.Value, groupid = groupid, msgid = msgid, fileurl = "", duration = 0, }; list.Add(item); } } } else { var itemfile = new SingleMsg { uid = fromuid, truename = fromusername, photo = photo, createtime = msgtime, type = type, msg = message, groupid = groupid, msgid = msgid, fileurl = fileurl, duration = duration, }; list.Add(itemfile); } return(list); }