895669 2025-05-06 16:16:44
企业微信获取并分配在职成员
# -*- coding:utf-8 -*-
import json
import requests
import time
import os
class wechat_work(object):
# 运行数据库和建立游标对象
def __init__(self):
# 企业微信
self.file_name = "wechat_work_token.txt" # 存放token
self.corp_id = "wwxxxxxxxxxx"
self.corp_secret = "xxxxxxxxxxxxxxxxxxx"
self.get_token_url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
self.get_externalcontact_list_url = "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/list?access_token=" # 获取客户列表接口
self.externalcontact_transfer_customer_url = "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/transfer_customer?access_token=" # 转接在职成员的客户给其他成员接口
self.handover_userid = "18100000000" # 原跟进成员的userid
self.takeover_userid = ["18200000000", "18300000000"] # 接替成员的userid
def get_token(self) -> str:
qw_token = self.query_text_token()
if qw_token:
return qw_token
"""
获取token
:return: token
"""
headers = {'content-type': 'application/json'}
requestData = {
"corpid": self.corp_id,
"corpsecret": self.corp_secret,
}
ret = requests.post(self.get_token_url, json=requestData, headers=headers)
qw_token = json.loads(ret.text)["access_token"]
# 存入文件
self.write_text_token(qw_token)
return qw_token
def get_externalcontact_list(self) -> list:
"""
获取客户列表
:return: 客户列表
"""
ret = requests.get(
self.get_externalcontact_list_url + self.get_token() + '&userid=' + self.handover_userid)
return json.loads(ret.text)["external_userid"]
def externalcontact_transfer_customer(self, external_userid: list, userid: str) -> list:
"""
分配在职人员
100为一个批次
:return: ret
"""
headers = {'content-type': 'application/json'}
requestData = {
"handover_userid": self.handover_userid,
"takeover_userid": userid,
"external_userid": external_userid,
}
ret = requests.post(self.externalcontact_transfer_customer_url + self.get_token(), json=requestData,
headers=headers)
return json.loads(ret.text)
def query_text_token(self):
if os.path.exists(self.file_name):
# 如果文件存在,读取内容
with open(self.file_name, "r") as file:
content = file.read()
return content
def write_text_token(self, qw_token):
with open(self.file_name, "w") as file:
file.write(qw_token)
if __name__ == '__main__':
wechat_work = wechat_work()
# 客户
externalcontact_list = wechat_work.get_externalcontact_list()
externalcontact_size = len(externalcontact_list)
print("externalcontact_list:" + str(externalcontact_size))
takeover_userid = wechat_work.takeover_userid # 分配人员
batch_size = 100 # 每次分配 100 个值
num = (externalcontact_size // batch_size) // len(takeover_userid) # 取每人分配的次数 每次100 取整
for userid in takeover_userid:
print("takeover_userid:" + userid)
# 循环执行分配客户
for i in range(num):
batch = externalcontact_list[:batch_size] # 从列表的前面获取 batch_size 个元素
del externalcontact_list[:batch_size] # 删除获取到的元素
print("列表剩余值:", len(externalcontact_list))
wechat_work.externalcontact_transfer_customer(batch, userid)
print("停0.2秒!!!")
time.sleep(0.2)
if userid == takeover_userid[-1] and len(externalcontact_list) > 0: # 判断是否是最后一个元素并且还有剩余客户
print(f"最后接替人员 {userid} 分配剩余客户数: {len(externalcontact_list)}")
response = wechat_work.externalcontact_transfer_customer(externalcontact_list, userid) # 剩余人员给到最后一个