写点什么

远程办公期间,项目小组微信群打卡 | 社区征文

作者:IT蜗壳-Tango
  • 2022 年 6 月 30 日
  • 本文字数:1588 字

    阅读完需:约 5 分钟

在居家办公期间,我们没有办法到公司时间打卡签到(虽然很多公司已经取消了打卡要求)。那么,在各自的业务小组的沟通群(企业微信群),如何更好的管理大家签到的情况呢?

今天和我一起简单的看一下,如何利用 Python 和企业微信的 API 来实现一个简易机器人,能接收消息并作出回复。


项目准备

  1. VSCode:用来写代码

  2. Python: 主要的开发语言

  3. 一个企业微信:需要有管理员权限

  4. 服务器:如果只是学习的话,就不需要了。

1、2、4 这里就不再赘述了,关于企业微信的准备,我这里和大家简单的介绍一下。

1. 登录企业微信

获取 corpid,即我们的企业 ID。

2. 创建应用

有小伙伴可能已经看到了基础应用里面有一个打卡的应用,那我们为什么还要自己创建一个呢?

主要是我们需要定制一些内容,比如签到积分,签到任务等。这样自己动手写的代码,管理起来更方便一些。

3. 获取 AgentId 和 Secret

Secret 不要泄露给任何人。

3. 安装 Python 的 requests 库

pip install requests
复制代码


一段简单的示例代码,

import jsonimport urllib.parse
import requests
corpid = 'xxxxxxxx' # 企业IDcorpsecret = 'xxxxxxx' # 应用Secrettouser = 'xxxxxxxx' # 接收消息的用户agentid = 1000003 # 应用ID
base = 'https://qyapi.weixin.qq.com'
# 1.请求access_tokenaccess_token_api = urllib.parse.urljoin(base, '/cgi-bin/gettoken')params = {'corpid': corpid, 'corpsecret': corpsecret}response = requests.get(url=access_token_api, params=params).json()access_token = response['access_token']print(access_token)# 2.发送消息message_send_api = urllib.parse.urljoin(base, f'/cgi-bin/message/send?access_token={access_token}')data = {'touser': touser, 'msgtype': 'text', 'agentid': agentid, 'text': { 'content': '你好,我是机器人。' } }response = requests.post(url=message_send_api, data=json.dumps(data)).json()print(response['errcode'])if response['errcode'] == 0: print('发送成功')
复制代码

如果看到 response['errcode']的返回值是:60020, 那么需要将你的公网 IP 地址添加到企业微信的白名单中。

调试的时候,可以使用在线本地IP地址查看工具 - UU在线工具 (uutool.cn)这个网址来获取本地的 IP 地址。


如果我需要将消息发给某个部门下的所有人员,则需要将 touser 的编号改成部门的编号。并将代码中的

data = {'touser': touser,        'msgtype': 'text',         'agentid': agentid,         'text': {          'content': '你好,我是机器人。'        }       }
复制代码

修改为

data = {'toparty': touser,        'msgtype': 'text',         'agentid': agentid,         'text': {          'content': '你好,我是机器人。'        }       }
复制代码


修改后的代码

import jsonimport urllib.parse
import requests
corpid = 'xxxxx' # 企业IDcorpsecret = 'xxxx' # 应用Secrettouser = '2' # 接收消息的用户组agentid = 1000003 # 应用ID
base = 'https://qyapi.weixin.qq.com'
# 1.请求access_tokenaccess_token_api = urllib.parse.urljoin(base, '/cgi-bin/gettoken')params = {'corpid': corpid, 'corpsecret': corpsecret}response = requests.get(url=access_token_api, params=params).json()access_token = response['access_token']# 2.发送消息message_send_api = urllib.parse.urljoin(base, f'/cgi-bin/message/send?access_token={access_token}')data = {'toparty': touser, 'msgtype': 'text', 'agentid': agentid, 'text': {'content': '你好,我是机器人。'}}response = requests.post(url=message_send_api, data=json.dumps(data)).json()print(response['errcode'])if response['errcode'] == 0: print('发送成功')
复制代码


用户头像

一个日语专业的程序猿。 2017.09.10 加入

【坐标】无锡 【软件技能】Java,C#,Python 【爱好】炉石传说 【称号】InfoQ年度人气作者,Intel OpenVINO领航者联盟成员 【B站】https://space.bilibili.com/397260706/ 【个人站】www.it-worker.club

评论

发布
暂无评论
远程办公期间,项目小组微信群打卡 | 社区征文_6月月更_IT蜗壳-Tango_InfoQ写作社区