文章目录

  • 简介
  • 安装
  • 初试
  • 消息类型
    • 文本类型
    • Markdown类型
    • 图片类型
    • 图文类型
  • 发送频率
  • 定时任务
  • 汇总
  • IP白名单
  • 转拼音
  • 参考文献

简介

本文发送信息使用Python的网络库 requests

备注:

  1. 本文为发送信息,不含接收消息
  2. 接收信息需要企业超级管理员权限在企业微信管理后台中创建应用,具体阅读:Python构建企业微信智能应答机器人(含服务器部署)

安装

pip install requests

初试

  1. 新建群。为进行测试,新建一个群,加上自己最少3人
  2. 添加群机器人。右键 → 添加群机器人
  3. 基本设置。新创建一个机器人 → 填入机器人名称 → 添加机器人

  4. 保存 Webhook 地址便于后面进行消息发送

代码,对应填入 Webhook 地址

import json
import requestsURL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9b7cd418-1c44-457f-9273-56e6fa1e08a0"  # Webhook地址def message(content):data = {"msgtype": "text","text": {"content": content}}data = json.dumps(data, ensure_ascii=False)data = data.encode(encoding="utf-8")r = requests.post(url=URL, data=data)r = json.loads(r.text)return rif __name__ == "__main__":print(message("Hello World!"))# {'errcode': 0, 'errmsg': 'ok'}

消息类型

目前企业微信群机器人支持消息类型:

  • 文本类型
  • Markdown类型
  • 图片类型
  • 图文类型

文本类型

{"msgtype": "text","text": {"content": "早上好","mentioned_list":["wangqing","@all"],"mentioned_mobile_list":["13000000000","@all"]}
}
参数 必须 说明
msgtype true 消息类型,文本类型为text
content true 文本内容,不超过2048个字节,必须是utf-8
mentioned_list false userid列表,@某人,@all为提醒所有人
mentioned_mobile_list false 手机号列表,提醒手机号对应的群成员,@all为提醒所有人

userid 根据企业决定,我司为姓名的拼音,转拼音见文末

不确定 userid 可以直接用 mentioned_mobile_list ,给电话即可

import json
import requestsURL = ""  # Webhook地址def post(url, data=None):data = json.dumps(data, ensure_ascii=False)data = data.encode(encoding="utf-8")r = requests.post(url=url, data=data)r = json.loads(r.text)return rdef text(content, mentioned_list=[], mentioned_mobile_list=[]):data = {"msgtype": "text","text": {"content": content,"mentioned_list": mentioned_list,"mentioned_mobile_list": mentioned_mobile_list}}return post(URL, data)if __name__ == "__main__":print(text("Hello World!"))print(text("Hello World!", mentioned_list=["wangqing"]))print(text("Hello World!", mentioned_mobile_list=["13000000000"]))

Markdown类型

{"msgtype": "markdown","markdown": {"content": "实时新增用户反馈<font color=\"warning\">132例</font>,请相关同事注意。\n>类型:<font color=\"comment\">用户反馈</font> \n>普通用户反馈:<font color=\"comment\">117例</font> \n>VIP用户反馈:<font color=\"comment\">15例</font>"}
}
参数 必须 说明
msgtype true 消息类型,Markdown类型为markdown
content true Markdown内容,不超过4096个字节,必须是utf-8

备注:

  1. 不可@某人
  2. 支持的Markdown语法有:标题、加粗、链接、行内代码、引用、字体颜色
import json
import requestsURL = ""  # Webhook地址def post(url, data=None):data = json.dumps(data, ensure_ascii=False)data = data.encode(encoding="utf-8")r = requests.post(url=url, data=data)r = json.loads(r.text)return rdef markdown(markdown):data = {"msgtype": "markdown","markdown": {"content": markdown}}return post(URL, data)if __name__ == "__main__":"""Markdown类型"""print(markdown("# 一级标题\n ## 二级标题"))print(markdown("**Hello World!**"))print(markdown("[百度一下,你就知道](http://www.baidu.com/)"))print(markdown("`code`"))print(markdown("> 引用文字"))print(markdown('<font color="info">绿色</font>\n <font color="comment">灰色</font>\n <font color="warning">橙红色</font>'))

