Python工厂模式封装各类Webhook群聊机器人代码片段

文章介绍了如何使用Python实现飞书和钉钉的自定义机器人,用于监控报警、销售线索等消息推送。通过工厂模式封装,可以更方便地创建和管理不同平台的机器人,提高代码的可维护性和可扩展性。当需要添加新的机器人平台如企微时,只需在工厂类中添加对应处理类的映射,简化了代码修改。同时,文章提到了配置文件的使用,使得在不更改代码的情况下,能根据配置切换机器人平台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  引言

  企业存在给 特定群组 自动推送消息的需求,比如:监控报警推送、销售线索推送、运营内容推送等。 你可以在群聊中添加一个自定义机器人,通过服务端调用 webhook 地址,即可将外部系统的通知消息即时推送到群聊中。

  飞书自定义机器人

  #!/usr/bin/python3

  # -*- coding: utf-8 -*-

  # @Author: Hui

  # @Desc: { webhook机器人模块 }

  # @Date: 2023/02/19 19:48

  import hmac

  import base64

  import hashlib

  import time

  from urllib.parse import quote_plus

  import requests

  from exceptions.base import SendMsgException

  class BaseChatBot(object):

      """群聊机器人基类"""

      def __init__(self, webhook_url: str, secret: str = None):

          """

          初始化机器人

          Args:

              webhook_url: 机器人webhook地址

              secret: 安全密钥

          """

          self.webhook_url = webhook_url

          self.secret = secret

      def _get_sign(self, timestamp: str, secret: str):

          """

          获取签名(NotImplemented)

          Args:

              timestamp: 签名时使用的时间戳

              secret: 签名时使用的密钥

          Returns:

          """

          raise NotImplementedError

      def send_msg(self, content: str, timeout=10):

          """

          发送消息(NotImplemented)

          Args:

              content: 消息内容

              timeout: 发送消息请求超时时间 默认10秒

          Returns:

          """

          raise NotImplementedError

  class FeiShuChatBot(BaseChatBot):

      """飞书机器人"""

      def _get_sign(self, timestamp: str, secret: str) -> str:

          """

          获取签名

          把 timestamp + "\n" + 密钥 当做签名字符串,使用 HmacSHA256 算法计算签名,再进行 Base64 编码

          Args:

              timestamp: 签名时使用的时间戳

              secret: 签名时使用的密钥

          Returns: sign

          """

          string_to_sign = '{}\n{}'.format(timestamp, secret)

          hmac_code = hmac.new(string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest()

          # 对结果进行base64处理

          sign = base64.b64encode(hmac_code).decode('utf-8')

          return sign

      def send_msg(self, content: str, timeout=10):

          """

          发送消息

          Args:

              content: 消息内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tigerups

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值