Files

149 lines
6.5 KiB
Python
Raw Permalink Normal View History

2026-08-02 14:07:04 +08:00
"""客户标签管理工具"""
import os
import django
2026-08-10 19:33:59 +08:00
from pydantic import BaseModel, Field
2026-08-02 14:07:04 +08:00
from sixGuoDjango.settings import BASE_DIR
from wechat_token.token工具包 import sixToken
os.environ.setdefault(key="DJANGO_SETTINGS_MODULE", value=f"{BASE_DIR.name}.settings")
django.setup()
import jmespath
import requests
from requests import post
2026-08-10 19:33:59 +08:00
class wecom管理企业标签(BaseModel):
2026-08-02 14:07:04 +08:00
"""
管理企业标签
最后更新:2023/12/01
企业客户标签是针对企业的外部联系人进行标记和分类的标签,由企业统一配置后,企业成员可使用此标签对客户进行标记。
"""
2026-08-10 19:33:59 +08:00
wecom_token: str = sixToken.get_wecom_token()
agentid: str = Field(default="1000025", description="agentid")
def 获取企业标签库(self, ):
2026-08-02 14:07:04 +08:00
"""
在这里返回结果为:企业微信创建的所有的企业标签,不包含个人标签
企业可通过此接口获取企业客户标签详情。请求方式: POST(HTTP)
"""
pass
2026-08-10 19:33:59 +08:00
uri = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_corp_tag_list?access_token={self.wecom_token}"
2026-08-02 14:07:04 +08:00
data = post(url=uri).json()
tag_group = jmespath.search(data=data, expression="tag_group")
for tag in tag_group:
print(tag)
2026-08-10 19:33:59 +08:00
2026-08-02 14:07:04 +08:00
return data
2026-08-10 19:33:59 +08:00
def 添加企业客户标签(self):
2026-08-02 14:07:04 +08:00
"""
企业可通过此接口向客户标签库中添加新的标签组和标签,每个企业最多可配置10000个企业标签。
注意:
1. 如果要向指定的标签组下添加标签,需要填写group_id参数;
2. 如果要创建一个全新的标签组以及标签,则需要通过group_name参数指定新标签组名称,
3. 如果填写的groupname已经存在,则会在此标签组下新建标签。
4. 如果填写了group_id参数,则group_name和标签组的order参数会被忽略。
不支持创建空标签组。
标签组内的标签不可同名,如果传入多个同名标签,则只会创建一个。
:return:
:rtype:
"""
2026-08-10 19:33:59 +08:00
uri = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_corp_tag?access_token={self.wecom_token}"
2026-08-02 14:07:04 +08:00
请求数据示例 = {
2026-08-10 19:33:59 +08:00
"group_name": "我的新标签组",
2026-08-02 14:07:04 +08:00
"order": 1,
"tag": [
2026-08-10 19:33:59 +08:00
{"name": "标签1", "order": 1},
{"name": "标签2", "order": 2}
]
2026-08-02 14:07:04 +08:00
}
data = post(url=uri, json=请求数据示例).json()
print(data)
2026-08-10 19:33:59 +08:00
def 编辑客户企业标签(self, userid: str, external_userid: str, add_tag: str):
2026-08-02 14:07:04 +08:00
"""
企业可通过此接口为指定成员的客户添加上由企业统一配置的标签;注意,每个成员对同一个客户最多可以添加3000个标签。
:return:
:rtype:
"""
2026-08-10 19:33:59 +08:00
uri = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/mark_tag?access_token={self.wecom_token}"
2026-08-02 14:07:04 +08:00
请求数据示例 = {
# "userid": "YuanBao1975", # 是 添加外部联系人的userid
"userid": userid, # 是 添加外部联系人的userid
# "external_userid": "wmj4zANAAAGlCZ2zNRhu1qzEMSBF0a9gs", # 这里测试的是葫芦娃本人的标签
"external_userid": external_userid, # 这里测试的是葫芦娃本人的标签
# "add_tag": ["etj4zANAAAGtArlV00IwBWzIqinXf5vQ"], # 要添加的标签列表一定要填写🆔(对某一个用户添加某些标签)
"add_tag": [add_tag], # 要添加的标签列表一定要填写🆔(对某一个用户添加某些标签)
# "remove_tag": [] # 要移除的标签列表(对某一个用户移除某些标签)
}
data = post(url=uri, json=请求数据示例).json()
print(data)
2026-08-10 19:33:59 +08:00
def 删除企业客户标签(self, 标签组ID, 标签子标签ID=None):
2026-08-02 14:07:04 +08:00
pass
2026-08-10 19:33:59 +08:00
"""删除已经创建的 企业标签 tag_id和group_id不可同时为空。如果一个标签组下所有的标签均被删除,则标签组会被自动删除"""
uri = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/del_corp_tag?access_token={self.wecom_token}"
删除的数据 = {
# "tag_id": [],
"group_id": [标签组ID],
}
postData = requests.post(url=uri, json=删除的数据)
print(postData.text)
# print(postData.json())
def 更新所有的用户性别组标签(self):
2026-08-02 14:07:04 +08:00
pass
2026-08-10 19:33:59 +08:00
def 打标签性别(self, userid: str, external_userid: str, gender: int):
2026-08-02 14:07:04 +08:00
"""
:param gender:
:type gender:
:param userid:
:type userid:
:param external_userid:
:type external_userid:
"""
print("单独更新用户性别标签")
if gender == 1:
2026-08-10 19:33:59 +08:00
self.编辑客户企业标签(
2026-08-02 14:07:04 +08:00
userid=userid, external_userid=external_userid,
add_tag="et74kdKAAAO9rCHIG-GcT7ZU_gsTslkg",
)
if gender == 2:
2026-08-10 19:33:59 +08:00
self.编辑客户企业标签(
2026-08-02 14:07:04 +08:00
userid=userid, external_userid=external_userid,
add_tag="et74kdKAAAJUou62OZwyu3LeavfmxAhw",
)
if gender == 0:
2026-08-10 19:33:59 +08:00
self.编辑客户企业标签(
2026-08-02 14:07:04 +08:00
userid=userid, external_userid=external_userid,
add_tag="et74kdKAAAI_VNWc-Gzakmo_jGnK-Glw",
)
2026-08-10 19:33:59 +08:00
def 给个微好友打标签(self, userID企微员工账号, external_userid要打标签的好友ID, add_tag要给好友添加的标签ID, remove_tag要对好友删除的标签ID=None):
if remove_tag要对好友删除的标签ID is None:
remove_tag要对好友删除的标签ID = []
2026-08-02 14:07:04 +08:00
pass
uri = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/mark_tag"
请求数据 = {
"userid": "YuanBao",
"external_userid": "wm74kdKAAAwE4T5vvLoUgHq9dEu7eTgA", # 给小豆豆测试打标签
"add_tag": ["et74kdKAAAO9rCHIG-GcT7ZU_gsTslkg"], # 测试标签ID
# "remove_tag": ["et74kdKAAAO9rCHIG-GcT7ZU_gsTslkg"] # 删除企业微信好友的 标签
}
2026-08-10 19:33:59 +08:00
response_data = requests.post(url=uri, params={"access_token": self.wecom_token}, json=请求数据)
2026-08-02 14:07:04 +08:00
print(response_data.json())
if __name__ == '__main__':
pass
2026-08-10 19:33:59 +08:00
wecom管理企业标签().获取企业标签库()
# wecom管理企业标签().删除企业客户标签(标签组ID="etj4zANAAA1Zh_RyLIpjOr6IbuMPRB8g")
# wecom管理企业标签().添加企业客户标签()