图片类型

{"msgtype": "image","image": {"base64": "DATA","md5": "MD5"}
}
参数 必须 说明
msgtype true 消息类型,图片类型为image
base64 true 图片的base64编码
md5 true 图片的md5

1.jpg

import json
import base64
import hashlib
import requestsURL = ""  # Webhook地址def post(url, data=None):data = json.dumps(data, ensure_ascii=False)data = data.encode(encoding="utf-8")r = requests.post(url=url, data=data)r = json.loads(r.text)return rdef image(file):with open(file, "rb") as f:_base64 = f.read()md5 = hashlib.md5(_base64).hexdigest()_base64 = base64.b64encode(_base64).decode("utf-8")data = {"msgtype": "image","image": {"base64": _base64,"md5": md5}}return post(URL, data)if __name__ == "__main__":"""图片类型"""print(image("1.jpg"))

图文类型

{"msgtype": "news","news": {"articles" : [{"title" : "中秋节礼品领取","description" : "今年中秋节公司有豪礼相送","url" : "URL","picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"}]}
}
参数 必须 说明
msgtype true 消息类型,图文类型为news
articles true 图文消息,最多支持8条
title true 标题,不超过128个字节,超过截断
description false 描述,不超过512个字节,超过截断
url true 点击后跳转的链接
picurl false 图片链接,支持JPG、PNG,大图 1068*455,小图150*150

配合图床 或 上传图片接口(需要权限) 使用

import json
import requestsURL = ""  # Webhook地址def post(url, data=None):data = json.dumps(data, ensure_ascii=False)data = data.encode(encoding="utf-8")r = requests.post(url=url, data=data)r = json.loads(r.text)return rdef news(title, url, description=None, picurl=None):data = {"msgtype": "news","news": {"articles": [{"title": title,"description": description,"url": url,"picurl": picurl}]}}return post(URL, data)if __name__ == "__main__":"""图文类型"""print(news("百度一下,你就知道", "http://www.baidu.com/",description="百度搜索是全球最大的中文搜索引擎,2000年1月由李彦宏、徐勇两人创立于北京中关村",picurl="https://s1.ax1x.com/2020/07/08/UEL956.jpg"))

发送频率

每个机器人发送频率不超过20条/分钟

定时任务

利用 time.sleep()

