国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

微信程序開(kāi)發(fā)系列教程(二)使用JavaScript給微信用戶發(fā)送消息

Near_Li / 607人閱讀

摘要:我之前的文章微信程序開(kāi)發(fā)系列教程一開(kāi)發(fā)環(huán)境搭建介紹了微信開(kāi)發(fā)環(huán)境的搭建,這篇文章我們就來(lái)一步步開(kāi)發(fā)一些具體的功能。下文將該應(yīng)用稱為消息服務(wù)器。我們首先用的獲得一個(gè)對(duì)象當(dāng)有微信用戶關(guān)注您的公眾號(hào)時(shí),微信平臺(tái)會(huì)發(fā)送一個(gè)請(qǐng)求到您的消息服務(wù)器。

我之前的文章?微信程序開(kāi)發(fā)系列教程(一)開(kāi)發(fā)環(huán)境搭建?介紹了微信開(kāi)發(fā)環(huán)境的搭建,這篇文章我們就來(lái)一步步開(kāi)發(fā)一些具體的功能。

功能需求:當(dāng)有微信用戶關(guān)注了您的公眾號(hào)之后,您用JavaScript發(fā)送一個(gè)歡迎消息給這個(gè)粉絲。

具體實(shí)現(xiàn)

我們登陸微信公眾號(hào)的控制臺(tái)后,點(diǎn)開(kāi)發(fā)-> 基本配置:

能看到我們配置的微信消息服務(wù)器的地址。在我第一篇教程里講到,我們?cè)诒镜赜胣odejs開(kāi)發(fā)一個(gè)Web服務(wù)器,然后部署到您喜歡的云平臺(tái),比如騰訊云,阿里云,百度云等等(我選的是云平臺(tái)Heroku),然后把部署后應(yīng)用的url維護(hù)到微信公眾號(hào)控制臺(tái)的服務(wù)器配置,如下圖所示。維護(hù)好之后,微信用戶關(guān)注該公眾號(hào)或者給該公眾號(hào)發(fā)送的消息,就會(huì)通過(guò)微信平臺(tái)投遞到您的nodejs應(yīng)用,我們?cè)诶锩婢涂梢跃幊虒?shí)現(xiàn)一些需求了。下文將該nodejs應(yīng)用稱為“消息服務(wù)器”。

我們首先用nodejs的express module獲得一個(gè)app對(duì)象:

var express = require("express");

var app = express();

當(dāng)有微信用戶關(guān)注您的公眾號(hào)時(shí),微信平臺(tái)會(huì)發(fā)送一個(gè)HTTP post請(qǐng)求到您的消息服務(wù)器。您需要編程響應(yīng)這個(gè)post請(qǐng)求。

app.route("/").post(function(req,res){
    var content;
    // 把微信平臺(tái)發(fā)送的HTTP post的內(nèi)容存儲(chǔ)到變量content里
    req.on("data",function(data){
        content = data.toString("utf-8");
    }
    );
    req.on("end",function(){
        console.log("new http post: " + content );
        // 打印HTTP post請(qǐng)求,做調(diào)試用

// 從微信平臺(tái)發(fā)送的HTTP請(qǐng)求里解析出事件對(duì)象。如果是粉絲點(diǎn)關(guān)注,事件類(lèi)型為subscribe。

var msgType = formattedValue(getXMLNodeValue("MsgType", content));
// 有粉絲點(diǎn)了關(guān)注按鈕啦
if( event === "subscribe"){
    // 回復(fù)一條歡迎消息給粉絲
    var replyxml = replyMessage(content, "歡迎歡迎,終于等到您了!");
    res.send(replyxml);
     }
}

上述代碼邏輯很清晰,看注釋都易懂。關(guān)鍵就是如何把歡迎消息回復(fù)給點(diǎn)了關(guān)注按鈕的粉絲。

核心邏輯在replyMessage函數(shù)里,這個(gè)函數(shù)的任務(wù)是將粉絲的openID從微信平臺(tái)發(fā)給消息服務(wù)器的HTTP post內(nèi)容中解析出來(lái)。代碼如下:

輸入?yún)?shù)1: 微信平臺(tái)發(fā)給消息服務(wù)器的HTTP post全部?jī)?nèi)容

輸入?yún)?shù)2:準(zhǔn)備給粉絲推送的歡迎消息

輸出參數(shù):準(zhǔn)備通過(guò)HTTP返回給粉絲的歡迎消息的微信報(bào)文,需符合微信定義的消息規(guī)范,具體規(guī)范如下代碼所示。

module.exports = function(originalBody, contentToReply){
    // 從原始報(bào)文里提取出消息的接收方
    var ToUserName = getXMLNodeValue("ToUserName", originalBody);
    // 從原始報(bào)文里提取出消息的發(fā)送方
    var FromUserName = getXMLNodeValue("FromUserName",originalBody);
    var CreateTime = getXMLNodeValue("CreateTime",originalBody);
    // 告訴微信平臺(tái)這條消息的類(lèi)型是文本消息
    var MsgType = "";
    // 準(zhǔn)備將歡迎消息的文字內(nèi)容加入消息報(bào)文
    var Content = contentToReply;
    // 開(kāi)始拼裝準(zhǔn)備發(fā)送給微信粉絲的消息報(bào)文
    var xml = ""+FromUserName+""+ToUserName+""+CreateTime+""
    + MsgType + ""+Content+"";
    console.log("xml to be sent: " + xml);
    // 打印消息報(bào)文
    return xml;
    // 返回消息報(bào)文
}
;

