微信程序开发系列教程(二)使用JavaScript给微信用户发送消息

简介: 微信程序开发系列教程(二)使用JavaScript给微信用户发送消息

我之前的文章 微信程序开发系列教程(一)开发环境搭建 介绍了微信开发环境的搭建,这篇文章我们就来一步步开发一些具体的功能。


功能需求:当有微信用户关注了您的公众号之后,您用JavaScript发送一个欢迎消息给这个粉丝。


具体实现

我们登陆微信公众号的控制台后,点开发-> 基本配置:

image.png



能看到我们配置的微信消息服务器的地址。在我第一篇教程里讲到,我们在本地用nodejs开发一个Web服务器,然后部署到您喜欢的云平台,比如腾讯云,阿里云,百度云等等(我选的是云平台Heroku),然后把部署后应用的url维护到微信公众号控制台的服务器配置,如下图所示。维护好之后,微信用户关注该公众号或者给该公众号发送的消息,就会通过微信平台投递到您的nodejs应用,我们在里面就可以编程实现一些需求了。下文将该nodejs应用称为“消息服务器”。


image.png


我们首先用nodejs的express module获得一个app对象:


image.pngimage.png

image.png

上述代码逻辑很清晰,看注释都易懂。关键就是如何把欢迎消息回复给点了关注按钮的粉丝。


核心逻辑在replyMessage函数里,这个函数的任务是将粉丝的openID从微信平台发给消息服务器的HTTP post内容中解析出来。代码如下:


输入参数1: 微信平台发给消息服务器的HTTP post全部内容


输入参数2:准备给粉丝推送的欢迎消息


输出参数:准备通过HTTP返回给粉丝的欢迎消息的微信报文,需符合微信定义的消息规范,具体规范如下代码所示。

module.exports = function(originalBody, contentToReply){
  // 从原始报文里提取出消息的接收方
  var ToUserName = getXMLNodeValue('ToUserName', originalBody);
  // 从原始报文里提取出消息的发送方
  var FromUserName = getXMLNodeValue('FromUserName',originalBody);
  var CreateTime = getXMLNodeValue('CreateTime',originalBody);
  // 告诉微信平台这条消息的类型是文本消息
  var MsgType = "<![CDATA[text]]>";
  // 准备将欢迎消息的文字内容加入消息报文
  var Content = contentToReply;
  // 开始拼装准备发送给微信粉丝的消息报文
  var xml = '<xml><ToUserName>'+FromUserName+'</ToUserName><FromUserName>'+ToUserName+'</FromUserName><CreateTime>'+CreateTime+'</CreateTime><MsgType>'
  + MsgType + '</MsgType><Content>'+Content+'</Content></xml>';
  console.log("xml to be sent: " + xml);
  // 打印消息报文
  return xml;
  // 返回消息报文
}
;
相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
Web App开发 JavaScript 前端开发
《JavaScript精粹(修订版)》——1.4 为没有JavaScript的用户着想(渐进增强)
有时候,开发者可能会碰到除JavaScript之外再无更好的办法来实现功能的情况。这时,我认为用一些静态信息来提示用户网页遇到兼容性问题是合理的(当然,这些和技术无关)。不过,在大多数情况下,应尽量避免显示这种信息,除非它的确有意义而且是必须要告知用户的。
1200 0
|
Web App开发 JavaScript 前端开发
《JavaScript入门经典(第6版)》——1.7 与用户交互
本节书摘来自异步社区《JavaScript入门经典(第6版)》一书中的第1章,第1.7节, 作者: 【美】 Phil Ballard 译者:李 军陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1570 0
|
Web App开发 JavaScript 前端开发
JavaScript教程:JavaScript如何判定用户浏览器类型和版本号?
function userAgent(){   var ua = navigator.userAgent;   ua = ua.toLowerCase();  var match = /(webkit)[ \/]([\w.
895 0
|
3月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
81 0
|
15天前
|
存储 移动开发 JavaScript
学习javascript,前端知识精讲,助力你轻松掌握
学习javascript,前端知识精讲,助力你轻松掌握
|
21天前
|
JavaScript 前端开发 测试技术
学习JavaScript
【4月更文挑战第23天】学习JavaScript
14 1
|
29天前
|
JavaScript 前端开发 应用服务中间件
node.js之第一天学习
node.js之第一天学习
|
2月前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(6 / 6)
Vue.js学习详细课程系列--共32节(6 / 6)
28 0