這個(gè)系列的第二篇教程,介紹的實(shí)際是被動(dòng)方式給微信用戶(hù)發(fā)文本消息,即微信用戶(hù)關(guān)注您的公眾號(hào)時(shí),微信平臺(tái)將這個(gè)關(guān)注事件通過(guò)一個(gè)HTTP post發(fā)送到您的微信消息服務(wù)器上。您對(duì)這個(gè)post請(qǐng)求做了應(yīng)答(格式為文本),則該應(yīng)答會(huì)通過(guò)微信平臺(tái)投遞到您粉絲的微信應(yīng)用上。
微信開(kāi)發(fā)者中心的文檔將這種行為稱(chēng)為“被動(dòng)回復(fù)用戶(hù)消息”:
回復(fù)消息報(bào)文的格式在開(kāi)發(fā)者文檔里也有清晰的定義,是一個(gè)xml格式的字符串。我的第二篇教程里也有具體的發(fā)送該報(bào)文的代碼示例。
本文作為這個(gè)開(kāi)發(fā)系列的第三篇教程,介紹的是如何用API的方式,主動(dòng)向某個(gè)粉絲發(fā)送文本消息。
如何找到合適的微信消息發(fā)送API呢?還是登錄微信開(kāi)發(fā)者中心,在控制臺(tái)菜單“客服消息”里,
客服接口-發(fā)消息就是我們需要使用的API。url如下:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=<傳入您的access token>
為了使用這個(gè)API,我們首先需要獲得調(diào)用API的access token:
Access token的獲取很簡(jiǎn)單,用Appid和secret去換。
調(diào)用另一個(gè)API,https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=<您微信公眾號(hào)的appid>&secret=<您微信公眾號(hào)的secret>。這個(gè)API會(huì)返回access token以及過(guò)期時(shí)間。
您微信公眾號(hào)的appid和secret可以在微信開(kāi)發(fā)者中心的控制臺(tái)里找到,在“測(cè)試號(hào)管理”頁(yè)面的標(biāo)簽頁(yè)下。
現(xiàn)在我們拿到access token后,就可以調(diào)用微信文本消息發(fā)送API給指定微信用戶(hù)發(fā)送文本消息了??次蚁聢D這個(gè)postman里的調(diào)用。紅色高亮的測(cè)試文本信息將通過(guò)微信API發(fā)送到我手機(jī)上:
測(cè)試成功了:
最后,我們用nodejs實(shí)現(xiàn)通過(guò)API給指定用戶(hù)發(fā)送文本信息。
function sendWCMeaasge(toUser,sMessage){
var options = {
url:"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" +
config.accessToken,
method: "POST",
json:true,
headers: {
"content-type": "application/json"},
body:{
"touser":toUser,
"msgtype":"text",
"text": {
"content":sMessage
}
}
};
request(options,function(error,response,data){
}
);
}
module.exports = sendWCMeaasge;
消費(fèi)代碼:
sendMessage(<此處傳入接收該消息的微信用戶(hù)的openid>, “這條消息是用nodejs發(fā)送的!”);
用node命名執(zhí)行上面的代碼,也能成功在微信app上接收到通過(guò)nodejs代碼調(diào)用微信消息API的方式發(fā)送的文本消息。