微信程式開發系列教程(二)使用JavaScript給微信使用者傳送訊息

i042416發表於2018-08-15

我之前的文章  微信程式開發系列教程(一)開發環境搭建  介紹了微信開發環境的搭建,這篇文章我們就來一步步開發一些具體的功能。

功能需求:當有微信使用者關注了您的公眾號之後,您用JavaScript傳送一個歡迎訊息給這個粉絲。

具體實現

我們登陸微信公眾號的控制檯後,點開發-> 基本配置:

微信程式開發系列教程(二)使用JavaScript給微信使用者傳送訊息

能看到我們配置的微信訊息伺服器的地址。在我第一篇教程裡講到,我們在本地用nodejs開發一個Web伺服器,然後部署到您喜歡的雲平臺,比如騰訊雲,阿里雲,百度雲等等(我選的是雲平臺Heroku),然後把部署後應用的url維護到微信公眾號控制檯的伺服器配置,如下圖所示。維護好之後,微信使用者關注該公眾號或者給該公眾號傳送的訊息,就會通過微信平臺投遞到您的nodejs應用,我們在裡面就可以程式設計實現一些需求了。下文將該nodejs應用稱為“訊息伺服器”。

微信程式開發系列教程(二)使用JavaScript給微信使用者傳送訊息

我們首先用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 = "<![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;    // 返回訊息報文}
;

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:


微信程式開發系列教程(二)使用JavaScript給微信使用者傳送訊息

微信程式開發系列教程(二)使用JavaScript給微信使用者傳送訊息


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2200091/,如需轉載,請註明出處,否則將追究法律責任。

相關文章