微信公眾號,仿照企業(yè)號的思路,增加了標(biāo)簽管理的功能,對關(guān)注的粉絲可以設(shè)置標(biāo)簽管理,實(shí)現(xiàn)更加方便的分組管理功能。開發(fā)者可以使用用戶標(biāo)簽管理的相關(guān)接口,實(shí)現(xiàn)對公眾號的標(biāo)簽進(jìn)行創(chuàng)建、查詢、修改、刪除等操作,也可以對用戶進(jìn)行打標(biāo)簽、取消標(biāo)簽等操作。本篇隨筆主要介紹如何利用c#對公眾號這個(gè)較新的特性進(jìn)行封裝,實(shí)現(xiàn)對標(biāo)簽的管理功能。
1、標(biāo)簽功能介紹
1)標(biāo)簽功能替代分組功能,支持多維度定義用戶屬性
運(yùn)營者可登錄公眾平臺后臺,點(diǎn)擊左側(cè)菜單“用戶管理”后管理已關(guān)注用戶,點(diǎn)擊其中一個(gè)用戶右側(cè)的“標(biāo)簽”小角標(biāo)可彈出復(fù)選框快速為該用戶添加標(biāo)簽,且添加標(biāo)簽復(fù)選框內(nèi)已支持直接新建標(biāo)簽。
另外,標(biāo)簽功能接口也已更新,開發(fā)者可調(diào)用接口,實(shí)現(xiàn)對標(biāo)簽和用戶操作。同時(shí),高級群發(fā)接口和個(gè)性化菜單接口等已支持根據(jù)標(biāo)簽實(shí)現(xiàn)操作。
2)優(yōu)化用戶卡片,支持多場景查看用戶頭像大圖與互動數(shù)據(jù),增強(qiáng)運(yùn)營者對用戶熟悉度與管理效率
本期新增消息數(shù)、留言數(shù)和贊賞數(shù)等互動數(shù)據(jù),且顯示用戶關(guān)注時(shí)間和支持查看用戶頭像大圖,有利于拉近運(yùn)營者與用戶的距離。另外, 支持“贊賞功能”和“留言管理”場景直接管理用戶,提升管理效率。
2、標(biāo)簽的接口封裝
標(biāo)簽的接口分為兩部分:標(biāo)簽管理和用戶管理,一個(gè)公眾號,最多可以創(chuàng)建100個(gè)標(biāo)簽。標(biāo)簽功能目前支持公眾號為用戶打上最多三個(gè)標(biāo)簽。
其中標(biāo)簽管理包括:
1) 創(chuàng)建標(biāo)簽 2)獲取公眾號已創(chuàng)建的標(biāo)簽 3)編輯標(biāo)簽 4)刪除標(biāo)簽 5)獲取標(biāo)簽下粉絲列表
標(biāo)簽的用戶管理包括:
1)批量為用戶打標(biāo)簽 2)批量為用戶取消標(biāo)簽 3)獲取用戶身上的標(biāo)簽列表
下面分別為幾種接口封裝進(jìn)行相關(guān)的介紹。
首先按照常規(guī)的方式 ,我們定義好相關(guān)的接口和實(shí)現(xiàn)關(guān)系,如下圖所示。
根據(jù)相關(guān)的接口說明,我們可以實(shí)現(xiàn)標(biāo)簽接口的定義,c#代碼如下所示。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
/// <summary> /// 微信標(biāo)簽管理的api接口 /// 開發(fā)者可以使用用戶標(biāo)簽管理的相關(guān)接口,實(shí)現(xiàn)對公眾號的標(biāo)簽進(jìn)行創(chuàng)建、查詢、修改、刪除等操作,也可以對用戶進(jìn)行打標(biāo)簽、取消標(biāo)簽等操作。 /// </summary> public interface itagapi { /// <summary> /// 創(chuàng)建標(biāo)簽 /// 一個(gè)公眾號,最多可以創(chuàng)建100個(gè)標(biāo)簽。 /// </summary> /// <param name="accesstoken">調(diào)用接口憑證</param> /// <param name="name">標(biāo)簽名(30個(gè)字符以內(nèi))</param> /// <returns></returns> tagjson createtag( string accesstoken, string name); /// <summary> /// 獲取公眾號已創(chuàng)建的標(biāo)簽 /// </summary> /// <param name="accesstoken">調(diào)用接口憑證</param> /// <returns></returns> list<tagcountjson> gettaglist( string accesstoken); /// <summary> /// 編輯標(biāo)簽 /// </summary> /// <param name="accesstoken">調(diào)用接口憑證</param> /// <param name="id">標(biāo)簽id</param> /// <param name="name">標(biāo)簽名稱</param> /// <returns></returns> commonresult updatetag( string accesstoken, int id, string name); /// <summary> /// 刪除標(biāo)簽 /// </summary> /// <param name="accesstoken">調(diào)用接口憑證</param> /// <param name="id">標(biāo)簽id</param> /// <returns></returns> commonresult deletetag( string accesstoken, int id); /// <summary> /// 獲取標(biāo)簽下粉絲列表 /// </summary> /// <param name="accesstoken">調(diào)用接口憑證</param> /// <param name="id">標(biāo)簽id</param> /// <param name="name">標(biāo)簽名稱</param> /// <returns></returns> gettagresult gettag( string accesstoken, int id, string next_openid = null ); /// <summary> /// 批量為用戶打標(biāo)簽 /// 標(biāo)簽功能目前支持公眾號為用戶打上最多三個(gè)標(biāo)簽。 /// </summary> /// <param name="accesstoken">調(diào)用接口憑證</param> /// <param name="tagid">標(biāo)簽id</param> /// <param name="openid_list">粉絲列表</param> /// <returns></returns> commonresult batchtagging( string accesstoken, int tagid, list< string > openid_list); /// <summary> /// 批量為用戶取消標(biāo)簽 /// 標(biāo)簽功能目前支持公眾號為用戶打上最多三個(gè)標(biāo)簽。 /// </summary> /// <param name="accesstoken">調(diào)用接口憑證</param> /// <param name="tagid">標(biāo)簽id</param> /// <param name="openid_list">粉絲列表</param> /// <returns></returns> commonresult batchuntagging( string accesstoken, int tagid, list< string > openid_list); /// <summary> /// 獲取用戶身上的標(biāo)簽列表 /// </summary> /// <param name="accesstoken">調(diào)用接口憑證</param> /// <param name="openid">用戶openid</param> /// <returns></returns> list< int > getidlist( string accesstoken, string openid); } |
具體我們來看看幾個(gè)接口的官方定義數(shù)據(jù)。
1)創(chuàng)建標(biāo)簽的接口
接口調(diào)用請求說明
http請求方式:post(請使用https協(xié)議)
https://api.weixin.qq.com/cgi-bin/tags/create?access_token=access_token
post數(shù)據(jù)格式:json
post數(shù)據(jù)例子:
1
2
3
4
5
|
{ "tag" : { "name" : "廣東" //標(biāo)簽名 } } |
返回說明(正常時(shí)返回的json數(shù)據(jù)包示例)
1
2
3
4
5
6
|
{ "tag" :{ "id" :134, //標(biāo)簽id "name" : "廣東" } } |
這樣我們就可以定義一個(gè)實(shí)體類來承載這個(gè)返回的數(shù)據(jù)了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/// <summary> /// 標(biāo)簽信息 /// </summary> public class tagjson { /// <summary> /// 標(biāo)簽id,由微信分配 /// </summary> public int id { get ; set ; } /// <summary> /// 標(biāo)簽名,utf8編碼 /// </summary> public string name { get ; set ; } } |
這樣,創(chuàng)建標(biāo)簽的完整實(shí)現(xiàn)代碼如下所示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/// <summary> /// 創(chuàng)建標(biāo)簽 /// 一個(gè)公眾號,最多可以創(chuàng)建100個(gè)標(biāo)簽。 /// </summary> /// <param name="accesstoken">調(diào)用接口憑證</param> /// <param name="name">標(biāo)簽名(30個(gè)字符以內(nèi))</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)獲取公眾號已創(chuàng)建的標(biāo)簽
接口調(diào)用請求說明
http請求方式:get(請使用https協(xié)議)
https://api.weixin.qq.com/cgi-bin/tags/get?access_token=access_token
返回?cái)?shù)據(jù)格式:json返回的數(shù)據(jù)例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
{ "tags" :[{ "id" :1, "name" : "黑名單" , "count" :0 //此標(biāo)簽下粉絲數(shù) },{ "id" :2, "name" : "星標(biāo)組" , "count" :0 },{ "id" :127, "name" : "廣東" , "count" :5 } ] } |
這樣我們就可以定義其返回值為list<tagcountjson>了,其中tagcountjson為對應(yīng)類的屬性即可。
1
2
3
4
5
6
7
8
9
10
|
/// <summary> /// 標(biāo)簽信息和統(tǒng)計(jì)數(shù)量 /// </summary> public class tagcountjson : tagjson { /// <summary> /// 此標(biāo)簽下粉絲數(shù) /// </summary> public int count { get ; set ; } } |
這樣我們就可以通過json的解析返回對應(yīng)的數(shù)據(jù)了,相關(guān)操作和上面的接口類似,不在贅述。