微信程式開發系列教程(二)使用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
- 使用 laravel-wechat-notification 傳送微信模板訊息、企業微信應用訊息Laravel
- 微信開發系列教程(二)
- 微信小程式開發–視訊教程系列微信小程式
- 在python中使用itchat傳送微信訊息Python
- 微信小程式 傳送模板訊息的功能實現微信小程式
- 給微信伺服器發訊息伺服器
- 微信怎麼群發訊息?微信群發助手群發訊息圖文教程
- 微信小程式開發(十七)模板訊息微信小程式
- 微信開發推送訊息案例
- 基於 EasyWechat 和 Laravel notification 傳送微信小程式模板訊息Laravel微信小程式
- 微信程式開發系列教程(二)微信訂閱號+人工智慧問答服務人工智慧
- 【玩具】使用Python自動化傳送微信訊息進行訂水Python
- 微信小程式開發系列教程三:微信小程式的除錯方法微信小程式除錯
- 微信小程式開發系列二:微信小程式的檢視設計微信小程式
- 【踩坑系列】傳送微信模板訊息返回40165 invalid weapp pagepathAPP
- 微信公眾平臺開發(十二) 傳送客服訊息
- iOS 給父類傳送訊息iOS
- 微信程式開發系列教程(一)開發環境搭建開發環境
- C#微信開發系列教程C#
- 微信程式開發系列教程(四)使用微信API建立公眾號自定義選單API
- 微信公眾號如何實現模板訊息傳送的功能
- 教你如何用vbs實現微信自動傳送訊息功能
- 微信小程式開發系列五:微信小程式中如何響應使用者輸入事件微信小程式事件
- 微信公眾號開發(二)識別訊息型別型別
- 微信小程式開發之大神之路最全微信小程式開發教程(視訊+精品文章)微信小程式
- 怎麼認證微信小程式-微信小程式開發-視訊教程2微信小程式
- 微信開發——同步粉絲、群發訊息
- 微信開發中的訊息驗證與訊息回覆
- PHP微信開發之模板訊息回覆PHP
- 微信小程式開發教程微信小程式
- 微信小程式之小白教程系列 第二篇 微信小程式 -- 入口微信小程式
- 使用gitlab ci構建IOS包併傳送通知訊息到企業微信GitlabiOS
- 能同步傳送微信公眾號訊息的部落格系統
- 微信小程式教程系列微信小程式
- Sysomos:老使用者傳送Twitter訊息更多
- 微信公眾號開發之客服訊息
- 怎麼免費註冊微信小程式-微信小程式開發-視訊教程1微信小程式