.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中实现需要考虑跨域问题
.netcore--Controller后台实现企业微信发送消息的更多相关文章
- python实现通过企业微信发送消息
实现了通过企业微信发送消息,平时用于运维的告警还是不错的,相对于邮件来说,实时性更高,不过就是企业微信比较麻烦,此处不做过多解释. 企业微信api的详细请看:http://work.weixin.qq ...
- Java发送企业微信应用消息
1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接收到消息后,再 ...
- python 企业微信发送文件
import os import json import urllib3 class WinxinApi(object): def __init__(self,corpid,secret,chatid ...
- zabbix使用企业微信发送告警信息
用qq邮箱发送告警信息一点都不方便,看到网上说也可以使用微信发送告警信息,所以就试了一下. 首先先试着在虚拟主机上给微信发送信息. 我们需要注册企业微信,注册时有一个地方需要注意,就是注册时选择组织, ...
- 【转】odoo 10的企业微信发送程序介绍
本文介绍的微信发送程序不是独立的模块,是某企业应用的一部分, 源码可在京津冀odoo技术交流群的群共享中下载. [1]基本配置 在work.weixin.qq.com上注册一个企业后,会得到企业的 ...
- python 实现微信发送消息
背景:利用Python来登入你个人的手机微信,之后向朋友发送消息,发送的消息可以来源于网页.下面的例子就是取得当前日元的汇率,之后发送自己的某一个朋友的手机上 环境:Python3,JetBrains ...
- zabbix微信发送消息脚本
cat /usr/local/zabbix/share/zabbix/alertscripts/sed_messages_weixin.py python2.x #!/usr/bin/env pyth ...
- python登录网页版微信发送消息
# coding=utf-8 import datetime import time from selenium import webdriver url = "https://wx2.qq ...
- 【perl】企业微信发消息
https://open.work.weixin.qq.com/api/doc#90000/90135/90236 #!/usr/bin/env perl use strict; use warnin ...
随机推荐
- tomcat安装后问题解决
tomcat安装后问题解决 (1)tomcat无法正常启动的原因分析 JAVA_HOME 配置错误,或者没有配置 如果你的机器已经占有了8080 端口,则无法启动, 解决方法 (1) 你可以808 ...
- UniGui的信息弹出框MessageDlg自定义标题的方法(使用JS动态本地化文本)
UniGui的信息弹出框MessageDlg的原型定义如下: procedure MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons ...
- Linux就该这么学--命令集合4(文件目录管理命令)
1.touch命令用于创建空白文件与修改文件时间:(touch [选项] [文件]) 对于在Linux中的文件有三种时间: 更改时间(mtime):内容修改时间(不包括权限的) 更改权限(ctime) ...
- 8.JS数据类型
① 数据类型:字符串,数字,布尔,数组,对象,Null,Undefined ② JavaScript拥有动态类型.这意味着相同的变量可用作不同的类型: 实例 var x: //x为undefine ...
- 7.JavaScript变量
VAR声明变量,一条语句可以声明多个变量 var name="Gates", age=56, job="CEO"; Value = undefined 在计算机 ...
- 20170301 Excel 分多个sheet 导出
要么上传个EXCEL模板 里面已经有规定好的SHEET页了 要么直接打开个EXCEL 代码里ADDsheet页来做 就是这么点区别 [园工]CD-ABAP-win<allenjj ...
- platform_set_drvdata 和 platform_get_drvdata
ndev是我们在probe函数中定义的局部变量,如果我想在其他地方使用它怎么办呢? 这就需要把它保存起来.内核提供了这个方法,使用函数platform_set_drvdata()可以将ndev保存成平 ...
- 【转载】Android进程保活招式大全
原文地址:http://dev.qq.com/topic/57ac4a0ea374c75371c08ce8 目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题.本文对 An ...
- Android Studio中的“favorites”和“bookmark”
做项目难免来回查看某个文件的某个方法,某些文件可能访问率很高, 为了加快开发效率楼主推荐使用favorites (文件)bookmark (代码 行). favorites 的添加就在文件单击右键ad ...
- css绘制三角形
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...