#使用技巧#利用二开插件实现:企业微信消息推送

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:2

#使用技巧#利用二开插件实现:企业微信消息推送

一、业务背景

  目前金蝶云星空依托“业务监控”轻应用可以直接与企业微信集成,实现消息推送,但是该方式比较死板,无法在系统各个节点实现配置,而且目前对接轻应用也需要收费了,以后收费的场景只会更多

二、关键代码

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反向代理,公有云调用本地反向代理的,然后本地服务器再往企微发送消息即可





#使用技巧#利用二开插件实现:企业微信消息推送

一、业务背景 目前金蝶云星空依托“业务监控”轻应用可以直接与企业微信集成,实现消息推送,但是该方式比较死板,无法在系统各个节点实...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息