微信--企业会话--示例
发布时间: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 ? 创建会议企业会话 <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推送消息??? ) { } }); } ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何跟踪IIS服务器性能
- asp.net-mvc-3 – Facebook身份验证和奇怪的重定向行为
- asp.net-mvc-3 – 部署到“真实”IIs网站时默认Razor View的
- asp.net – 当使用HttpContextScoped()时,StructureMap不会
- asp.net-mvc – 在Html.BeginForm()中使用RouteValueDicton
- asp.net – 如何从我的网站项目中删除未使用的CSS类?
- asp.net-mvc – 以下多租户应用程序示例(MVC Ninject)
- 将ASP.NET Web窗体托管为Windows Azure网站
- asp.net – 从ASPX中的URL检索GET变量
- asp.net – recaptcha https问题https://api-secure.recapt
推荐文章
站长推荐
热点阅读