加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

微信--企业会话--示例

发布时间:2020-12-16 08:55:04 所属栏目:asp.Net 来源:网络整理
导读:这里不做讲解,只是记录下自己做过的一个功能案例:如何在.net后台中创建企业会话并发送消息? ? #region 微信 // 微信企业Id private static string Corpid = " 微信企业号ID " ; 微信管理组的凭证密钥 string Corpsecret = 微信企业号密匙 ; /// summary //

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

?

   #region 微信

        //微信企业Id
        private static string Corpid = "微信企业号ID";
        微信管理组的凭证密钥
        string Corpsecret = 微信企业号密匙;
        /// <summary>
        /// 获取token--微信
        </summary>
        <returns></returns>
        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;
        }

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

            ;
        }

         群组发消息--微信
        <param name="type">接收人类型:single|group,分别表示:群聊|单聊<param name="id">接收人的值,为userid|chatid,分别表示:成员id|会话id<param name="sender">发送人<param name="msgtype">消息类型,此时固定为:text<param name="content">消息内容bool SendMessageDialogForWeiXin(string type,1)">string id,1)">string sender,1)">string msgtype,1)"> content)
        {
            https://qyapi.weixin.qq.com/cgi-bin/chat/send?access_token={0}
            {
                receiver = new { type = type,id = id },sender = sender,msgtype = msgtype,text = new { content = content }
            };
            else
            {
                Log.WriteLog(发送企业会话消息error:" + JsonConvert.SerializeObject(data));
                 JsonConvert.SerializeObject(data));
            }
            return false;
        }
        #endregion
微信相关方法

?

#region 辅助方法
        string HttpGet( url)
        {
            var request = (HttpWebRequest)WebRequest.Create(url);

            var response = (HttpWebResponse)request.GetResponse();
            var responseString =  StreamReader(response.GetResponseStream()).ReadToEnd();
             responseString;
        }
         httpPost请求--参数为object
        <param name="url">地址<param name="postObject">Post参数传输为对象string HttpPost(string url,1)">object postObject)
        {
            string result = .Empty;

            try
            {
                 (HttpWebRequest)WebRequest.Create(url);
                var postData = JsonConvert.SerializeObject(postObject);

                var data = Encoding.UTF8.GetBytes(postData);  uft-8支持中文
                request.Method = POST;
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentType = application/json;charset=UTF-8;
                request.ContentLength = data.Length;

                using (var stream = request.GetRequestStream())
                {
                    stream.Write(data,0 (HttpWebResponse)request.GetResponse();

                result =  StreamReader(response.GetResponseStream()).ReadToEnd();
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            Log.WriteLog(发送消息结果: result);
             result;
        }
         httpPost请求--参数为string
        <param name="postString">post参数参数为字符串 postString)
        {
             (HttpWebRequest)WebRequest.Create(url);

                var data = Encoding.UTF8.GetBytes(postString);   ex.Message;
                Log.WriteLog(同步签到大屏发送消息error: result);
            }

             result;
        }
        #endregion
Http请求封装

?

  创建会议企业会话
        <param name="conferenceID">会议编码</param>
        void CreateConferenceDialog(string conferenceID,1)"> conferenceName)
        {
            创建会话数据

            会话类型集合
            DialogTypeCollection dtColl = DialogTypeAdapter.Instance.GetTColl();
            会话内容类型集合
            DialogContentTypeCollection dctColl = DialogContentTypeAdapter.Instance.GetTColl();
            会议企业会话集合
            ConferenceCompanyDialogCollection ccdColl =  ConferenceCompanyDialogCollection();
            dtColl.ForEach(dt =>
            {
                dctColl.ForEach(dct =>
                {
                    string id = Guid.NewGuid().ToString(N);
                    ConferenceCompanyDialog ccd =  ConferenceCompanyDialog()
                    {
                        ID = id,DialogCode = conferenceID,DialogContentTypeID = dct.ID,DialogTypeID = dt.ID
                    };
                    ccdColl.Add(ccd);
                });
            });
            ccdColl.ForEach(ccd =>
            {
                DialogContentType dctModel = dctColl.Find(dct => dct.ID == ccd.DialogContentTypeID);
                string userlist = ConfigurationManager.AppSettings[ConferenceCompanyDialogUser];

                bool result = ;

                #region 微信
                群组名称
                string dialogName = conferenceName.Substring(0,conferenceName.Length > 10 ? 10 : conferenceName.Length) + _ dctModel.Name;
                if (ccd.DialogTypeName == WeiXin)
                {
                    添加微信企业号数据
                    result = ConferenceCompanyDialogHelp.CreateCompanyDialogForWeiXin(ccd.DialogCode,dialogName,userlist.Split('')[0],1)">'));
                }
                #endregion

                #region IM????
                else IM由于IM还没有实现群组推送消息,所以,目前将IM的群组创建和推送即时消息暂推至以后处理???

                    #region IM创建群组临时代码
                    string appId = ConferenceCompanyDialogHelp.GetAppID("远薪移动办公");
                    /操作人userid(loginName)--暂取会话管理人
                    string[] allUserLoginName = ConfigurationManager.AppSettings["ConferenceCompanyDialogUser"].Split(',');
                    string op_user = allUserLoginName[0];
                    AttendeeConllection attColl = AttendeeAdapter.Instance.GetAttendeeConllectionByConference(conferenceID);
                    string opUserCode = attColl.Find(att => att.LoginName == op_user).AttendeeID;
                    string adminIMCode = ConferenceCompanyDialogHelp.GetIMUserID(opUserCode,appId).ToString();
                    int[] members = new int[allUserLoginName.Length];
                    for (int i = 0; i < allUserLoginName.Length; i++)
                    {
                        string userCode = attColl.Find(att => att.LoginName == allUserLoginName[i]).AttendeeID;
                        int userIMCode = ConferenceCompanyDialogHelp.GetIMUserID(userCode,appId);
                        members[i] = userIMCode;
                    }
                    /添加IM数据???????
                    ConferenceCompanyDialogHelp.CreateCompanyDialogForIM(appId,adminIMCode,members);
                    #endregion
                }
                 (result)
                {
                    添加数据库数据
                    ConferenceCompanyDialogAdapter.Instance.Update(ccd);
                }
            });
        }
