Example #1
0
        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
        }
Example #2
0
        /// <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));
        }
Example #3
0
        /// <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));
        }
Example #4
0
        /// <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));
        }