#使用技巧#利用二开插件实现:企业微信消息推送
一、业务背景
目前金蝶云星空依托“业务监控”轻应用可以直接与企业微信集成,实现消息推送,但是该方式比较死板,无法在系统各个节点实现配置,而且目前对接轻应用也需要收费了,以后收费的场景只会更多
二、关键代码
2.1、获取Token
附上官方接口文档https://developer.work.weixin.qq.com/document/path/91039
//此处我没有直接调用企业微信的地址,下面注意事项有讲解
static string GetQYAccessToken(string corpid, string corpsecret) { string getAccessTokenUrl = string.Format("http://XXXXXX/qywx?corpid={0}&corpsecret={1}", corpid, corpsecret); string accessToken = ""; string respText = ""; string url = string.Format(getAccessTokenUrl, corpid, corpsecret); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (Stream resStream = response.GetResponseStream()) { StreamReader reader = new StreamReader(resStream, Encoding.Default); respText = reader.ReadToEnd(); resStream.Close(); } try { RespModel resp = JsonHelper.JsonToT<RespModel>(respText); accessToken = resp.access_token.ToString(); } catch (Exception) { } return accessToken; }
2.2、在金蝶做一个企业微信与金蝶的用户对应表,主要就是发送消息的时候,可以将金蝶用户转为企微的用户id,发送多个用户用|隔开;
2.3选择发送消息的形式
目前可以推送 文本、图片、语音、卡片、文件等好多种
附上官方接口文档https://developer.work.weixin.qq.com/document/path/90236
示例一个文本推送
public string SendText(string empCode, string message) { string accessToken = ""; string postUrl = ""; string param = ""; string postResult = ""; accessToken = GetQYAccessToken(corpid, corpsecret); postUrl = string.Format(messageSendURI, accessToken); CorpSendText paramData = new CorpSendText(message); foreach (string item in empCode.Split('|')) { paramData.touser = item; param = JsonConvert.SerializeObject(paramData); postResult = PostWebRequest(postUrl, param, Encoding.UTF8); } return param + postResult; }
2.4、金蝶表单或者服务插件处理推送
int userid = Convert.ToInt32(dt1.Rows[0]["FUSERID"]); string QYWXID = Convert.ToString(dt1.Rows[0]["F_QYWXID"]); //金蝶右下角弹窗 SaveBroadCastMsg(Context, userid); //金蝶消息 string title = "您有一条新订单,单据编号:" + fbillno + ",PO#:" + FPO + ",客户:" + FCUSTNAME + ",首批要货日期:" + FYHRQ + ",请及时处理"; string content = "您有一条新订单,单据编号:" + fbillno + ",PO#:" + FPO + ",客户:" + FCUSTNAME + ",首批要货日期:" + FYHRQ + ",请及时处理,点击上方“查看单据”可以直接打开本单据"; SendMessage(Context, "SAL_SaleOrder", fid, title, content, DateTime.Now, userid); //推送企业微信消息 QYWeixinHelper QYWeixinHelper = new QYWeixinHelper(); QYWeixinHelper.SendText(QYWXID, title);
三、特别注意
现在此类的例子百度一搜一大堆,但是在金蝶公有云环境需要注意,目前在公有云环境无法直接调用企业微信的接口,你连可信IP都填不上,填写企业微信会提示你这个是“开发服务商的IP,开发请咨询服务商”类似的提示;这是因为企微对金蝶接口收费了,金蝶的公有云的IP,在企微都有备案,所以无法直接在金蝶公有云调用企微接口(针对的近两年开通的企微)
解决方案也很简单,在本地服务器部署一个nginx反向代理,公有云调用本地反向代理的,然后本地服务器再往企微发送消息即可
#使用技巧#利用二开插件实现:企业微信消息推送
一、业务背景 目前金蝶云星空依托“业务监控”轻应用可以直接与企业微信集成,实现消息推送,但是该方式比较死板,无法在系统各个节点实...
点击下载文档
本文2024-09-16 18:27:25发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-22262.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章