微信程序开发系列教程(三)使用微信API给微信用户发文本消息

这个系列的第二篇教程,介绍的实际是被动方式给微信用户发文本消息,即微信用户关注您的公众号时,微信平台将这个关注事件通过一个HTTP post发送到您的微信消息服务器上。您对这个post请求做了应答(格式为文本),则该应答会通过微信平台投递到您粉丝的微信应用上。

微信开发者中心的文档将这种行为称为“被动回复用户消息”:

回复消息报文的格式在开发者文档里也有清晰的定义,是一个xml格式的字符串。我的第二篇教程里也有具体的发送该报文的代码示例。

本文作为这个开发系列的第三篇教程,介绍的是如何用API的方式,主动向某个粉丝发送文本消息。

如何找到合适的微信消息发送API呢?还是登录微信开发者中心,在控制台菜单“客服消息”里,

客服接口-发消息就是我们需要使用的API。url如下:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=<传入您的access token>

为了使用这个API,我们首先需要获得调用API的access token:

Access token的获取很简单,用Appid和secret去换。

调用另一个API,https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=<您微信公众号的appid>&secret=<您微信公众号的secret>。这个API会返回access token以及过期时间。

您微信公众号的appid和secret可以在微信开发者中心的控制台里找到,在“测试号管理”页面的标签页下。

现在我们拿到access token后,就可以调用微信文本消息发送API给指定微信用户发送文本消息了。看我下图这个postman里的调用。红色高亮的测试文本信息将通过微信API发送到我手机上:

测试成功了:

最后,我们用nodejs实现通过API给指定用户发送文本信息。

function sendWCMeaasge(toUser,sMessage){
	var options = {
	url:"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" +
	config.accessToken,
	method: "POST",
	json:true,
	headers: {
	"content-type": "application/json"},
	body:{
	"touser":toUser,
	"msgtype":"text",
	"text": {
	"content":sMessage
	}
	}
	};
	request(options,function(error,response,data){
	}
	);
}
module.exports = sendWCMeaasge;

消费代码:

sendMessage(<此处传入接收该消息的微信用户的openid>, "这条消息是用nodejs发送的!");

用node命名执行上面的代码,也能成功在微信app上接收到通过nodejs代码调用微信消息API的方式发送的文本消息。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏web前端教室

零基础如何建立“前端技术体系”? --本周日晚“先行者课程”,给你示范

昨天的《WEB前端新人,怎么样构建自己的“前端技术体系”?用以在面试中打败其它竞争者》大概的写了下新人如何建立属于自己的前端技术体系,比较简单,正好今晚的先行者...

2316
来自专栏落花落雨不落叶

一个解决跨域问题的代理小工具

3618
来自专栏知晓程序

开发 | 只需一步!教你如何轻松部署小程序后端

利用它,你可以在「微信 web 开发者工具」中,直接完成后端代码编写、腾讯云部署等一系列操作。

6784
来自专栏服务端技术杂谈

进程内缓存使用技术方案

进程内缓存可以采用带锁的Map或者第三方库,或者自己实现进程内缓存管理,如ConcurrentHashMap,ThreadLocal,guava cache等。

2563
来自专栏企鹅号快讯

浅谈几种SLB技术的实现

今天小普和大家分享下,在最近的学习过程中,关于几个负载均衡技术的理解,以及几个实现的原理和关键点,希望对各位读者朋友有收获。 1 http重定向协议实现负载均衡...

1.3K5
来自专栏码匠的流水账

oauth2四种授权方式小结

1.3K2
来自专栏快乐八哥

在Linux Mint上安装node.js和npm

1.安装Node.js 前端开发过程中,很多项目使用npm的http-server的模块来运行一个静态的服务器,我个人在Dell的笔记本上安装的是Linux M...

2557
来自专栏Python攻城狮

GitHub 系列之「团队合作利器 Branch」1.什么是分支?2.分支的常用操作3.基本的团队协作流程4.Git Flow

Git 相比于 SVN 最强大的一个地方就在于「分支」,Git 的分支操作简直不要太方便,而实际项目开发中团队合作最依赖的莫过于分支了,关于分支前面的系列也提到...

901
来自专栏开源项目

码云周刊:当测试拿起自动化测试工具,开发仿佛看见一场悲剧正在上演!

类型:自动化测试 虽然之前小一做过几年开发,但当时对于在公司兴起的自动化测试概念还不是很清楚,觉得是一种很神秘的东西,后来通过向业内资深的测试工程师朋友咨询才恍...

3959
来自专栏xingoo, 一个梦想做发明家的程序员

安装nodejs

NodeJS现在也是很火的一门技术,使得javascript跻身到服务器端的行列。 为了使用一款轻量级的httpserver,只好安装了nodejs,其实平...

3827

扫码关注云+社区

领取腾讯云代金券