/// <summary> /// 【异步方法】发送简单消息(文本、图片、文件或语音) /// </summary> /// <param name="accessTokenOrAppKey">调用接口凭证(AccessToken)或AppKey(根据AccessTokenContainer.BuildingKey(corpId, corpSecret)方法获得)</param> /// <param name="chatId">会话id</param> /// <param name="msgType">消息类型,text|image|file|voice</param> /// <param name="contentOrMediaId">文本消息是content,图片或文件是mediaId</param> /// <param name="safe">表示是否是保密消息,0表示否,1表示是,默认0</param> /// <param name="timeOut">代理请求超时时间(毫秒)</param> /// <returns></returns> public static async Task <WorkJsonResult> SendChatSimpleMessageAsync(string accessTokenOrAppKey, string chatId, ChatMsgType msgType, string contentOrMediaId, int safe = 0, int timeOut = Config.TIME_OUT) { return(await ApiHandlerWapper.TryCommonApiAsync(async accessToken => { BaseSendChatMessageData data; switch (msgType) { case ChatMsgType.text: data = new SendTextMessageData(chatId, contentOrMediaId, safe); break; case ChatMsgType.image: data = new SendImageMessageData(chatId, contentOrMediaId, safe); break; case ChatMsgType.voice: data = new SendVoiceMessageData(chatId, contentOrMediaId, safe); break; case ChatMsgType.file: data = new SendFileMessageData(chatId, contentOrMediaId, safe); break; default: throw new ArgumentOutOfRangeException("msgType"); } return await CommonJsonSend.SendAsync <WorkJsonResult>(accessToken, _urlFormatSend, data, CommonJsonSendType.POST, timeOut); }, accessTokenOrAppKey)); }
/// <summary> /// 发消息 /// </summary> /// <param name="accessTokenOrAppKey"></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)); }
/// <summary> /// 【异步方法】发消息 /// </summary> /// <param name="accessToken"></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 async Task <QyJsonResult> SendChatMessageAsync(string accessToken, string sender, Chat_Type type, ChatMsgType msgType, string chatIdOrUserId, string contentOrMediaId, int timeOut = Config.TIME_OUT) { 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(await Core.CommonAPIs.CommonJsonSend.SendAsync <QyJsonResult>(null, url, data, CommonJsonSendType.POST, timeOut)); }
/// <summary> /// 发消息 /// </summary> /// <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 QyJsonResult SendChatMessage(string sender, ChatTypeEnum type, ChatMsgTypeEnum msgType, string chatIdOrUserId, string contentOrMediaId) { BaseSendChatMessageData data; switch (msgType) { case ChatMsgTypeEnum.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 ChatMsgTypeEnum.image: data = new SendImageMessageData() { receiver = new Receiver() { type = type.ToString(), id = chatIdOrUserId }, sender = sender, msgtype = msgType.ToString(), image = new ChatImage() { media_id = contentOrMediaId } }; break; case ChatMsgTypeEnum.file: data = new SendFileMessageData() { receiver = new Receiver() { type = type.ToString(), id = chatIdOrUserId }, sender = sender, msgtype = msgType.ToString(), file = new ChatFile() { media_id = contentOrMediaId } }; break; default: throw new ArgumentOutOfRangeException("msgType"); } return(this.Post <QyJsonResult>(string.Format("https://qyapi.weixin.qq.com/cgi-bin/chat/send?access_token={0}", AccessToken.access_token), data)); }