首页 > 其他分享 >企业微信群机器人发送消息通知

企业微信群机器人发送消息通知

时间:2024-12-19 20:20:49浏览次数:3  
标签:file 微信群 bot 机器人 list 发送 msg key mentioned

开发文档

官方开发文档

文本类型

直接发送消息及通知人即可

def send_text_msg(bot_key, msg, mentioned_list=None, mentioned_mobile_list=None, at_all=False):
    '''
    向指定机器人发送文本消息
    :param bot_key: 企微机器人 key
    :param msg: 文本消息
    :param mentioned_list: 通知人
    :param mentioned_mobile_list:
    :param at_all:
    :return:
    '''
    if mentioned_list is None:
        mentioned_list = []
    if mentioned_mobile_list is None:
        mentioned_mobile_list = []
    if at_all:
        mentioned_mobile_list.append('@all')
        
    url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send'
    params = {
        'key': bot_key
    }
    data = {
        'msgtype': 'text',
        'text': {
            'content': msg,
            'mentioned_list': mentioned_list,
            'mentioned_mobile_list': mentioned_mobile_list
        }
    }
    resp = requests.post(url, params=params, json=data)
    return resp.json()

markdown类型

看了一下和文本类型没啥区别,除了 msgtype, 其他参数基本一致,完全可以复用之前的文本消息,这里对文本消息简单处理一下,以便可以发送 markdown类型 消息

# 添加一个 msg_type 表示消息类型
def send_msg(bot_key, msg_type, msg=None, mentioned_list=None, mentioned_mobile_list=None, at_all=False):
    '''
    向指定机器人发送文本消息
    :param bot_key: 企微机器人 key
    :param msg: 消息内容
    :param mentioned_list: 通知人
    :param mentioned_mobile_list:
    :param at_all:
    :return:
    '''
    if not bot_key:
        raise ValueError('bot_key must be provided')
    if msg_type not in ['text', 'markdown']:
        raise ValueError('msg_type must be text or markdown')
    if not msg:
        raise ValueError('msg must be provided')
    
    if mentioned_list is None:
        mentioned_list = []
    if mentioned_mobile_list is None:
        mentioned_mobile_list = []
    if at_all:
        mentioned_mobile_list.append('@all')

    url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send'
    params = {
        'key': bot_key
    }
    data = {
        'msgtype': msg_type,
        msg_type: {
            'content': msg,
            'mentioned_list': mentioned_list,
            'mentioned_mobile_list': mentioned_mobile_list
        }
    }
    resp = requests.post(url, params=params, json=data)
    return resp.json()

图片类型

直接获取图片字节流,然后进行base64编码和md5加密即可

def send_image_msg(bot_key, file_path):
    url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send'
    params = {
        'key': bot_key
    }
    with open(file_path, 'rb') as f:
        f_read = f.read()
        img_md5 = hashlib.md5(f_read).hexdigest()
        img_base64 = base64.b64encode(f_read).decode('utf-8')
        data = {
            "msgtype": "image",
            "image": {
                "base64": img_base64,
                "md5": img_md5
            }
        }
        resp = requests.post(url, params=params, json=data)
        return resp.json()

文件类型

文件类型需要先把文件上传到服务器上才能发送

def send_file_msg(bot_key, file_path, show_name=None):
    '''
    上传并发送文件消息
    :param bot_key: 机器人 key
    :param file_path: 文件路径
    :param show_name: 上传后在消息中的显示名称
    '''
    if not os.path.isfile(file_path):
        raise ValueError('File does not exist')
    if show_name is None:
        show_name = os.path.basename(file_path)
    wx_upload_url = f'https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media'
    wx_upload_params = {
        'key': bot_key,
        'type': 'file'
    }
    response = requests.post(
        wx_upload_url,
        params=wx_upload_params,
        files={
            'file': (show_name, open(file_path, 'rb'))
        }
        )

    upload_response = response.json()
    if upload_response['errcode'] != 0:
        return upload_response
    else:
        media_id = upload_response.get('media_id')
        url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send'
        params = {
            'key': bot_key
        }
        response = requests.post(url, params=params, json={'msgtype': 'file', 'file': {'media_id': media_id}})
        return response.json()

语音类型

语音和文件类似,简单修改下就好了,修改的方式和上面的一致

pypi 包

pip install ics-utils

调用方法极其简单

from ics_utils import WxWork

