资讯专栏INFORMATION COLUMN

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

Near_Li / 599人阅读

摘要:我之前的文章微信程序开发系列教程一开发环境搭建介绍了微信开发环境的搭建,这篇文章我们就来一步步开发一些具体的功能。下文将该应用称为消息服务器。我们首先用的获得一个对象当有微信用户关注您的公众号时,微信平台会发送一个请求到您的消息服务器。

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

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

具体实现

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

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

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

var express = require("express");

var app = express();

当有微信用户关注您的公众号时,微信平台会发送一个HTTP post请求到您的消息服务器。您需要编程响应这个post请求。

app.route("/").post(function(req,res){
    var content;
    // 把微信平台发送的HTTP post的内容存储到变量content里
    req.on("data",function(data){
        content = data.toString("utf-8");
    }
    );
    req.on("end",function(){
        console.log("new http post: " + content );
        // 打印HTTP post请求,做调试用

// 从微信平台发送的HTTP请求里解析出事件对象。如果是粉丝点关注,事件类型为subscribe。

var msgType = formattedValue(getXMLNodeValue("MsgType", content));
// 有粉丝点了关注按钮啦
if( event === "subscribe"){
    // 回复一条欢迎消息给粉丝
    var replyxml = replyMessage(content, "欢迎欢迎,终于等到您了!");
    res.send(replyxml);
     }
}

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

核心逻辑在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 = "";
    // 准备将欢迎消息的文字内容加入消息报文
    var Content = contentToReply;
    // 开始拼装准备发送给微信粉丝的消息报文
    var xml = ""+FromUserName+""+ToUserName+""+CreateTime+""
    + MsgType + ""+Content+"";
    console.log("xml to be sent: " + xml);
    // 打印消息报文
    return xml;
    // 返回消息报文
}
;

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98562.html

相关文章

  • Koa2微信公众号开发(一) 本地开发调试环境搭建

    摘要:本篇是该系列的第一篇,本地开发环境搭建以及接入微信。若确认此次请求来自微信服务器,原样返回参数内容,则接入生效,成为开发者成功,否则接入失败。 一、简介 关于微信公众号的介绍就省略了,自行搜索。注册过程也不说了。我们会直接注册测试号来实现代码。这将会是个全面讲解微信公众号开发的系列教程。本篇是该系列的第一篇,本地开发环境搭建以及接入微信。在开始之前最好去看看开发者文档微信公众平台技术文...

    snifes 评论0 收藏0
  • 微信开发系列教程()

    摘要:成为微信公众账号开发者后当然想让别人关注自己的账号时给出一些欢迎语或者其他的友好性提示根据官方文档用户第一次关注公众账号会触发一个订阅事件于此相对于的是用户取消关注公众账号时触发一个取消订阅事件首先用户首次关注公众账号微信发送至开发者模式所 成为微信公众账号开发者后,当然想让别人关注自己的账号时给出一些欢迎语或者其他的友好性提示.根据官方文档,用户第一次关注公众账号会触发一个subsc...

    wendux 评论0 收藏0
  • 手机上查看编辑完的CAD图纸文件怎么一键分享给微信好友?

    摘要:步骤四最后,我们点击软件界面的右上角的设置,在弹出的文件选项中点击我们要分享的途径即可。那么以上就是快速一键分享图纸的全部内容操作了,希望可以对大家有所帮助哈 手机上查看编辑完的CAD图纸文件怎么一键分享给微信好友?那么现在说着问题的话,大家应该都是与所了解的啦,关于CAD查看图纸的文件的话,小编已经介绍很多遍了,但是我们查看完的图纸文件,要是想要将编辑好的CAD图纸文件发送给其他的人...

    kbyyd24 评论0 收藏0
  • JavaScript访问SAP云平台上的服务遇到跨域问题该怎么办

    摘要:关于的跨域问题的讨论网上有太多的资源了。直入主题,最近我正在做一个原型开发通过云平台和把系统上的暴露出来,给微信消费。请求得到响应之后,再将其发送给。回到我的原型开发需求,云平台上的消费如今通过来实现,为简单起见,我将硬编码在里。 关于JavaScript的跨域问题(Cross Domain)的讨论, 网上有太多的资源了。国内的程序猿写了非常多的优秀文章,Jerry这里就不再重复了。 ...

    Jinkey 评论0 收藏0
  • JavaScript访问SAP云平台上的服务遇到跨域问题该怎么办

    摘要:关于的跨域问题的讨论网上有太多的资源了。直入主题,最近我正在做一个原型开发通过云平台和把系统上的暴露出来,给微信消费。请求得到响应之后,再将其发送给。回到我的原型开发需求,云平台上的消费如今通过来实现,为简单起见,我将硬编码在里。 关于JavaScript的跨域问题(Cross Domain)的讨论, 网上有太多的资源了。国内的程序猿写了非常多的优秀文章,Jerry这里就不再重复了。 ...

    用户84 评论0 收藏0

发表评论

0条评论

Near_Li

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<