【Python】飞书机器人消息推送(钉钉同理)requests

前文

        使用python request库向飞书群聊机器人推送消息,代码推送纯文本消息,富文本消息需要按官方要求格式编辑request data数据

飞书开发者社区icon-default.png?t=N7T8https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot

飞书群聊机器人设置

1.群聊机器人:群里添加机器人后获取webhook

        自定义关键词:推送消息中包含关键词才接收,不包含关键词不会接收;

        IP白名单:在白名单内的IP地址推送的消息才会接收;

        签名校验:使用密钥进行签名

2.指令机器人:创建指令流程 -> 选择webhook触发器(获取webhook) -> 选择触发指令(自定义)

 使用指令机器人就是将data通过webhokk推送,机器人接收到data(json格式)后触发指令,指令中可引用data中参数

推送消息代码

# -*- coding: UTF-8 -*-
"""
__Project__:
__IDE__: PyCharm 
__Author__: Achen, email to ***
__CreateDate__: 2024/5/11 13:21
__Desc__:通过飞书机器人推送消息
"""

import json
import time
import requests
import hmac
import hashlib
import base64
from typing import Optional, Union


class FeiShuMSG:
    def __init__(self, token: str, text: Union[str, dict], secret: Optional[str] = None):
        self.token = token
        self.secret = secret  # 默认None,所以没有签名时无需传参
        self.text = text
        self.msg = self.prepare_message()

    def send_msg_info(self):
        """
        main
        """
        if self.token == "":
            raise ValueError("token is none")
        if self.secret is not None:
            self.gen_sign()

        self.send_msg()

    def gen_sign(self):
        """
        签名加密
        """
        t_stamp = str(round(time.time()))
        sign_s = f'{t_stamp}\n{self.secret}'
        hmac_sign = hmac.new(sign_s.encode("utf-8"), digestmod=hashlib.sha256).digest()
        sign_bs = base64.b64encode(hmac_sign).decode('utf-8')
        self.msg["timestamp"] = t_stamp
        self.msg["sign"] = sign_bs

    def prepare_message(self):
        """
        处理消息类型
        """
        if isinstance(self.text, str):
            # 纯文本
            return {
                "msg_type": "text",
                "content": {
                    "text": self.text
                }
            }
        elif isinstance(self.text, dict):
            # TODO:富文本消息格式化 飞书baseline:https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot
            return self.text
        else:
            raise ValueError("text must is str or dict")

    def send_msg(self):
        """
        send post request
        """
        headers = {
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
            'Content-Type': 'application/json'
        }
        self.msg = json.dumps(self.msg)
        self.msg = bytes(self.msg, "utf8")
        try:
            requests.post(self.token, data=self.msg, headers=headers)
        except requests.RequestException as e:
            raise e


if __name__ == '__main__':
    webhook = f'https://open.feishu.cn/open-apis/bot/v2/hook/********************' 
    secrets = f"ZRHiGlHCp3W******"  # 签名密钥 没有无需传参
    message_text = "test"  # 推送消息,纯文本为字符串,富文本格式见飞书开发者社区

    feishu = FeiShuMSG(token=webhook, secret=secrets, text=message_text)
    # feishu = FeiShuMSG(token=webhook, text=message_text)
    feishu.send_msg_info()

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Python 飞书消息推送,你可以使用飞书开放平台提供的 API 来实现。下面是一个简单的示例: 首先,你需要在飞书开放平台创建一个应用并获取到相应的 App ID 和 App Secret。 然后,你可以使用 Pythonrequests 库来发送 HTTP 请求,调用飞书开放平台的 API。 ```python import requests def send_feishu_message(app_id, app_secret, user_id, message): # 获取 access_token token_url = f"https://open.feishu.cn/open-apis/auth/v3/app_access_token" token_payload = { "app_id": app_id, "app_secret": app_secret } token_response = requests.post(token_url, json=token_payload) access_token = token_response.json()["app_access_token"] # 发送消息 message_url = f"https://open.feishu.cn/open-apis/message/v4/send/" message_payload = { "msg_type": "text", "content": { "text": message }, "user_id": user_id } headers = { "Authorization": f"Bearer {access_token}" } message_response = requests.post(message_url, json=message_payload, headers=headers) return message_response.status_code == 200 # 使用示例 app_id = "your_app_id" app_secret = "your_app_secret" user_id = "user_id_to_receive_message" message = "Hello, World!" send_feishu_message(app_id, app_secret, user_id, message) ``` 在上述示例中,`send_feishu_message` 函数接受应用的 App ID、App Secret、接收消息的用户 ID 和要发送消息作为参数。函数内部通过调用飞书开放平台的 API 获取 access_token,并使用 access_token 发送消息。 需要注意的是,该示例只是一个简单的推送文本消息的例子。如果你需要发送其他类型的消息,可以参考飞书开放平台的文档,调用相应的 API 进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值