/// <summary> /// 发消息 /// </summary> /// <param name="accessTokenOrAppKey">调用接口凭证(AccessToken)或AppKey(根据AccessTokenContainer.BuildingKey(corpId, corpSecret)方法获得)</param> /// <param name="sender">发送人的userId</param> /// <param name="type">接收人类型:single|group,分别表示:群聊|单聊</param> /// <param name="msgType">消息类型,text|image|file</param> /// <param name="chatIdOrUserId">会话值,为userid|chatid,分别表示:成员id|会话id,单聊是userid,群聊是chatid</param> /// <param name="contentOrMediaId">文本消息是content,图片或文件是mediaId</param> /// <param name="timeOut"></param> /// <returns></returns> public static WorkJsonResult SendChatMessage(string accessTokenOrAppKey, string sender, Chat_Type type, ChatMsgType msgType, string chatIdOrUserId, string contentOrMediaId, int timeOut = Config.TIME_OUT) { return(ApiHandlerWapper.TryCommonApi(accessToken => { var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/chat/send?access_token={0}", accessToken.AsUrlData()); BaseSendChatMessageData data; switch (msgType) { case ChatMsgType.text: data = new SendTextMessageData() { receiver = new Receiver() { type = type.ToString(), id = chatIdOrUserId }, sender = sender, msgtype = msgType.ToString(), text = new Chat_Content() { content = contentOrMediaId } }; break; case ChatMsgType.image: data = new SendImageMessageData() { receiver = new Receiver() { type = type.ToString(), id = chatIdOrUserId }, sender = sender, msgtype = msgType.ToString(), image = new Chat_Image() { media_id = contentOrMediaId } }; break; case ChatMsgType.file: data = new SendFileMessageData() { receiver = new Receiver() { type = type.ToString(), id = chatIdOrUserId }, sender = sender, msgtype = msgType.ToString(), file = new Chat_File() { media_id = contentOrMediaId } }; break; default: throw new ArgumentOutOfRangeException("msgType"); } return CommonJsonSend.Send <WorkJsonResult>(null, url, data, CommonJsonSendType.POST, timeOut); }, accessTokenOrAppKey)); }