反馈已提交

网络繁忙

使用企业微信群机器人推送图片、图文、文件

  • 文档创建者:Wendy123456
  • 历史版本:3
  • 最近更新:Wendy123456 于 2026-03-09
  • 1. 概述

    1.1 应用场景

    用户上游节点获取到的图片、文件等信息,希望可以推送到企业微信群中。但目前的 消息通知 节点不支持企微群机器人推送附件。

    1.2 预期效果

    1)企业微信群机器人推送图片:

    1773024391745223.png

    2)企业微信群机器人推送图文:

    1773024416833050.png

    3)企业微信群机器人推送文件:

    1773024442489646.png

    1.3 任务展示

    FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「使用企业微信群机器人推送图文」

    注:该工程中只有推送图文的定时任务示例,推送图片和文件的定时任务暂无法提供。

    2. 推送图片

    2.1 实现思路

    根据 消息推送配置说明 文档,推送图片需要的 JSON 为:

    注:企微接口要求:图片(base64编码前)最大不能超过2M,支持JPG,PNG格式

    {
        "msgtype": "image",   ----这里是固定写死的
        "image": {
            "base64": "DATA",   ----这里放的是图片内容的base64编码
            "md5": "MD5"         ----这里是图片内容(base64编码前)的md5值
        }
    }

    1)使用「Python算子」来处理图片信息,获取图片编码前后的数据(该步骤针对:已知的图片是JPG、PNG格式的,如果用户可以直接获取到图片 base64 编码前后的信息,Pyhton 解析的步骤可替换或省略)。

    2)使用「JSON生成」算子拼接信息。

    3)调用企业微信群机器人,推送图片。

    2.2 准备工作

    1)方案中需要调用「Python算子」,需要提前准备 Python 环境,详情请参见:Python 算子

    2)Python 代码中使用到以下资源,需要确保 Python 环境已安装这些资源:

    1772783874947758.png

    3)准备好要推送的图片地址,详情请参见:消息推送配置说明

    本文示例中,图片放在 FDL 服务器的 /opt 路径下。

    2.3 使用 Python 算子处理图片信息

    1)新建定时任务,拖入「数据转换节点,进入「数据转换」节点。

    2)拖入 Python 算子,将图片信息编码。如下图所示:

    注:本文示例,图片放在 FDL 服务器上,路径为:/opt/6.png,用户根据实际情况替换。

    注:图片可存放在文件服务器、共享文件夹、远程服务器中,但需要调整 Python 语句,用户需自行调整。

    import base64
    import hashlib
    import pandas as pd
    from tabulate import tabulate

    def read_image_and_encode(img_path):
        # 打开图片文件并读取内容
        with open(img_path, "rb") as f:
            img_data = f.read()
        
        # 计算图片内容的MD5值
        md5_value = hashlib.md5(img_data).hexdigest()
        
        # 将图片内容转换为base64编码
        base64_content = base64.b64encode(img_data).decode("utf-8")
        
        return md5_value, base64_content

    # 自定义输出函数
    def output(data):
        # 使用tabulate格式化输出DataFrame
        print(tabulate(data, headers="keys", tablefmt="grid"))

    # 示例调用
    img_path ="/opt/6.png"  # 替换为你的图片路径
    md5_value, base64_content = read_image_and_encode(img_path)

    # 创建一个DataFrame
    data = {
        "MD5 Value": [md5_value],
        "Base64 Content": [base64_content]
    }
    df = pd.DataFrame(data)

    # 调用自定义的output函数
    output = (df)  # 确保调用output函数并传递df

    1772785410808605.png

    3)点击「数据预览,处理后的数据如下图所示:

    1772786166570657.png

    2.4 使用 JSON 生成算子拼接图片信息

    1)拖入「JSON生成算子,拼接图片信息,为调用企业微信群机器人接口做准备。

    8.png

    2)点击「数据预览,效果如下图所示:

    10.png

    2.5 推送图片

    拖入「API输出」算子,调用企业微信群机器人,API 填写企业微信群消息通知 webhook 地址。

    12.png

    2.6 效果查看

    定时任务运行成功后,企业微信群可看到推送的图片。如下图所示:

    1772786809693040.png

    3. 推送图文

    3.1 实现思路

    根据 消息推送配置说明 文档,推送图文需要的 JSON 为:

    注:下方参数的说明和限制请参见:消息推送配置说明

    1772787291797795.png

    注意点:

    picurl 必须是公网可访问的 https 地址,它不会像「图片消息(image)」那样支持把本地文件转成 base64 后上传,如果需要上传本地图片,可以把本地图片上传到一个可外链的图床(例如腾讯云 COS、阿里云 OSS、GitHub、Imgur 、路过图床等),拿到 https 直链,再填到 picurl。

    实现思路说明:

    图片URL点击图片要跳转到的地址URL进行处理,再调用接口实现推送效果。

    3.2 数据准备

    1)新建定时任务,拖入「数据转换节点,进入「数据转换」节点。

    2)拖入 Spark SQL 算子,处理链接。如下图所示:

    注:用户根据实际情况替换 SQL 语句中的链接。

    select 'https://help.fanruan.com/finedatalink/' as article_url,'https://i.postimg.cc/hGctStjF/mm.jpg' as pic_url

    16.png

    点击「数据预览,效果如下图所示:

    1772787707816700.png

    3)拖入 JSON 生成算子,生成调用接口所需数据。

    注:用户根据实际情况填写 title、description 参数的值。

    1772787869420662.png

    点击「数据预览,效果如下图所示:

    19.png

    3.3 推送图文

    拖入「API输出」算子,调用企业微信群机器人,API 填写企业微信群消息通知 webhook 地址。

    1772788039972995.png

    3.4 效果查看

    定时任务运行成功后,企业微信群可看到推送的图片。如下图所示:

    1772788901207745.png

    4. 推送文件

    4.1 实现思路

    需要先把附件上传到企微服务器,获取文件 id 之后然后再发送media_id 是文件 id,需要通过文件上传接口获取。素材上传得到 media_id,该 media_id 仅三天内有效,media_id 只能是对应上传文件的机器人可以使用。

    附件上传到企微服务器调用接口说明:

    请求方式:POST(HTTPS)
    请求地址:https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=KEY&type=TYPE

    参数
    说明
    key
    用接口凭证, 企业微信群机器人 webhook url 中的 key 参数
    type件类型,分别有语音(voice)和普通文件(file)

    使用multipart/form-data POST上传文件或语音, 文件标识名为"media"    ---企业微信文件上传接口不支持直接通过 JSON 或 XML 格式的 body 来传输文件内容。文件上传需要使用 multipart/form-data 格式来发送请求,所以还需要用到 Python。

    调用企微机器人推送文件接口说明:

    根据 消息推送配置说明 文档,推送文件需要的 JSON 为:

    1773022555101204.png

    实现思路说明:

    1)使用「Python算子」来获取 media_id。

    2)使用「JSON生成」算子拼接信息。

    3)调用企业微信群机器人,推送文件。

    4.2 准备工作

    方案中需要调用「Python算子」,需要提前准备 Python 环境,详情请参见:Python 算子

    4.3 使用 Python 算子获取 media_id

    1)新建定时任务,拖入「数据转换」节点,进入「数据转换」节点。

    2)拖入 Python 算子,获取media_id。如下图所示:

    注:upload_media_url 为附件上传到企微服务器接口,具体说明请参见本文 4.1 节内容,需要根据实际情况填写;file_path 为待发送的附件位置,本文示例是放在 FineDataLink 工程所在服务器上,需根据实际情况填写。

    import requests

    # 文件上传接口地址
    upload_media_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=968dae75-732f-8ccd-b34d-f98537aaff4b&type=file"
    # 文件路径
    file_path = "/opt/user.xls"

    def upload_file_to_wecom(file_path, upload_url):
       """
       上传文件到企业微信并返回media_id
       :param file_path: 本地文件路径
       :param upload_url: 上传接口URL
       :return: media_id (成功时) 或 None (失败时)
       """
       try:
           with open(file_path, 'rb') as file:
               files = {'media': file}
               response = requests.post(upload_url, files=files)
               response.raise_for_status()
               return response.json().get('media_id')
       except:
           return None

    # 调用上传函数并打印media_id
    output = (upload_file_to_wecom(file_path, upload_media_url))

    3.png

    3)点击「数据预览」,处理后的数据如下图所示:

    1773023983462381.png

    4.4 拼接 JSON

    1)拖入「JSON生成」算子,拼接 JSON 信息,为调用企业微信群机器人接口做准备。

    7.png

    2)点击「数据预览,效果如下图所示:

    8.png

    4.5 推送文件

    拖入「API输出」算子,调用企业微信群机器人,API 填写企业微信群消息通知 webhook 地址。

    9.png

    4.6 效果查看

    定时任务运行成功后,企业微信群可看到推送的文件。如下图所示:

    1773024321559015.png






    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持