/// <summary> /// 处理发来的消息 /// </summary> /// <param name="dic"></param> public async Task handle_msg(JObject dic) { WriteLog("handle message"); if (null != messageHandle) { messageHandle.WxSync(dic); } int intMegCount = dic["AddMsgList"].Count(); if (intMegCount == 0) { return; } WriteLog(Const.LOG_MSG_NEW_MSG, intMegCount); JArray msgs = (JArray)dic["AddMsgList"]; foreach (JObject element in msgs) { //JsonObject msg = element.getAsJsonObject(); String msgType = ((JValue)element["MsgType"]).Value.ToString(); String content = ((JValue)element["Content"]).Value.ToString().Replace("<", "<").Replace(">", ">"); ChatMessage userMessage = new ChatMessage(); userMessage.messageId = ((JValue)element["MsgId"]).Value.ToString(); userMessage.RawMsg = element; userMessage.messageType = (EnumMsgType)(int.Parse(msgType)); userMessage.From.UserName = ((JValue)element["FromUserName"]).Value.ToString(); userMessage.To.UserName = ((JValue)element["ToUserName"]).Value.ToString(); switch (userMessage.messageType) { case EnumMsgType.MSGTYPE_TEXT: // 地理位置消息 if (content.Contains("pictype=location")) { String location = content.Split(new string[] { "<br/>" }, StringSplitOptions.None)[1]; userMessage.Location = location; userMessage.message = String.Format(Const.LOG_MSG_LOCATION, location); } else { // 普通文本 String text = null; if (content.Contains(":<br/>")) { text = content.Split(new string[] { ":<br/>" }, StringSplitOptions.None)[1]; } else { text = content; } userMessage.message = text; //userMessage.Log = text.Replace("<br/>", "\n"); } break; case EnumMsgType.MSGTYPE_IMAGE: //byte[] bts = await GetMessageImg(msgId); WriteLog(Const.LOG_MSG_PICTURE, ""); break; case EnumMsgType.MSGTYPE_STATUSNOTIFY: WriteLog(Const.LOG_MSG_NOTIFY_PHONE); break; } //// 文本groupMessage //if (conf["MSGTYPE_TEXT"] == msgType) //{ //} //else if (conf["MSGTYPE_STATUSNOTIFY"] == msgType) //{ // WriteLog(Const.LOG_MSG_NOTIFY_PHONE); // return; //} await this.show_msg(userMessage); //Boolean isGroupMsg = (((JValue)element["FromUserName"]).Value.ToString() + ((JValue)element["ToUserName"]).Value.ToString()).Contains("@@"); if (userMessage.isGroup) { GroupMessage groupMessage = await make_group_msg(userMessage); if (null != messageHandle) { messageHandle.groupMessage(groupMessage); } } else { if (null != messageHandle) { messageHandle.userMessage(userMessage); } } } }