用过企业微信的人应该都知道,如果我们要发送应用消息,首先需要用get方法获取到token,下面是后端发送get请求获取企业微信应用消息的方法:
string url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret;//corpid和corpsecret需要从企业微信后台管理里面拿到,具体方法可以看官方文档
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "GET";
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string access_token_info = reader.ReadToEnd();//这里拿到我们get请求返回的参数,我们需要拿到token
JObject jo = (JObject)JsonConvert.DeserializeObject(access_token_info);
access_token = jo["access_token"].ToString();//这里把拿到的字符串消息转成JSON并且拿到其中的access_token
reader.Close();
get请求方法本人也是参考网上的,也许还有更好更简洁的方法,如果有可以留言一起交流学习。
PS:access_token不要频繁的去拿,我们需要存到缓存(redis)中去,设置时效和官方的一样就好了,官方默认是7200秒也就是2小时。
拿到token之后,可以就需要发送post,给指定的用户发消息,具体发消息所需的参数可以见官方文档:
企业微信发送应用消息
string jsonInfo = "{\"touser\" : \"" + touser + "\"," +
"\"toparty\" : \"" + toparty + "\"," +
"\"totag\" : \"" + totag + "\"," +
"\"msgtype\" : \"" + msgtype + "\"," +
"\"agentid\" : " + agentid + "," +
"\"text\" : {" +
"\"content\" : \"" + text + "\"" +
"}," +
" \"safe\":" + safe + "," +
"\"enable_id_trans\": " + enable_id_trans + "," +
" \"enable_duplicate_check\": " + enable_duplicate_check + "," +
"\"duplicate_check_interval\": " + duplicate_check_interval + "}";//post请求参数。JSON格式,,其中的变量自己定义值
var access_token = CacheHelper.GetObject<string>("access_token");//拿到缓存中的token
//这个if是缓存中的token时效过了之后需要重新获取的方法
if (string.IsNullOrEmpty(access_token))
{
bookBorrowBusiness.GetTokenByEnterpriseWechat();
access_token = CacheHelper.GetObject<string>("access_token");
}
var url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token;
UTF8Encoding encoding = new UTF8Encoding();//编码模式,防止中文乱码
byte[] data = encoding.GetBytes(jsonInfo);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "POST";
myRequest.ContentType = "application/json;charset=utf-8";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default);
string content = reader.ReadToEnd();
reader.Close();
JObject jo = (JObject)JsonConvert.DeserializeObject(content);
int errcode = Convert.ToInt32(jo["errcode"].ToString());//如果发送成功,errcode返回0
这样我们就完成企业微信的应用消息推送了