import time
import json
import requestsURL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9b7cd418-1c44-457f-9273-56e6fa1e08a0"  # Webhook地址def post(url, data=None):data = json.dumps(data, ensure_ascii=False)data = data.encode(encoding="utf-8")r = requests.post(url=url, data=data)r = json.loads(r.text)return rdef text(content, mentioned_list=[], mentioned_mobile_list=[]):data = {"msgtype": "text","text": {"content": content,"mentioned_list": mentioned_list,"mentioned_mobile_list": mentioned_mobile_list}}return post(URL, data)def sleep(second=60, minute=0, hour=0, day=0):secs = second + minute * 60 + hour * 3600 + day * 86400time.sleep(secs)if __name__ == "__main__":"""定时任务"""from datetime import datetimewhile True:print(text(str(datetime.now())))sleep(10)

每10s发一次信息

汇总

import time
import json
import base64
import hashlib
import requestsURL = ""  # Webhook地址def post(url, data=None):"""发送POST请求"""data = json.dumps(data, ensure_ascii=False)data = data.encode(encoding="utf-8")r = requests.post(url=url, data=data)r = json.loads(r.text)return rdef text(content, mentioned_list=[], mentioned_mobile_list=[]):"""文本类型:param content: 文本内容:param mentioned_list: userid列表,@某人,@all为提醒所有人:param mentioned_mobile_list: 手机号列表,@某人,@all为提醒所有人"""data = {"msgtype": "text","text": {"content": content,"mentioned_list": mentioned_list,"mentioned_mobile_list": mentioned_mobile_list}}return post(URL, data)def markdown(markdown):"""Markdown类型:param markdown: Markdown内容。支持标题、加粗、链接、行内代码、引用、字体颜色"""data = {"msgtype": "markdown","markdown": {"content": markdown}}return post(URL, data)def image(file):"""图片类型:param file: 图片路径"""with open(file, "rb") as f:_base64 = f.read()md5 = hashlib.md5(_base64).hexdigest()_base64 = base64.b64encode(_base64).decode("utf-8")data = {"msgtype": "image","image": {"base64": _base64,"md5": md5}}return post(URL, data)def news(title, url, description=None, picurl=None):"""图文类型:param title: 标题:param url: 点击后跳转的链接:param description: 描述:param picurl: 图片链接"""data = {"msgtype": "news","news": {"articles": [{"title": title,"description": description,"url": url,"picurl": picurl}]}}return post(URL, data)def sleep(second=60, minute=0, hour=0, day=0):"""定时任务"""secs = second + minute * 60 + hour * 3600 + day * 86400time.sleep(secs)if __name__ == "__main__":"""文本类型"""print(text("Hello World!"))print(text("Hello World!", mentioned_list=["wangqing"]))print(text("Hello World!", mentioned_mobile_list=["13000000000"]))"""Markdown类型"""print(markdown("# 一级标题\n ## 二级标题"))print(markdown("**Hello World!**"))print(markdown("[百度一下,你就知道](http://www.baidu.com/)"))print(markdown("`code`"))print(markdown("> 引用文字"))print(markdown('<font color="info">绿色</font>\n <font color="comment">灰色</font>\n <font color="warning">橙红色</font>'))"""图片类型"""print(image("1.jpg"))"""图文类型"""print(news("百度一下,你就知道", "http://www.baidu.com/",description="百度搜索是全球最大的中文搜索引擎,2000年1月由李彦宏、徐勇两人创立于北京中关村",picurl="https://s1.ax1x.com/2020/07/08/UEL956.jpg"))"""定时任务"""from datetime import datetimewhile True:print(text(str(datetime.now())))sleep(10)

IP白名单

转拼音

安装

pip install pypinyin

函数

from itertools import chain
from pypinyin import pinyin, Styledef to_pinyin(s):return "".join(chain.from_iterable(pinyin(s, style=Style.TONE3)))

参考文献

  1. 如何配置群机器人? - 企业微信
  2. Python HTTP库——requests
  3. Python3-定时任务四种实现方式
  4. 机器人图标
  5. we-work-bot: 轻量级企业微信群聊机器人框架
  6. 企业微信【群机器人】轻松上手,企业应用App接收和回复用户消息
  7. base64数据编码 — Python文档
  8. hashlib安全哈希与消息摘要 — Python文档
  9. 路过图床 - 免费图片上传
  10. 获取会话内容 - 企业微信API

企业微信群机器人入门相关推荐

  1. python 企业微信群机器人_企业微信群机器人应用:使用python从网站抓取行业资讯并定时推送...

    在企业经营过程中,及时了解行业相关信息(市场动态.竞品策略.行业数据等等)是非常必要的.通常情况下,商品部门.营销部门.市场部门可能都会安排专门的人员定期进行这些信息的搜集.整理,再进行内部的分享. ...

  2. div区域内容抓取_企业微信群机器人应用:使用python从网站抓取行业资讯并定时推送...

    在企业经营过程中,及时了解行业相关信息(市场动态.竞品策略.行业数据等等)是非常必要的.通常情况下,商品部门.营销部门.市场部门可能都会安排专门的人员定期进行这些信息的搜集.整理,再进行内部的分享. ...

  3. 钉钉群机器人关键词自动回复_企业微信群机器人怎么用?企业微信群机器人有什么功能?...

    使用企业微信办公时,我们可以在群聊中添加群机器人,自动推送消息,回答客户提问,那么企业微信群机器人怎么添加呢? 因为企业微信内部群机器人和外部群机器人的添加方式有一点区别,下面我们分开来讲述. 内部群 ...

  4. delphi 企业微信消息机器人_GitHub - guoxianlong/insight: Insight是一个可以管理企业微信群机器人的小工具,可以非常方便的往群里发布即时消息和定时消息。...

    最科幻的企业微信群机器人管理工具 非常方便的发布群即时消息和定时消息,解放双手,提升沟通效率 部署教程 更新日志(2020.05.31) 修复设置为智能跳过工作日时,周日依然提醒问题. 前端修复定时成 ...

  5. 企业微信群机器人是什么?企微机器人如何自动发消息?

    经常有很多用户会问我们,企业微信群机器人是什么,有什么用,有什么限制?企业微信群机器人提供的是一个webhook消息,如何可以通过这个来自动发消息呢?之前写过一些关于企业微信群机器人如何发消息的教程, ...

  6. 微信群机器人(仿真企业微信群机器人)

    使用过企业微信的朋友应该应该用过企业微信群机器人,它是企业微信的原生功能,你在企业微信群中新建一个机器人,随后就可以获得这个群机器人的web挂钩,调用这个web挂钩并加上消息参数就可以让这个机器人在群 ...

  7. 工作随记-Java利用企业微信群机器人定时发送消息

    hi,大家好,我是恰恰 阅读本文需要2分钟~ 最近利用企业微信群机器人做的需求主要有 1.返奖率通知与告警:抽奖箱能抽出垃圾也能抽出大货,每隔5分钟查询一下这个返奖率,如果用户频繁抽出大货,这个抽奖箱 ...

  8. [Java实战][仅需1步]企业微信群机器人[0基础接入]

    [仅需1步]企业微信群机器人[0基础接入][java] 背景 介绍 使用 测试 项目 背景 公司需要把日常的服务器错误抛到企业微信群中,我正好记录下使用企业微信群机器人- 介绍 企业微信群机器人 应用 ...

  9. 【SCF CLI实践】腾讯云serverless + 企业微信群机器人,轻松解决告警通知问题

    市面上有什么好用的从服务器推报警和日志的工具?之前私下用的是[Server酱]的服务,非常方便. 但是考虑到安全原因,这个服务如果用在生产环境心里还是有点慌(虽然我相信Server酱是很有节操的). ...

  10. 企业微信群机器人快速接入

    新版企业微信增加了 群机器人,支持webhook协议的自定义接入,实现信息的自动同步, 比如:你可以把企业的业务数据情况通过自定义消息的方式推送到企业微信的群聊中. 代码已经封装 ,可以直接作为工具类 ...

最新文章

  1. CISCO路由器产品配置手册
  2. Linuxday01基础命令
  3. 使用Vim,让你工作效率更高
  4. Python处理各种压缩文件(bzip2,gzip,zip)
  5. SQL Server2012版完全卸载
  6. 自适应滤波器(一)LMS自适应滤波器
  7. 保持简单----纪念丹尼斯里奇(Dennis Ritchie) (zz.is2120.BG57IV3)
  8. Android中OKHttp的基本用法(Get、Post、上传文件等)
  9. Dovecot 邮件假删除、回收站功能 (使用lazy-expunge插件)
  10. Android Styler插件
  11. 在线支付(易宝支付)
  12. 基于nodejs+vue+elementui酒店民宿客房预订管理系统
  13. 解决Ubuntu 键盘输入一直大写的问题
  14. 几分钟上线一个网站,这些神器我爱了
  15. 画图工具如何裁剪图片
  16. 如何在Window7下彻底清除360注册表
  17. 今日头条在线检测文章原创度,保障创作独特性!
  18. ElasticSearch 之初步上手
  19. listFiles返回null
  20. 计算机原理期末试卷,计算机组成原理 期末试卷七及答案

热门文章

  1. 微信-支付宝---人脸识别认证
  2. 未联网环境下:离线安装Zsh和Oh My Zsh
  3. python绘制1:1对角线(1:1 line)
  4. FTP原理和修改FTP默认端口
  5. 成为合格的芯片前端设计工程师/芯片架构师
  6. linux驱动开发:mma7660 sensor的配置
  7. 一键搭建kms激活服务器
  8. 程序员常用英文名参考
  9. 移动硬盘插入提示需要格式化RAW_当正常驱动器变成RAW驱动器时怎么修复
  10. 词法分析(三):有限自动机DFA与NFA