.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 ...
随机推荐
- 深入浅出谈DM
- TortoiseSVN使用笔记
TortoiseSVN版本冲突详解 下列步骤展示了如何将分支A中的修改合并到分支B. 1.在分支B的本地副本目录中选择"合并(Merge)". 2.选择“合并一个版本范围(Me ...
- Linux下直接读写物理地址内存
虚拟 转 物理地址 virt_to_phys( *addr );物理 转 虚拟地址 phys_to_virt( *addr ); 如: unsigned long pProtectVA; phys ...
- HDU2586 How far away? —— 倍增LCA
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 How far away ? Time Limit: 2000/1000 MS (Java/Ot ...
- Experimental Educational Round: VolBIT Formulas Blitz K. Indivisibility —— 容斥原理
题目链接:http://codeforces.com/contest/630/problem/K K. Indivisibility time limit per test 0.5 seconds m ...
- Android-利用LinearGradient实现文字一闪一闪
效果如下图所示: 具体实现方式如下: 1,自定义一个LinearGradientTextView 继承 TextView ,重写onSizeChanged和onDraw.: public class ...
- html5--5-11 绘制文字
html5--5-11 绘制文字 学习要点 掌握文字的绘制方法 文字的绘制方法 strokeText("文字",x,y,maxWith) 绘制(描边)空心文字 fillText(& ...
- html5--3.16 button元素
html5--3.16 button元素 学习要点 掌握button元素的使用 button元素 用来建立一个按钮从功能上来说,与input元素建立的按钮相同 button元素是双标签,其内部可以配置 ...
- swoole_http_server客户端测试
测试方法: http_server.php 文件内容 <?php // use Swoole\Http\Server; // $http = new Server("0.0.0.0&q ...
- 谈谈java中静态变量与静态方法在有继承关系的两个类中调用
谈谈java中静态变量与静态方法在有继承关系的两个类中调用 学习的中如果遇到不明白或者不清楚的的时候,就是自己做些测试,自己去试试,这次我就做一个关于静态变量和静态方法在有继承关系的两个类中的问题测试 ...