要獲取更多Jerry的原創(chuàng)技術(shù)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙"或者掃描下面二維碼:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/98562.html

相關(guān)文章

  • Koa2微信公眾號(hào)開(kāi)發(fā)(一) 本地開(kāi)發(fā)調(diào)試環(huán)境搭建

    摘要:本篇是該系列的第一篇,本地開(kāi)發(fā)環(huán)境搭建以及接入微信。若確認(rèn)此次請(qǐng)求來(lái)自微信服務(wù)器,原樣返回參數(shù)內(nèi)容,則接入生效,成為開(kāi)發(fā)者成功,否則接入失敗。 一、簡(jiǎn)介 關(guān)于微信公眾號(hào)的介紹就省略了,自行搜索。注冊(cè)過(guò)程也不說(shuō)了。我們會(huì)直接注冊(cè)測(cè)試號(hào)來(lái)實(shí)現(xiàn)代碼。這將會(huì)是個(gè)全面講解微信公眾號(hào)開(kāi)發(fā)的系列教程。本篇是該系列的第一篇,本地開(kāi)發(fā)環(huán)境搭建以及接入微信。在開(kāi)始之前最好去看看開(kāi)發(fā)者文檔微信公眾平臺(tái)技術(shù)文...

    snifes 評(píng)論0 收藏0
  • 微信開(kāi)發(fā)系列教程()

    摘要:成為微信公眾賬號(hào)開(kāi)發(fā)者后當(dāng)然想讓別人關(guān)注自己的賬號(hào)時(shí)給出一些歡迎語(yǔ)或者其他的友好性提示根據(jù)官方文檔用戶第一次關(guān)注公眾賬號(hào)會(huì)觸發(fā)一個(gè)訂閱事件于此相對(duì)于的是用戶取消關(guān)注公眾賬號(hào)時(shí)觸發(fā)一個(gè)取消訂閱事件首先用戶首次關(guān)注公眾賬號(hào)微信發(fā)送至開(kāi)發(fā)者模式所 成為微信公眾賬號(hào)開(kāi)發(fā)者后,當(dāng)然想讓別人關(guān)注自己的賬號(hào)時(shí)給出一些歡迎語(yǔ)或者其他的友好性提示.根據(jù)官方文檔,用戶第一次關(guān)注公眾賬號(hào)會(huì)觸發(fā)一個(gè)subsc...

    wendux 評(píng)論0 收藏0
  • 手機(jī)上查看編輯完的CAD圖紙文件怎么一鍵分享給微信好友?

    摘要:步驟四最后,我們點(diǎn)擊軟件界面的右上角的設(shè)置,在彈出的文件選項(xiàng)中點(diǎn)擊我們要分享的途徑即可。那么以上就是快速一鍵分享圖紙的全部?jī)?nèi)容操作了,希望可以對(duì)大家有所幫助哈 手機(jī)上查看編輯完的CAD圖紙文件怎么一鍵分享給微信好友?那么現(xiàn)在說(shuō)著問(wèn)題的話,大家應(yīng)該都是與所了解的啦,關(guān)于CAD查看圖紙的文件的話,小編已經(jīng)介紹很多遍了,但是我們查看完的圖紙文件,要是想要將編輯好的CAD圖紙文件發(fā)送給其他的人...

    kbyyd24 評(píng)論0 收藏0
  • JavaScript訪問(wèn)SAP云平臺(tái)上的服務(wù)遇到跨域問(wèn)題該怎么辦

    摘要:關(guān)于的跨域問(wèn)題的討論網(wǎng)上有太多的資源了。直入主題,最近我正在做一個(gè)原型開(kāi)發(fā)通過(guò)云平臺(tái)和把系統(tǒng)上的暴露出來(lái),給微信消費(fèi)。請(qǐng)求得到響應(yīng)之后,再將其發(fā)送給。回到我的原型開(kāi)發(fā)需求,云平臺(tái)上的消費(fèi)如今通過(guò)來(lái)實(shí)現(xiàn),為簡(jiǎn)單起見(jiàn),我將硬編碼在里。 關(guān)于JavaScript的跨域問(wèn)題(Cross Domain)的討論, 網(wǎng)上有太多的資源了。國(guó)內(nèi)的程序猿寫(xiě)了非常多的優(yōu)秀文章,Jerry這里就不再重復(fù)了。 ...

    Jinkey 評(píng)論0 收藏0
  • JavaScript訪問(wèn)SAP云平臺(tái)上的服務(wù)遇到跨域問(wèn)題該怎么辦

    摘要:關(guān)于的跨域問(wèn)題的討論網(wǎng)上有太多的資源了。直入主題,最近我正在做一個(gè)原型開(kāi)發(fā)通過(guò)云平臺(tái)和把系統(tǒng)上的暴露出來(lái),給微信消費(fèi)。請(qǐng)求得到響應(yīng)之后,再將其發(fā)送給。回到我的原型開(kāi)發(fā)需求,云平臺(tái)上的消費(fèi)如今通過(guò)來(lái)實(shí)現(xiàn),為簡(jiǎn)單起見(jiàn),我將硬編碼在里。 關(guān)于JavaScript的跨域問(wèn)題(Cross Domain)的討論, 網(wǎng)上有太多的資源了。國(guó)內(nèi)的程序猿寫(xiě)了非常多的優(yōu)秀文章,Jerry這里就不再重復(fù)了。 ...

    用戶84 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<