使用 Python 给企业微信的外部联系人客户批量打标签

准备工作

Python 3 的环境

可以编辑.csv格式文件的编辑器(比如 wps、Excel)

装有 API 调试工具(比如 Postman https://www.postman.com )

具有企业微信管理员的权限

  • 获取企业ID
  • 获取通讯录的 API 接口Secret值
  • 获取客户的 API 接口Secret值

如果不知道以上信息如何获取,可以通过企业微信的官方开发者中心页面进行关键词查找:https://developer.work.weixin.qq.com/

获取企业标签库里的客户标签 tag_id

通过企业ID + 客户Secret 获取access_token作为调用接口凭证,在浏览器输入以下地址获取:

https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET

注:此处标注大写的单词IDSECRET,为需要替换的变量,对应企业ID客户Secret

如图:

在 Postman 里通过 POST 接口回调获得标签的tag_id

# 请求方式:POST(HTTP)
# 请求地址:ACCESS_TOKEN 替换为刚才获取到的调用接口凭证信息(不要带引号)
https://qyapi.weixin.qq.com/cgi-bin/externalcontact/get_corp_tag_list?access_token=ACCESS_TOKEN

如图:

access_token和需要批量打的标签对应的tag_id找个记事本记下来,后面还会用到。

批量获取外部联系人(客户)的 userID

每个企业微信账号都有自己的客户,因此需要先找到对应账号的 ID,如图:

在 Postman 里通过 POST 接口回调获得外部联系人(客户)的userID

# 请求方式:POST(HTTPS)
# 请求地址:
https://qyapi.weixin.qq.com/cgi-bin/externalcontact/batch/get_by_user?access_token=ACCESS_TOKEN

输入请求信息:

{
   "userid_list":
   [
        "ZhangSan"
    ],
   "cursor":"",
   "limit":100
}

这里的ZhangSan填写自己的企业微信账号ID,如图:

把待会需要批量打新标签的若干个userID保存到名称为extuserid.csv的表格里,格式如下:

一行一个 userID,注意保存的文件格式要是 .csv 格式。

创建批量打标签的 Python 脚本

新建一个wxusertag.py的 Python 脚本文件,复制粘贴以下内容:

# coding=utf-8

import requests
import random
import json
import csv
import codecs
import xlrd
import os
from lxml import etree
import urllib3

# 将 ID 和 SECRET 替换成自己的企业ID和客户Secret
url1="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET"
headers={
            'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
            }

url2=""
# 填写要打标签的对应企业微信号ID
userid='ZhangSan'
def getToken(url):
    # 发送请求 有效期2个小时
    resp = requests.request("GET", url, headers=headers)
    # 设置解码方式
    resp.encoding=resp.apparent_encoding
    # 这里会用设置的解码方式解码
    # html_source = resp.text
    token = json.loads(resp.text)["access_token"]
    return token

# 获取外部联系人(客户)信息 需要及时更换 user_ID
def getextuserid():
    url3="https://qyapi.weixin.qq.com/cgi-bin/externalcontact/list?access_token="+getToken(url1)+"&userid="+userid

    resp=requests.request("GET",url3, headers=headers)
    # 设置解码方式
    resp.encoding=resp.apparent_encoding
    # 这里会用设置的解码方式解码
    #html_source = resp.text
    external_userid = json.loads(resp.text)["external_userid"]
    print(external_userid)
    return external_userid

# 获取刚才保存的 .csv 表格里的外部联系人(客户)user_ID
def getextuseridBycsv():
        with open(r'extuserid.csv') as f:
                f_csv=csv.reader(f)
                # 创建一个list用来保存csv中的内容
                buffer=[]
                headers=next(f_csv)
                for row in f_csv:
                        buffer.append(row[0])
                #print(buffer)

        f.close()
        return buffer

def addlabel():
    rows=[]
    urllib3.disable_warnings()
    #resp = requests.request("GET", url1, headers=headers)
    # 设置解码方式
    #resp.encoding=resp.apparent_encoding
    # 这里会用设置的解码方式解码
    #html_source = resp.text
    #token = json.loads(resp.text)["access_token"]

    # add_tag 的 id 获取企业标签库https://open.work.weixin.qq.com/wwopen/devtool/interface?doc_id=17298

    url="https://qyapi.weixin.qq.com/cgi-bin/externalcontact/mark_tag?access_token="+getToken(url1)

    # 通过企业微信账号 ID 来解析外部联系人的 user_ID
    #extlist=list(getextuserid())
    # 通过外部导入的外部联系人的 user_ID
    extlist=list(getextuseridBycsv())
    print(extlist)
    for i in range(0,len(extlist)):
        data = {
        "userid": userid,
        "external_userid": extlist[i],
        # 将下面的 tag_id 替换成自己要批量添加的标签信息
        "add_tag":["tag_id"],
        "remove_tag":[]  
        }
        data = json.dumps(data)
        page = 0
        response = requests.post(url = url,data=data ,headers =headers ,verify=False)
        resultcode= json.loads(response.text)["errmsg"]
        print("打标成功:"+resultcode)

if __name__=="__main__":

        #getextuseridBycsv()
        #getextuserid()
        addlabel()

以上内容根据自己的实际需要修改好后即可保存,记得将脚本 .py 文件和用户ID列表的 .csv 文件保存在同一个文件夹里。

然后打开终端,进入这个文件夹目录下,执行以下命令:

python wxusertag.py

等待终端显示打标成功:ok后,就可以通过企业微信客户端看到对应的若干用户已经添加上新标签了。

执行脚本的时候要注意:

  • 脚本执行的内容有访问频率限制,每企业调用单个 cgi/api 不可超过1万次/分,15万次/小时
  • 每个 IP 调用单个 cgi/api 不可超过2万次/分,60万次/小时,第三方应用提供商每 IP 调用单个 cgi/api 不可超过4万次/分,120万次/小时
  • 如果是家庭宽带,可以通过重启路由器来快速更换 IP

以上。

内容参考来源:https://blog.csdn.net/zhaomengszu/article/details/121478225

本作品采用 “知识共享署名-非商业性使用 4.0 国际许可协议” 进行许可。
免责声明:本站文章除特殊说明为原创禁转外,您可以自由的转载和修改,但请务必注明文章来源并不可用于商业目的。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