.netcore--Controller后台實現企業微信發送消息


一、獲得企業微信管理端權限,登錄企業企業微信管理端界面,並創建應用,如下圖中的【網站消息推送】

 

二、參見企業微信API文獻,根據corpid=ID&corpsecret=SECRET(其中企業微信ID即為corpid,Secret即為corpsecret),即可獲取access_token,此時可以使用Postman進行測試

三、關鍵部分,網站代碼部分

--------------------------------前端的行為----------------------------------------------------------------------------------

1)前端可以使用ajax寫一個指向controller的請求,如下

$(document).ready(function () {
$("#message").click(function () {
$.ajax({
type: "GET",
url: "ECModel/GetAccessToken",
success: function (data) {
alert(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert("error");
}
});

});
});


--------------------------------控制器中的行為-------------------------------------------------------------------------------

 2)在控制器中實現以下操作(藍色文本需要自行確認修改

/// <summary>
/// 接收前端向企業微信發送消息的請求,向企業微信獲得許可憑證
/// </summary>
/// <returns></returns>
[HttpGet]
public ActionResult<string> GetAccessToken()
{ //GET獲取accessToken的參數 corid
string uri = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=(替換為自己企業微信的ID)&corpsecret=(替換為自己應用的密鑰)";
//創建請求
WebRequest request = WebRequest.Create(uri);
//請求設置
request.Credentials = CredentialCache.DefaultCredentials;
//創建應答接收
WebResponse response = request.GetResponse();
//創建應答讀寫流
string accessToken;
using (Stream streamResponse=response.GetResponseStream())
{
StreamReader reader = new StreamReader(streamResponse);
string responseFromServer = reader.ReadToEnd();
JObject res = (JObject)JsonConvert.DeserializeObject(responseFromServer);
accessToken = res["access_token"].ToString();
reader.Close();
}
//獲得許可證憑證
PostMail(accessToken);
//關閉響應
response.Close();
return "success";
}
/// <summary>
/// 獲得許可憑證后向企業微信發送消息
/// </summary>
/// <param name="accessToken">許可憑證</param>
public void PostMail(string accessToken)
{ //POST的API
string uri = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + accessToken;
//創建請求
WebRequest myWebRequest = WebRequest.Create(uri);
//請求設置
myWebRequest.Credentials = CredentialCache.DefaultCredentials;
myWebRequest.ContentType = "application/json;charset=UTF-8";
myWebRequest.Method = "POST";
//向服務器發送的內容
using (Stream streamResponse = myWebRequest.GetRequestStream())
{
//創建JSON格式的發送內容
JObject postedJObject = new JObject
{
//在此處設置發送內容及對象
{ "touser", "Heavy" },
{ "msgtype", "text" },
{ "agentid", 1000002 }
};
JObject text = new JObject
{
{"content","內容來自網站--內容可自行編輯--heavy"}
};
postedJObject.Add("text", text);
postedJObject.Add("safe", 0);
//將傳送內容編碼
String paramString = postedJObject.ToString(Newtonsoft.Json.Formatting.None, null);
byte[] byteArray = Encoding.UTF8.GetBytes(paramString);
//向請求中寫入內容
streamResponse.Write(byteArray, 0, byteArray.Length);
}
//創建應答
WebResponse myWebResponse = myWebRequest.GetResponse();
//創建應答的讀寫流
string responseFromServer;
using (Stream streamResponse = myWebResponse.GetResponseStream())
{
StreamReader streamRead = new StreamReader(streamResponse);
responseFromServer = streamRead.ReadToEnd();
}
//關閉應答
myWebResponse.Close();
}

四、小結

在控制器中實現微信API訪問,可以避免跨域訪問的問題,當然也可以在前端用JS實現,JS中實現需要考慮跨域問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM