微信程式開發系列教程(二)使用JavaScript給微信使用者傳送訊息
我之前的文章 微信程式開發系列教程(一)開發環境搭建 介紹了微信開發環境的搭建,這篇文章我們就來一步步開發一些具體的功能。
功能需求:當有微信使用者關注了您的公眾號之後,您用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 = "<![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的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2200091/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 微信程式開發系列教程(三)使用微信API給微信使用者發文字訊息API
- 使用WxPusher給自己的個人微信傳送提醒訊息(WxPusher微信推送服務)
- 使用 laravel-wechat-notification 傳送微信模板訊息、企業微信應用訊息Laravel
- 在python中使用itchat傳送微信訊息Python
- 微信小程式 傳送模板訊息的功能實現微信小程式
- 【踩坑系列】傳送微信模板訊息返回40165 invalid weapp pagepathAPP
- 微信怎麼群發訊息?微信群發助手群發訊息圖文教程
- 微信小程式開發系列教程三:微信小程式的除錯方法微信小程式除錯
- 微信程式開發系列教程(二)微信訂閱號+人工智慧問答服務人工智慧
- 微信小程式開發系列二:微信小程式的檢視設計微信小程式
- 基於 EasyWechat 和 Laravel notification 傳送微信小程式模板訊息Laravel微信小程式
- 微信程式開發系列教程(四)使用微信API建立公眾號自定義選單API
- 傳送微信公眾號模板訊息(未完成)
- 微信小程式開發系列五:微信小程式中如何響應使用者輸入事件微信小程式事件
- C#微信開發系列教程C#
- 微信小程式開發教程微信小程式
- 【玩具】使用Python自動化傳送微信訊息進行訂水Python
- 微信小程式開發之大神之路最全微信小程式開發教程(視訊+精品文章)微信小程式
- 微信程式開發系列教程(一)開發環境搭建開發環境
- 微信小程式開發系列六:微信框架API的呼叫微信小程式框架API
- PHP微信開發之模板訊息回覆PHP
- 微信開發——同步粉絲、群發訊息
- 微信公眾號如何實現模板訊息傳送的功能
- 教你如何用vbs實現微信自動傳送訊息功能
- 微信公眾號開發(二)識別訊息型別型別
- 使用gitlab ci構建IOS包併傳送通知訊息到企業微信GitlabiOS
- 微信小程式開發系列七:微信小程式的頁面跳轉微信小程式
- 監聽微信公眾號訊息,監聽微信訊息推送
- 企業微信sdk呼叫,企業微信好友收發訊息
- 微信開發系列之七 - 使用Redis儲存微信聊天記錄Redis
- 微信公眾號開發之客服訊息
- 好訊息!微信小程式開發環境自帶vConsole微信小程式開發環境
- 微信開發 PHP程式碼 免費送貨PHP
- 使用mpvue開發微信小程式Vue微信小程式
- 微信之父張小龍:企業微信將與微信訊息打通
- 微信怎麼傳送資料夾給好友 微信發生整個資料夾的辦法
- 微信小程式 獲取使用者資訊微信小程式
- 微信開發系列之九 - 在微信裡直接建立SAP C4C的社交媒體訊息