溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用JavaScript給微信用戶發(fā)送消息

發(fā)布時(shí)間:2021-11-12 10:31:13 來源:億速云 閱讀:473 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)如何使用JavaScript給微信用戶發(fā)送消息的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

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

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

如何使用JavaScript給微信用戶發(fā)送消息

能看到我們配置的微信消息服務(wù)器的地址。在我第一篇教程里講到,我們?cè)诒镜赜胣odejs開發(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ì)通過微信平臺(tái)投遞到您的nodejs應(yīng)用,我們?cè)诶锩婢涂梢跃幊虒?shí)現(xiàn)一些需求了。下文將該nodejs應(yīng)用稱為“消息服務(wù)器”。

如何使用JavaScript給微信用戶發(fā)送消息

我們首先用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)注,事件類型為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)容中解析出來。代碼如下:

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

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

輸出參數(shù):準(zhǔn)備通過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)這條消息的類型是文本消息
    var MsgType = "<![CDATA[text]]>";    // 準(zhǔn)備將歡迎消息的文字內(nèi)容加入消息報(bào)文
    var Content = contentToReply;    // 開始拼裝準(zhǔn)備發(fā)送給微信粉絲的消息報(bào)文
    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);    // 打印消息報(bào)文
    return xml;    // 返回消息報(bào)文}
;

感謝各位的閱讀!關(guān)于“如何使用JavaScript給微信用戶發(fā)送消息”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI