895669 2025-05-06 16:16:44

企业微信获取并分配在职成员

python python
# -*- 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)  # 剩余人员给到最后一个

评论

Главная - Вики-сайт
Copyright © 2011-2025 iteam. Current version is 2.143.0. UTC+08:00, 2025-05-16 14:35
浙ICP备14020137号-1 $Гость$