创建会话案例

?

 现场服务推送消息
        <param name="attendeeID">参会人编码<param name="siteServiceID">会务服务编码void SendMessage(string attendeeID,1)"> siteServiceID)
        {
            ConferenceCompanyDialogCollection diaColl = ConferenceCompanyDialogAdapter.Instance.LoadByConferenceID(conferenceID);
            if (diaColl.Count == 该会议下没有任何企业会话);
            }

            SiteServiceModel siteModel = SiteServiceAdapter.Instance.LoadByID(siteServiceID);

            操作人userid(loginName)--暂取会话管理人
            string op_user = ConfigurationManager.AppSettings["].Split(];
             (op_user.IsEmptyOrNull())
            {
                请先配置会话管理人员);
            }
            AttendeeModel attModel = AttendeeAdapter.Instance.LoadByID(attendeeID);
            if (attModel == 该会议下没有找到参会人编码为:" + attendeeID + 的参会人);
            }

            张三(座位:3排5号,手机号:13652489652)申请饮用水 备注:WERThhjk
            string content = @"{0}(座位:{1},手机号:{2})申请{3}n备注:" + ((siteModel.Remarks.IsEmptyOrNull() || siteModel.Remarks.Trim().ToLower() == null") ? " : siteModel.Remarks);   换行符n只能放在string里有效,且使用双引号包裹,不能使用string.Format,stringbuild等方法,它们会吧n当初字符串处理

            diaColl.ForEach(dia =>#region 微信企业号推送消息

                if (dia.DialogTypeName == " && dia.DialogContentTypeName == 现场服务
                    {
                        ConferenceCompanyDialogHelp.SendMessageDialogForWeiXin(group",dia.DialogCode,op_user,text (Exception e)
                    {
                        throw e;
                    }

                }
                #region IM推送消息???
                )
                {

                }
                
            });
        }
发送消息案例

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读