这里不做讲解,只是记录下自己做过的一个功能案例:如何在.net后台中创建企业会话并发送消息?

 

   #region 微信

        //微信企业Id
        private static string Corpid = "微信企业号ID";
        //微信管理组的凭证密钥
        private static string Corpsecret = "微信企业号密匙";
        /// <summary>
        /// 获取token--微信
        /// </summary>
        /// <returns></returns>
        private static string GetAccessTokenForWeiXin()
        {
            string getUrl = string.Format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}", Corpid, Corpsecret);
            string result = HttpGet(getUrl);
            dynamic data = JsonConvert.DeserializeObject<dynamic>(result);
            return data.access_token;
        }

        /// <summary>
        /// 创建企业会话--微信
        /// </summary>
        /// <param name="chatid">会话id。字符串类型,最长32个字符。</param>
        /// <param name="name">会话标题</param>
        /// <param name="owner">管理员userid,必须是该会话userlist的成员之一</param>
        /// <param name="userlist">["zhangsan","lisi","wangwu"]会话成员列表,成员用userid来标识。会话成员必须在3人或以上,2000人以下</param>
        /// <returns></returns>
        public static bool CreateCompanyDialogForWeiXin(string chatid, string name, string owner, string[] userlist)
        {
            if (userlist.Length < 3)
            {
                throw new Exception("会话成员必须在3人或以上");
            }
            string token = GetAccessTokenForWeiXin();
            if (token.IsEmptyOrNull())
            {
                throw new Exception("无法获取微信token");
            }
            string postUrl = string.Format("https://qyapi.weixin.qq.com/cgi-bin/chat/create?access_token={0}", token);
            dynamic postData = new
            {
                chatid = chatid,
                name = name,
                owner = owner,
                userlist = userlist
            };
            string result = HttpPost(postUrl, postData);
            dynamic data = JsonConvert.DeserializeObject<dynamic>(result);
            if (data.errmsg == "ok")
            {
                return true;
            }
            return false;
        }
        /// <summary>
        /// 修改企业会话--微信
        /// </summary>
        /// <param name="chatid">会话id。字符串类型,最长32个字符。</param>
        /// <param name="op_user">操作人userid</param>
        /// <param name="name">会话标题</param>
        /// <param name="owner">管理员userid,必须是该会话userlist的成员之一</param>
        /// <param name="add_user_list">["zhaoli"]会话新增成员列表,成员用userid来标识</param>
        /// <param name="del_user_list">["zhangsan"]会话退出成员列表,成员用userid来标识</param>
        /// <returns></returns>
        public static bool UpdateCompanyDialogForWeiXin(string chatid, string op_user, string name = "", string owner = "", string[] add_user_list = null, string[] del_user_list = null)
        {
            string token = GetAccessTokenForWeiXin();
            if (token.IsEmptyOrNull())
            {
                throw new Exception("无法获取微信token");
            }
            string postUrl = string.Format("https://qyapi.weixin.qq.com/cgi-bin/chat/update?access_token={0}", token);
            dynamic postData = new
            {
                chatid = chatid,
                op_user = op_user,
                add_user_list = add_user_list == null ? new string[] { } : add_user_list,
                del_user_list = del_user_list == null ? new string[] { } : del_user_list,
            };

            string result = HttpPost(postUrl, postData);
            dynamic data = JsonConvert.DeserializeObject<dynamic>(result);
            if (data.errmsg == "ok")
            {
                return true;
            }
            return false;
        }

        /// <summary>
        /// 群组发消息--微信
        /// </summary>
        /// <param name="type">接收人类型:single|group,分别表示:群聊|单聊</param>
        /// <param name="id">接收人的值,为userid|chatid,分别表示:成员id|会话id</param>
        /// <param name="sender">发送人</param>
        /// <param name="msgtype">消息类型,此时固定为:text</param>
        /// <param name="content">消息内容</param>
        /// <returns></returns>
        public static bool SendMessageDialogForWeiXin(string type, string id, string sender, string msgtype, string content)
        {
            string token = GetAccessTokenForWeiXin();
            if (token.IsEmptyOrNull())
            {
                throw new Exception("无法获取微信token");
            }
            string postUrl = string.Format("https://qyapi.weixin.qq.com/cgi-bin/chat/send?access_token={0}", token);
            dynamic postData = new
            {
                receiver = new { type = type, id = id },
                sender = sender,
                msgtype = msgtype,
                text = new { content = content }
            };
            string result = HttpPost(postUrl, postData);
            dynamic data = JsonConvert.DeserializeObject<dynamic>(result);
            if (data.errmsg == "ok")
            {
                return true;
            }
            else
            {
                Log.WriteLog("发送企业会话消息error:" + JsonConvert.SerializeObject(data));
                throw new Exception("发送企业会话消息error:" + JsonConvert.SerializeObject(data));
            }
            //return false;
        }
        #endregion
微信相关方法

相关文章: