private static void GenerateMsgBody(WXMassMsgType msgType, string data, StringBuilder msgStr) { #region 拼接内容mediaid, content , cardid msgStr.Append("\"").Append(msgType).Append("\":{"); switch (msgType) { case WXMassMsgType.text: msgStr.Append("\"content\":\"").Append(data).Append("\""); break; case WXMassMsgType.wxcard: msgStr.Append("\"card_id\":\"").Append(data).Append("\""); break; default: msgStr.Append("\"media_id\":\"").Append(data).Append("\""); break; } msgStr.Append("},"); msgStr.Append("\"msgtype\":\"").Append(msgType); if (msgType == WXMassMsgType.mpnews) { msgStr.Append("\",").Append("\"send_ignore_reprint\":").Append(msgType); } #endregion }
/// <summary> /// 根据Tag群发消息接口 /// </summary> /// <param name="openId">openid,wxName和openId同时赋值时,以wxname优先</param> /// <param name="wxName">微信名称,wxName和openId同时赋值时,以wxname优先</param> /// <param name="msgType">群发的消息类型</param> /// <param name="data">素材消息的media_id, text类型时是content, wxcard 时是card_id </param> /// <param name="sendIgnoreReprint">当 send_ignore_reprint=1时,文章被判定为转载时,且原创文允许转载时,将继续进行群发操作。当 send_ignore_reprint =0时,文章被判定为转载时,将停止群发操作。send_ignore_reprint 默认为0</param> /// <returns></returns> public async Task <WXSendMassMsgResp> PreviewMassMsgAsync(string wxName, string openId, WXMassMsgType msgType, string data, int sendIgnoreReprint = 0) { var msgStr = new StringBuilder("{"); #region 拼接 发送用户信息 if (!string.IsNullOrEmpty(wxName)) { msgStr.Append("\"towxname\":\"").Append(wxName).Append("\","); } if (!string.IsNullOrEmpty(openId)) { msgStr.Append("\"touser\":\"").Append(openId).Append("\","); } #endregion // 拼接内容mediaid, content , cardid GenerateMsgBody(msgType, data, msgStr); msgStr.Append("}"); var req = new OssHttpRequest(); req.HttpMethod = HttpMethod.Post; req.AddressUrl = string.Concat(m_ApiUrl, "/cgi-bin/message/mass/preview"); req.CustomBody = msgStr.ToString(); return(await RestCommonOffcialAsync <WXSendMassMsgResp>(req)); }
/// <summary> /// 根据Tag群发消息接口 /// </summary> /// <param name="openIds"></param> /// <param name="msgType">群发的消息类型</param> /// <param name="data">素材消息的media_id, text类型时是content, wxcard 时是card_id </param> /// <param name="sendIgnoreReprint">当 send_ignore_reprint=1时,文章被判定为转载时,且原创文允许转载时,将继续进行群发操作。当 send_ignore_reprint =0时,文章被判定为转载时,将停止群发操作。send_ignore_reprint 默认为0</param> /// <returns></returns> public async Task <WXSendMassMsgResp> SendMassMsgByOpenIds(List <string> openIds, WXMassMsgType msgType, string data, int sendIgnoreReprint = 0) { var msgStr = new StringBuilder("{"); #region 拼接touser msgStr.Append("\"touser\":["); for (int i = 0; i < openIds.Count; i++) { if (i > 0) { msgStr.Append(","); } msgStr.Append("\"").Append(openIds[i]).Append("\""); } msgStr.Append("],"); #endregion // 拼接内容mediaid, content , cardid GenerateMsgBody(msgType, data, msgStr); msgStr.Append("}"); var req = new OssHttpRequest(); req.HttpMethod = HttpMethod.Post; req.AddressUrl = string.Concat(m_ApiUrl, "/cgi-bin/message/mass/send"); req.CustomBody = msgStr.ToString(); return(await RestCommonOffcialAsync <WXSendMassMsgResp>(req)); }
/// <summary> /// 根据Tag群发消息接口 /// </summary> /// <param name="tagId">群发到的标签的tag_id,参加用户管理中用户分组接口,若is_to_all值为true,可不填写tag_id</param> /// <param name="isToAll">用于设定是否向全部用户发送,值为true或false,选择true该消息群发给所有用户,选择false可根据tag_id发送给指定群组的用户</param> /// <param name="msgType">群发的消息类型</param> /// <param name="data">素材消息的media_id, text类型时是content, wxcard 时是card_id </param> /// <param name="sendIgnoreReprint">当 send_ignore_reprint=1时,文章被判定为转载时,且原创文允许转载时,将继续进行群发操作。当 send_ignore_reprint =0时,文章被判定为转载时,将停止群发操作。send_ignore_reprint 默认为0</param> /// <returns></returns> public async Task <WXSendMassMsgResp> SendMassMsgByTagAsync(int tagId, bool isToAll, WXMassMsgType msgType, string data, int sendIgnoreReprint = 0) { var msgStr = new StringBuilder("{"); #region 拼接filter msgStr.Append("\"filter\":{"); msgStr.Append("\"is_to_all\":").Append(isToAll).Append(","); msgStr.Append("\"tag_id\":").Append(tagId); msgStr.Append("},"); #endregion GenerateMsgBody(msgType, data, msgStr); msgStr.Append("}"); var req = new OssHttpRequest(); req.HttpMethod = HttpMethod.Post; req.AddressUrl = string.Concat(m_ApiUrl, "/cgi-bin/message/mass/sendall"); req.CustomBody = msgStr.ToString(); return(await RestCommonOffcialAsync <WXSendMassMsgResp>(req)); }