企业飞书应用机器人,使用python发送图文信息到群

企业飞书应用的自动化,需要创建企业应用,应用开通机器人能力,并获取机器人所需的app_idapp_secret(这一部分大家可以在飞书的控制台获取:https://open.feishu.cn/api-explorer/

文章目录

飞书发送图文信息到群需要以下几个步骤:

  1. 使用机器人先上传图片,获取图片对应的file_key
  2. 将图片对应的file_key与文字内容构造成一个富文本(核心)
  3. 在群里发送构造好的富文本

步骤1:上传图片

比如说上传这样的一个图片叫robot.jpg

博主提供一个整理好的工具函数:

py 复制代码
def fs_upload_pic(pic_path, app_id=None, app_secret=None):
    """上传图片"""

    # 创建client
    client = lark.Client.builder().app_id(app_id).app_secret(app_secret).log_level(lark.LogLevel.DEBUG).build()
    # 构造请求对象
    request: CreateImageRequest = CreateImageRequest.builder().request_body(
        CreateImageRequestBody.builder().image_type("message").image(open(pic_path, "rb")).build()).build()
    # 发起请求
    response: CreateImageResponse = client.im.v1.image.create(request)
    # 处理失败返回
    if not response.success():
        lark.logger.error(
            f"client.im.v1.image.create failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}")
        return None
    # 处理业务结果
    return eval(lark.JSON.marshal(response.data))['image_key']

使用方法:

py 复制代码
app_id="cli_xxxx",
app_secret="xxxxx",
img_key = fs_upload_pic("robot.jpg", app_id, app_secret)
print(img_key)

成功上传后得到如下img_key

bash 复制代码
img_v3_02xxxxxxxx

步骤2:构造富文本信息

发送富文本的更多信息可以参考:https://open.feishu.cn/document/server-docs/im-v1/message-content-description/create_json

富文本的内容需要构造成字典的格式:

json 复制代码
{
    "zh_cn": {
        "title": "我是一个标题",
        "content": [
            [
                {
                    "tag": "text",
                    "text": "第一行:",
                    "style": ["bold", "underline"]
                },
                {"tag": "a", "href": "http://www.feishu.cn", "text": "超链接", "style": ["bold", "italic"]},
                {"tag": "at", "user_id": "ou_1avnmsbv3k45jnk34j5", "style": ["lineThrough"]}
            ],
        ]
    }}

发送富文本,博主这里提供一个工具函数,其中几个参数:

  1. rich_content:字典格式的富文本内容
  2. chat_id:发送的群id,在API调试台可以直接获取(https://open.feishu.cn/api-explorer/

在工具函数中,富文本会经过处理:str(rich_content).replace("'", "\""),这样处理后的字典格式数据就能直接发送了

py 复制代码
def fs_send_rich_text(rich_content: dict, chat_id, app_id=None, app_secret=None):
    """发送富文本"""
    # 创建client
    client = lark.Client.builder().app_id(app_id).app_secret(app_secret).log_level(lark.LogLevel.DEBUG).build()
    # 构造请求对象
    request: CreateMessageRequest = CreateMessageRequest.builder() \
        .receive_id_type("chat_id") \
        .request_body(CreateMessageRequestBody.builder()
                      .receive_id(chat_id)
                      .msg_type("post")
                      .content(str(rich_content).replace("'", "\""))
                      .build()) \
        .build()
    # 发起请求
    response: CreateMessageResponse = client.im.v1.message.create(request)

    # 处理失败返回
    if not response.success():
        lark.logger.error(
            f"client.im.v1.message.create failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}")
        return

    # 处理业务结果
    lark.logger.info(lark.JSON.marshal(response.data, indent=4))

使用方法:

py 复制代码
    img_key = "img_v3_02xxxxxx"
    chat_id = "oc_00xxxxxxx"
    # 构造富文本
    send_info = {
        "zh_cn": {
            "title": f"测试发送富文本信息",
            "content": [
                [
                    {
                        "tag": "text",
                        "text": "下面是图片:",
                        "style": ["bold", "underline"]
                    },
                ],
                [{"tag": "img", "image_key": img_key}],
            ]
        },
    }
    fs_send_rich_text(send_info, chat_id, app_id, app_secret)

发送后的效果如下:

相关推荐
财经资讯数据_灵砚智能3 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年4月20日
人工智能·python·信息可视化·自然语言处理·ai编程
m0_640309307 分钟前
如何用SQL统计每组的平均值同时显示原行_OVER子句
jvm·数据库·python
qq_3721542311 分钟前
Redis如何在应用启动时预热缓存数据
jvm·数据库·python
解救女汉子16 分钟前
CSS如何利用CSS变量进行渐变色管理_提升渐变配置的灵活性
jvm·数据库·python
keineahnung234529 分钟前
PyTorch 張量尺寸為 1 時,步長為何不具語意?
人工智能·pytorch·python·深度学习
m0_6784854531 分钟前
怎么导入只包含特定表的SQL文件_正则提取与分离导入
jvm·数据库·python
qq_4327036641 分钟前
MySQL中如何编写带有循环的函数_MySQL函数流程控制技巧
jvm·数据库·python
LiAo_1996_Y41 分钟前
如何保证MongoDB文档的数据质量_JSON Schema验证规则配置
jvm·数据库·python
Yu_Lijing1 小时前
Python数据分析和数据处理库Pandas(DataFrame数据分析入门)
人工智能·python·数据分析·pandas
qq_372906931 小时前
Python最短路径怎么求_Dijkstra算法与优先队列结合
jvm·数据库·python