一、获得企业微信管理端权限,登录企业企业微信管理端界面,并创建应用,如下图中的【网站消息推送】

二、参见企业微信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后台实现企业微信发送消息的更多相关文章

  1. python实现通过企业微信发送消息

    实现了通过企业微信发送消息,平时用于运维的告警还是不错的,相对于邮件来说,实时性更高,不过就是企业微信比较麻烦,此处不做过多解释. 企业微信api的详细请看:http://work.weixin.qq ...

  2. Java发送企业微信应用消息

    1.发送消息与被动回复消息 (1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息.而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接收到消息后,再 ...

  3. python 企业微信发送文件

    import os import json import urllib3 class WinxinApi(object): def __init__(self,corpid,secret,chatid ...

  4. zabbix使用企业微信发送告警信息

    用qq邮箱发送告警信息一点都不方便,看到网上说也可以使用微信发送告警信息,所以就试了一下. 首先先试着在虚拟主机上给微信发送信息. 我们需要注册企业微信,注册时有一个地方需要注意,就是注册时选择组织, ...

  5. 【转】odoo 10的企业微信发送程序介绍

    本文介绍的微信发送程序不是独立的模块,是某企业应用的一部分, 源码可在京津冀odoo技术交流群的群共享中下载.   [1]基本配置 在work.weixin.qq.com上注册一个企业后,会得到企业的 ...

  6. python 实现微信发送消息

    背景:利用Python来登入你个人的手机微信,之后向朋友发送消息,发送的消息可以来源于网页.下面的例子就是取得当前日元的汇率,之后发送自己的某一个朋友的手机上 环境:Python3,JetBrains ...

  7. zabbix微信发送消息脚本

    cat /usr/local/zabbix/share/zabbix/alertscripts/sed_messages_weixin.py python2.x #!/usr/bin/env pyth ...

  8. python登录网页版微信发送消息

    # coding=utf-8 import datetime import time from selenium import webdriver url = "https://wx2.qq ...

  9. 【perl】企业微信发消息

    https://open.work.weixin.qq.com/api/doc#90000/90135/90236 #!/usr/bin/env perl use strict; use warnin ...

随机推荐

  1. JS 怎么把数组类型的参数传递到后台,后台怎么获取

    说明:开发环境 vs2012 asp.net mvc4 c# 1.HTML前端代码 <%@ Page Language="C#" AutoEventWireup=" ...

  2. Apache JServ Protocol

    ajp_百度百科 https://baike.baidu.com/item/ajp/1187933 AJP(Apache JServ Protocol)是定向包协议.因为性能原因,使用二进制格式来传输 ...

  3. splittability A SequenceFile can be split by Hadoop and distributed across map jobs whereas a GZIP file cannot be.

    splittability CompressedStorage     Skip to end of metadata   Created by Confluence Administrator, l ...

  4. JavaScript精粹

    序:好书是需要不断品读的!再读语言精粹,顺便做点笔记. 1.NaN是一个数值,它表示一个不能产生正常结果的运算结果.NaN不等于任何值,包括它自己.检测是否为NaN:  isNaN(number). ...

  5. 【LeetCode】Search in Rotated Sorted Array II(转)

    原文链接 http://oj.leetcode.com/problems/search-in-rotated-sorted-array-ii/ http://blog.csdn.net/linhuan ...

  6. @GetMapping和@PostMapping接收参数的格式

    一.1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面 若返回json等内容到页面,则需要加@ResponseBody注解 ...

  7. [bzoj1002] [FJOI2007]轮状病毒轮状病毒(基尔霍夫矩阵)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...

  8. Windows程序设计(1)——Win32运行原理(二)

    创建进程 1 进程和线程 2 应用程序的启动过程 3 CreateProcess函数 4 实例 3 创建进程 3.1 进程和线程 进程通常被定义为一个存在运行的程序的实例.进程是一个正在运行的程序,它 ...

  9. Vue实例和方法

    github地址:https://github.com/manlili/vue_learn里面的lesson03 一 实例 每个 Vue 实例都会代理其 data 对象里所有的属性,改变data,vu ...

  10. js 改变对象的引用地址

    在业务处理中我们经常会碰到列表中有编辑和新增按钮,为了能够提高代码的公用性,我们经常会使用同一组件处理. 这样会出现一个问题就是编辑的时候直接把对象传过去,直接赋值,引用地址是同一个,所以不管修改了那 ...