通過模板消息接口,公眾號(hào)能向關(guān)注其賬號(hào)的用戶發(fā)送預(yù)設(shè)模板的消息。模板消息僅用于公眾號(hào)向用戶發(fā)送重要的服務(wù)通知,只能用于符合其要求的服務(wù)場(chǎng)景中,如信用卡刷卡通知,商品購(gòu)買成功通知等。不支持廣告等營(yíng)銷類消息以及其它所有可能對(duì)用戶造成騷擾的消息。本文主要介紹基于C#開發(fā)實(shí)現(xiàn)公眾號(hào)模板消息的管理功能。
“模板消息功能的推出,將極大地增強(qiáng)服務(wù)號(hào)的服務(wù)通知能力”,在一些一直期待微信模板消息功能開放的公眾號(hào)運(yùn)營(yíng)者看來,微信一對(duì)一溝通的社交屬性,讓信息推送的觸達(dá)率更加精準(zhǔn),這也讓企業(yè)在成本、服務(wù)效率、性能上有了不少優(yōu)勢(shì),不僅豐富了企業(yè)的服務(wù)形式,增強(qiáng)用戶的互動(dòng)和粘性,還能為用戶帶來更多元、豐富、及時(shí)的服務(wù)體驗(yàn)。
1、模板的行業(yè)分類管理及說明
模版信息依行業(yè)進(jìn)行劃分,并根據(jù)使用場(chǎng)景不同設(shè)計(jì)了不同的模版,如軟件行業(yè)下就有報(bào)名成功通知、看房提醒、訂單提醒、會(huì)員充值、會(huì)員消費(fèi)通知等各種場(chǎng)景下可能使用到的模版。
如果我們公眾號(hào)需要使用模板,那么我們需要從模板庫(kù)里面添加所需的模板(目前數(shù)量上限為15個(gè))。模板添加到我的模板后,每個(gè)模板就生成了一個(gè)隨機(jī)值,也就是【模板ID】,我們發(fā)送信息,就是依照這個(gè)模板ID進(jìn)行發(fā)送的。
每個(gè)模板里面有詳細(xì)的參數(shù)說明,以及示例效果。
微信團(tuán)隊(duì)相關(guān)負(fù)責(zé)人表示:模板消息的開放主要是為了幫助公眾號(hào)完成閉環(huán)服務(wù),現(xiàn)有的公眾號(hào),主動(dòng)發(fā)消息能力有限(每月可群發(fā)四條消息),這讓許多企業(yè)無法向用戶推送服務(wù)結(jié)果等消息的主動(dòng)通知。模板消息開放后,企業(yè)可以借助微信平臺(tái),運(yùn)用模板消息,在外部服務(wù)和內(nèi)部管理過程中,讓信息的觸達(dá)更為迅捷,為用戶提供更加周到的服務(wù)。
微信一直在不斷優(yōu)化用戶體驗(yàn),模板消息的開放,為企業(yè)提供了更多的基礎(chǔ)能力,比如更豐富的雙向互動(dòng),更精準(zhǔn)的信息提醒等,這些都提升了企業(yè)精品化、個(gè)性化服務(wù)的深度和廣度,這也是為什么金融、民航、政務(wù)等多領(lǐng)域的機(jī)構(gòu)、企業(yè)都期待微信開放模板消息功能的原因。未來,隨著模板消息功能的進(jìn)一步完善,或許企業(yè)員工工資明細(xì)、住戶每月用電量、電費(fèi)等用電詳單,甚至是駕駛證到期需更換等,都能通過企業(yè)、部門機(jī)構(gòu)微信公眾帳號(hào)的模板消息即時(shí)傳遞給相應(yīng)用戶。
2、使用模板消息進(jìn)行開發(fā)
前面介紹了模板的相關(guān)信息以及單個(gè)模板的介紹,我們?nèi)绻枰诤笈_(tái)程序中集成模板消息發(fā)送的話,那么我們需要了解模板消息的API有那些?如何利用模板消息的API進(jìn)行消息發(fā)送?
我們先來看看模板消息使用的說明:
1、所有服務(wù)號(hào)都可以在功能->添加功能插件處看到申請(qǐng)模板消息功能的入口,但只有認(rèn)證后的服務(wù)號(hào)才可以申請(qǐng)模板消息的使用權(quán)限并獲得該權(quán)限; 2、需要選擇公眾賬號(hào)服務(wù)所處的2個(gè)行業(yè),每月可更改1次所選行業(yè); 3、在所選擇行業(yè)的模板庫(kù)中選用已有的模板進(jìn)行調(diào)用; 4、每個(gè)賬號(hào)可以同時(shí)使用15個(gè)模板。 5、當(dāng)前每個(gè)模板的日調(diào)用上限為10萬次【2014年11月18日將接口調(diào)用頻率從默認(rèn)的日1萬次提升為日10萬次,可在MP登錄后的開發(fā)者中心查看】。
模板消息的管理功能有:
1 設(shè)置所屬行業(yè)
2 獲得模板ID
3 發(fā)送模板消息
4 事件推送
2.1設(shè)置所屬行業(yè)
設(shè)置行業(yè)可在MP中完成,每月可修改行業(yè)1次,賬號(hào)僅可使用所屬行業(yè)中相關(guān)的模板,為方便第三方開發(fā)者,提供通過接口調(diào)用的方式來修改賬號(hào)所屬行業(yè),具體如下:
接口調(diào)用請(qǐng)求說明
http請(qǐng)求方式:?POST https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=ACCESS_TOKEN
POST數(shù)據(jù)說明
POST數(shù)據(jù)示例如下:
??????{ ??????????"industry_id1":"1", ??????????"industry_id2":"4" ???????}
根據(jù)說明,我們可以定義一個(gè)接口類ITemplateMessageApi,然后定義設(shè)置所屬行業(yè)的接口函數(shù)如下所示:
????????///?<summary> ????????///?設(shè)置所屬行業(yè)????????///?</summary> ????????///?<param name="accessToken"></param> ????????///?<param name="industry_id1">公眾號(hào)模板消息所屬行業(yè)編號(hào)(主營(yíng)行業(yè))</param> ????????///?<param name="industry_id2">公眾號(hào)模板消息所屬行業(yè)編號(hào)(副營(yíng)行業(yè))</param> ????????///?<returns></returns> ????????CommonResult?SetIndustry(string?accessToken,?IndustryCode?industry_id1,?IndustryCode?industry_id2);
而為了方便,我們定義IndustryCode為一個(gè)枚舉對(duì)象,里面列出了系統(tǒng)支持的所有行業(yè)代碼,如下所示。
而實(shí)現(xiàn)代碼和之前的函數(shù)處理類似,都是POST數(shù)據(jù)到一個(gè)連接即可,并解析返回的結(jié)果就可以了,具體實(shí)現(xiàn)代碼如下所示。
///?<summary> ????????///?設(shè)置所屬行業(yè) ????????///?</summary> ????????///?<param name="accessToken">訪問憑證</param> ????????///?<param name="industry_id1">公眾號(hào)模板消息所屬行業(yè)編號(hào)(主營(yíng)行業(yè))</param> ????????///?<param name="industry_id2">公眾號(hào)模板消息所屬行業(yè)編號(hào)(副營(yíng)行業(yè))</param> ????????///?<returns></returns> ????????public?CommonResult?SetIndustry(string?accessToken,?IndustryCode?industry_id1,?IndustryCode?industry_id2) ????????{ ????????????var?url?=?string.Format("https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token={0}",?accessToken); ????????????var?data?=?new ????????????{ ????????????????industry_id1?=?(int)industry_id1, ????????????????industry_id2?=?(int)industry_id2 ????????????}; ????????????string?postData?=?data.ToJson(); ????????????return?Helper.GetExecuteResult(url,?postData); ????????}
2.2?獲得模板ID
獲得模板ID,也就是從模板庫(kù)里面添加對(duì)應(yīng)的模板消息到我的模板里面。
從行業(yè)模板庫(kù)選擇模板到賬號(hào)后臺(tái),獲得模板ID的過程可在MP中完成。為方便第三方開發(fā)者,提供通過接口調(diào)用的方式來修改賬號(hào)所屬行業(yè),具體如下:
接口調(diào)用請(qǐng)求說明
http請(qǐng)求方式:?POST https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN
POST數(shù)據(jù)說明
POST數(shù)據(jù)示例如下:
??????{ ???????????"template_id_short":"TM00015" ???????}
C#函數(shù)實(shí)現(xiàn)代碼如下所示:
///?<summary> ????????///?獲得模板ID. ????????///?從行業(yè)模板庫(kù)選擇模板到賬號(hào)后臺(tái),獲得模板ID的過程可在MP中完成。 ????????///?</summary> ????????///?<param name="accessToken">訪問憑證</param> ????????///?<param name="template_id_short">模板庫(kù)中模板的編號(hào),有“TM**”和“OPENTMTM**”等形式</param> ????????///?<returns></returns> ????????public?AddTemplateResult?AddTemplate(string?accessToken,?string?template_id_short) ????????{ ????????????var?url?=?string.Format("https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token={0}",?accessToken); ????????????var?data?=?new ????????????{ ????????????????template_id_short?=?template_id_short ????????????}; ????????????string?postData?=?data.ToJson(); ????????????return?JsonHelper<AddTemplateResult>.ConvertJson(url,?postData); ????????}
2.3?發(fā)送模板消息
根據(jù)上面小節(jié)處理,添加到我的模板里面的操作得到的模板ID,我們就可以調(diào)用發(fā)送模板消息的API進(jìn)行模板消息發(fā)送了。
接口調(diào)用請(qǐng)求說明
http請(qǐng)求方式:?POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
POST數(shù)據(jù)說明
POST數(shù)據(jù)示例如下:
??????{ ???????????"touser":"OPENID", ???????????"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY", ???????????"url":"http://weixin.qq.com/download", ???????????"topcolor":"#FF0000", ???????????"data":{ ???????????????????"first":?{ ???????????????????????"value":"恭喜你購(gòu)買成功!", ???????????????????????"color":"#173177" ???????????????????}, ???????????????????"keynote1":{ ???????????????????????"value":"巧克力", ???????????????????????"color":"#173177" ???????????????????}, ???????????????????"keynote2":?{ ???????????????????????"value":"39.8元", ???????????????????????"color":"#173177" ???????????????????}, ???????????????????"keynote3":?{ ???????????????????????"value":"2014年9月16日", ???????????????????????"color":"#173177" ???????????????????}, ???????????????????"remark":{ ???????????????????????"value":"歡迎再次購(gòu)買!", ???????????????????????"color":"#173177" ???????????????????} ???????????} ???????}
根據(jù)上面的JSON參數(shù),我們可以看到,有部分是模板消息公共的部分,有部分則是模板消息的具體參數(shù),這些參數(shù)需要根據(jù)不同的模板進(jìn)行不同的賦值。
如這部分是共同的:
???touser":"OPENID", ???"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY", ???"url":"http://weixin.qq.com/download", ???"topcolor":"#FF0000",
根據(jù)這個(gè)特點(diǎn),我們定義發(fā)送模板消息的接口如下所示:
///?<summary> ????????///?模板消息僅用于公眾號(hào)向用戶發(fā)送重要的服務(wù)通知,只能用于符合其要求的服務(wù)場(chǎng)景中,如信用卡刷卡通知,商品購(gòu)買成功通知等。 ????????///?不支持廣告等營(yíng)銷類消息以及其它所有可能對(duì)用戶造成騷擾的消息。 ????????///?</summary> ????????///?<param name="accessToken">訪問憑證</param> ????????///?<param name="openId">賬號(hào)的openID</param> ????????///?<param name="templateId">在公眾平臺(tái)線上模板庫(kù)中選用模板獲得ID</param> ????????///?<param name="data">模板的變化參數(shù)數(shù)據(jù)</param> ????????///?<param name="url">,URL置空,則在發(fā)送后,點(diǎn)擊模板消息會(huì)進(jìn)入一個(gè)空白頁(yè)面(ios),或無法點(diǎn)擊(android)。</param> ????????///?<param name="topcolor">頂部顏色,默認(rèn)為#173177</param> ????????///?<returns></returns> ????????SendMassMessageResult?SendTemplateMessage(string?accessToken,?string?openId,?string?templateId,?object?data,?string?url,?string?topcolor?=?"#173177");
我們用object data來定義模板的變化參數(shù)數(shù)據(jù)。
具體的實(shí)現(xiàn)還是和前面的方法提交數(shù)據(jù)處理差不多,代碼如下所示。
///?<summary> ????????///?模板消息僅用于公眾號(hào)向用戶發(fā)送重要的服務(wù)通知,只能用于符合其要求的服務(wù)場(chǎng)景中,如信用卡刷卡通知,商品購(gòu)買成功通知等。 ????????///?不支持廣告等營(yíng)銷類消息以及其它所有可能對(duì)用戶造成騷擾的消息。 ????????///?</summary> ????????///?<typeparam name="T"></typeparam> ????????///?<param name="accessToken">訪問憑證</param> ????????///?<param name="openId"></param> ????????///?<param name="templateId">在公眾平臺(tái)線上模板庫(kù)中選用模板獲得ID</param> ????????///?<param name="data"></param> ????????///?<param name="url">,URL置空,則在發(fā)送后,點(diǎn)擊模板消息會(huì)進(jìn)入一個(gè)空白頁(yè)面(ios),或無法點(diǎn)擊(android)。</param> ????????///?<param name="topcolor"></param> ????????///?<returns></returns> ????????public?SendMassMessageResult?SendTemplateMessage(string?accessToken,?string?openId,?string?templateId,?object?data,?string?url,?string?topcolor?=?"#173177") ????????{ ????????????var?postUrl?=?string.Format("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}",?accessToken); ????????????var?msgData?=?new?TemplateData() ????????????{ ????????????????touser?=?openId, ????????????????template_id?=?templateId, ????????????????topcolor?=?topcolor, ????????????????url?=?url, ????????????????data?=?data ????????????}; ????????????string?postData?=?msgData.ToJson(); ????????????SendMassMessageResult?result?=?JsonHelper<SendMassMessageResult>.ConvertJson(postUrl,?postData); ????????????return?result; ????????}
發(fā)送模板的消息相對(duì)其他兩個(gè)接口的使用復(fù)雜一些,例如我以一個(gè)會(huì)員通知的模板消息為例,模板的詳細(xì)情況如下:
具體的測(cè)試代碼如下所示。
#region?發(fā)送模板消息 ????????????var?data?=?new ????????????{ ????????????????//使用TemplateDataItem簡(jiǎn)單創(chuàng)建數(shù)據(jù)。 ????????????????first?=?new?TemplateDataItem("您好,您已成為微信【廣州愛奇迪】會(huì)員。"), ????????????????type?=?new?TemplateDataItem("18620292076"), ????????????????address?=?new?TemplateDataItem("廣州市白云區(qū)廣州大道北"), ????????????????VIPName?=?new ????????????????{ ????????????????????//使用new?方式,構(gòu)建數(shù)據(jù),包括value,?color兩個(gè)固定屬性。 ????????????????????value?=?"伍華聰", ????????????????????color?=?"#173177" ????????????????}, ????????????????VIPPhone?=?new?TemplateDataItem("18620292076"), ????????????????expDate?=?new?TemplateDataItem("2016年4月18日"), ????????????????remark?=?new?TemplateDataItem("如有疑問,請(qǐng)咨詢18620292076。",?"#173177"), ????????????}; ????????????#endregion ????????????string?url?=?"http://www.iqidi.com"; ????????????string?topColor?=?"#173177"; ????????????string?templateId?=?"-5LbClAa9KUlEmr5bCSS0rxU_I2iT16iYBDxCVU1iJg"; ????????????SendMassMessageResult?sendResult?=?api.SendTemplateMessage(token,?openId,?templateId,?data,?url,?topColor); ????????????if(sendResult?!=?null) ????????????{ ????????????????Console.WriteLine(sendResult.msg_id); ????????????}
那么我們得到的提示效果如下所示。
微信模板消息,能夠讓我們與客戶之間溝通不受每月幾條數(shù)量的限制,同時(shí)也能夠利用微信模板庫(kù)豐富的內(nèi)容,實(shí)現(xiàn)強(qiáng)大的應(yīng)用場(chǎng)景。
更多C#開發(fā)微信門戶及應(yīng)用公眾號(hào)模板消息管理?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!?

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)