微信公衆號,仿照企業號的思路,增長了標籤管理的功能,對關注的粉絲能夠設置標籤管理,實現更加方便的分組管理功能。開發者可使用用戶標籤管理的相關接口,實現對公衆號的標籤進行建立、查詢、修改、刪除等操做,也能夠對用戶進行打標籤、取消標籤等操做。本篇隨筆主要介紹如何利用C#對公衆號這個較新的特性進行封裝,實現對標籤的管理功能。html
1)標籤功能替代分組功能,支持多維度定義用戶屬性json
運營者可登陸公衆平臺後臺,點擊左側菜單「用戶管理」後管理已關注用戶,點擊其中一個用戶右側的「標籤」小角標可彈出複選框快速爲該用戶添加標籤,且添加標籤複選框內已支持直接新建標籤。api
另外,標籤功能接口也已更新,開發者可調用接口,實現對標籤和用戶操做。同時,高級羣發接口和個性化菜單接口等已支持根據標籤實現操做。詳情可查看微信公衆平臺開發者文檔。服務器
2)優化用戶卡片,支持多場景查看用戶頭像大圖與互動數據,加強運營者對用戶熟悉度與管理效率微信
本期新增消息數、留言數和讚揚數等互動數據,且顯示用戶關注時間和支持查看用戶頭像大圖,有利於拉近運營者與用戶的距離。另外, 支持「讚揚功能」和「留言管理」場景直接管理用戶,提高管理效率。微信公衆平臺
標籤的接口分爲兩部分:標籤管理和用戶管理,一個公衆號,最多能夠建立100個標籤。標籤功能目前支持公衆號爲用戶打上最多三個標籤。post
其中標籤管理包括:測試
1) 建立標籤 2)獲取公衆號已建立的標籤 3)編輯標籤 4)刪除標籤 5)獲取標籤下粉絲列表
標籤的用戶管理包括:
1)批量爲用戶打標籤 2)批量爲用戶取消標籤 3)獲取用戶身上的標籤列表微信支付
下面分別爲幾種接口封裝進行相關的介紹。優化
首先按照常規的方式 ,咱們定義好相關的接口和實現關係,以下圖所示。
根據相關的接口說明,咱們能夠實現標籤接口的定義,C#代碼以下所示。
/// <summary> /// 微信標籤管理的API接口 /// 開發者可使用用戶標籤管理的相關接口,實現對公衆號的標籤進行建立、查詢、修改、刪除等操做,也能夠對用戶進行打標籤、取消標籤等操做。 /// </summary> public interface ITagApi { /// <summary> /// 建立標籤 /// 一個公衆號,最多能夠建立100個標籤。 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <param name="name">標籤名(30個字符之內)</param> /// <returns></returns> TagJson CreateTag(string accessToken, string name); /// <summary> /// 獲取公衆號已建立的標籤 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <returns></returns> List<TagCountJson> GetTagList(string accessToken); /// <summary> /// 編輯標籤 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <param name="id">標籤ID</param> /// <param name="name">標籤名稱</param> /// <returns></returns> CommonResult UpdateTag(string accessToken, int id, string name); /// <summary> /// 刪除標籤 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <param name="id">標籤ID</param> /// <returns></returns> CommonResult DeleteTag(string accessToken, int id); /// <summary> /// 獲取標籤下粉絲列表 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <param name="id">標籤ID</param> /// <param name="name">標籤名稱</param> /// <returns></returns> GetTagResult GetTag(string accessToken, int id, string next_openid = null); /// <summary> /// 批量爲用戶打標籤 /// 標籤功能目前支持公衆號爲用戶打上最多三個標籤。 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <param name="tagid">標籤ID</param> /// <param name="openid_list">粉絲列表</param> /// <returns></returns> CommonResult BatchTagging(string accessToken, int tagid, List<string> openid_list); /// <summary> /// 批量爲用戶取消標籤 /// 標籤功能目前支持公衆號爲用戶打上最多三個標籤。 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <param name="tagid">標籤ID</param> /// <param name="openid_list">粉絲列表</param> /// <returns></returns> CommonResult BatchUntagging(string accessToken, int tagid, List<string> openid_list); /// <summary> /// 獲取用戶身上的標籤列表 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <param name="openid">用戶OpenID</param> /// <returns></returns> List<int> GetIdList(string accessToken, string openid); }
具體咱們來看看幾個接口的官方定義數據。
1)建立標籤的接口
接口調用請求說明
http請求方式:POST(請使用https協議) https://api.weixin.qq.com/cgi-bin/tags/create?access_token=ACCESS_TOKEN POST數據格式:JSON POST數據例子: { "tag" : { "name" : "廣東"//標籤名 } }
返回說明(正常時返回的json數據包示例)
{ "tag":{ "id":134,//標籤id "name":"廣東" } }
這樣咱們就能夠定義一個實體類來承載這個返回的數據了。
/// <summary> /// 標籤信息 /// </summary> public class TagJson { /// <summary> /// 標籤id,由微信分配 /// </summary> public int id { get; set; } /// <summary> /// 標籤名,UTF8編碼 /// </summary> public string name { get; set; } }
這樣,建立標籤的完整實現代碼以下所示
/// <summary> /// 建立標籤 /// 一個公衆號,最多能夠建立100個標籤。 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <param name="name">標籤名(30個字符之內)</param> /// <returns></returns> public TagJson CreateTag(string accessToken, string name) { var url = string.Format("https://api.weixin.qq.com/cgi-bin/tags/create?access_token={0}", accessToken); var data = new { tag = new { name = name } }; var postData = data.ToJson(); var result = JsonHelper<TagCreateResult>.ConvertJson(url, postData); return result != null ? result.tag : null; }
2)獲取公衆號已建立的標籤
接口調用請求說明
http請求方式:GET(請使用https協議) https://api.weixin.qq.com/cgi-bin/tags/get?access_token=ACCESS_TOKEN
返回數據格式:JSON
返回的數據例子: { "tags":[{ "id":1, "name":"黑名單", "count":0 //此標籤下粉絲數 },{ "id":2, "name":"星標組", "count":0 },{ "id":127, "name":"廣東", "count":5 } ] }
這樣咱們就能夠定義其返回值爲List<TagCountJson>了,其中TagCountJson爲對應類的屬性便可。
/// <summary> /// 標籤信息和統計數量 /// </summary> public class TagCountJson : TagJson { /// <summary> /// 此標籤下粉絲數 /// </summary> public int count { get; set; } }
這樣咱們就能夠經過JSON的解析返回對應的數據了,相關操做和上面的接口相似,不在贅述。
本篇提供了一個管理標籤的相關接口思路和相關實現代碼,但願你們能夠有所啓發和幫助。
若是對這個《C#開發微信門戶及應用》系列感興趣,能夠關注個人其餘文章,系列隨筆以下所示:
C#開發微信門戶及應用(35)--微信支付之企業付款封裝操做
C#開發微信門戶及應用(32)--微信支付接入和API封裝使用
C#開發微信門戶及應用(31)--微信語義理解接口的實現和處理
C#開發微信門戶及應用(28)--微信「搖一搖·周邊」功能的使用和接口的實現
C#開發微信門戶及應用(23)-微信小店商品管理接口的封裝和測試
C#開發微信門戶及應用(21)-微信企業號的消息和事件的接收處理及解密
C#開發微信門戶及應用(19)-微信企業號的消息發送(文本、圖片、文件、語音、視頻、圖文消息等)
C#開發微信門戶及應用(18)-微信企業號的通信錄管理開發之成員管理
C#開發微信門戶及應用(17)-微信企業號的通信錄管理開發之部門管理
C#開發微信門戶及應用(15)-微信菜單增長掃一掃、發圖片、發地理位置功能
C#開發微信門戶及應用(14)-在微信菜單中採用重定向獲取用戶數據
C#開發微信門戶及應用(11)--微信菜單的多種表現方式介紹
C#開發微信門戶及應用(10)--在管理系統中同步微信用戶分組信息