wx_work = WxWork(bot_key='')
wx_work.send_text_msg(msg='hello, world!')
wx_work.send_markdown_msg(msg='# 大标题 \n## 小标题\n* 列表项1\n* 列表项2')
wx_work.send_image_msg(file_path='image.jpg')
wx_work.send_file_msg(file_path='file.pdf', show_name='示例.pdf')

标签:file,微信群,bot,机器人,list,发送,msg,key,mentioned
From: https://www.cnblogs.com/hanyanling/p/18617370

相关文章

  • 库卡机器人KR240电源模块维修思路讲解
    一、库卡机器人KR240电源模块故障诊断故障诊断是维修过程中的关键步骤。使用库卡提供的诊断工具或软件,对库卡机器人KR240电源模块进行故障诊断。重点关注电源供应、输出电压、电流等关键参数。通过诊断结果,确定故障的具体位置和性质,为后续的库卡机器人维修工作提供明确方向。二......
  • abb机器人3d模型,abb机器人模型下载 一文全了解
    ‌ABB机器人是一种工业机器人,由ABB集团研发和生产。ABB是全球领先的机器人与机械自动化供应商之一,总部位于瑞士苏黎世。‌ABB机器人以其运动控制技术为核心,能够实现高精度的循径控制、快速的运动速度和可靠的周期时间,从而大幅度提高生产的质量、效率和可靠性。‌abb机器人主要......
  • kafka发送的消息太大报异常了RecordTooLargeException
    当Kafka发送的消息太大时,确实可能会报异常。Kafka默认的消息大小限制是1MB(即1048576字节),如果生产者尝试发送一个大于此限制的消息,Kafka将会拒绝并抛出异常,通常是RecordTooLargeExceptionmessage.max.bytes是Kafka中的Broker配置,而不是生产者配置。这个参数用于控制KafkaBroker能......
  • abb喷涂机器人保养
    ABB喷涂机器人的日常保养应该每天进行一次。具体的保养内容包括:  - 检查设备的运行状况:每天检查设备的运行状况,确保设备正常运行。  - 清洁设备表面:每天清洁设备表面,防止灰尘和污垢对设备造成损害。  - 检查喷涂效果:每天检查喷涂效果,确保喷涂质量。  - 检......
  • 自然语言处理NLP——基于电影知识图谱和大型语言模型(LLM)的KBQA问答机器人(增加自然语言
    文章目录参考可视化逻辑运行演示参考https://github.com/Xiaoheizi2023/NLP_KBQA可视化逻辑提取出实体后去neo4j搜寻实体相关的图谱,然后返回数据再进行可视化可视化工具cytoscape.js提取实体逻辑:分词后比对关键词运行数据库:Mysql(保存聊天和用户和帖子信息)neo......
  • 库卡机器人KR3R540电源模块常见故障维修解决方法
         库卡机器人KR3R540电源模块的常见故障及维修解决方法包括:      电源模块无法正常启动:应检查电源模块的电源连接是否正常,以及电源开关是否开启。如果电源连接正常,但驱动器仍然无法启动,可以尝试使用万用表检查驱动器的电源电压是否在正常范围内。如果电源......
  • node.js毕设机器人编程平台的设计与实现 论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于毕设机器人编程平台的设计与实现这一课题,在当前的国内外研究中,现有的研究主要集中在通用编程平台的开发与优化方面,对于专门针对毕业设计场景下的机......
  • ABB喷涂机器人ACU 3HNA024871-001维修
    ABB喷涂机器人ACU3HNA024871-001在以下情况下可能会出现气压异常: - 气压要求变化:如果气压要求从8巴降至6巴,这可能会导致气压异常。   - 设备故障:如果ACU设备本身出现故障,例如内部压降问题或者闭环调节系统出现问题,也可能导致气压异常。  - 维护不当:如果ACU设......
  • 发送邮件(Java)
     注册一个新浪的邮箱开启一下配置(其他邮箱也行,这里用新浪邮箱举例子):配置yml# Email配置 mail:  #配置SMTP服务器地址  host:smtp.sina.com  #发送者邮箱  username:2437xxxxx@sina.com  #配置密码,注意不是真正的密码,而是刚刚申请到......
  • harmony_flutter 实现短信发送
    harmony_flutter实现短信发送ohos端建立通import{FlutterPlugin,FlutterPluginBinding}from'@ohos/flutter_ohos/src/main/ets/embedding/engine/plugins/FlutterPlugin';import{MethodCallHandler,MethodResult}from'@ohos/flutter_ohos/src/main/e......