云服务器+python搭建群钉钉机器人自动回复消息(超详细)

一、云服务器

①可通过阿里云购买一个轻量服务器

②配置好相关软件,我这里用的是windows,下载pycharm。

二、钉钉开放平台配置

①步骤一:创建机器人用于接收网络请求(钉钉开放平台)

②步骤二:配置服务器公网ip(这里着重注意)

三、最后汇总代码

最后汇总代码具体有稍微改动,在云服务器上运行即可成功搭建钉钉自动回复机器人

# -*- coding: utf-8 -*-
# @Time    : 2023/2/15 11:25
# @Author  : Cocktail_py

import time
import hmac
import hashlib
import base64
import json
import logging
from datetime import datetime

from flask import Flask, request
from dingtalkchatbot.chatbot import DingtalkChatbot

#markdown书写
import logging
from traceback import format_exc
app = Flask(__name__)

# 机器人密钥
APP_SECRET = '你的机器人的APP_SECRET'
# 机器人URL
WEBHOOK = "你的机器人的WEBHOOK"


# 钉钉发送消息
class DingDingBot(object):
    # WebHook地址
    webhook = WEBHOOK

    def __init__(self):
        # 初始化机器人小丁DingDingBot
        self.xiaoding = DingtalkChatbot(self.webhook)
        # Text消息@所有人

    # 设置markdown编写
    def send_markdown_message(self, msg):
        cnt = 0
        while cnt < 3:
            try:
                self.xiaoding.send_markdown(title='Markdown消息', text='{}'.format(msg), is_at_all=False)
                break
            except:
                logging.error(format_exc())
            cnt += 1


def sha256_base64(timestamp=int(time.time() * 1000), app_secret=APP_SECRET):
    """
    钉钉消息头部加密
    :param timestamp: 时间戳
    :param app_secret: 钉钉机器人后台AppSecret,如:4ugAwbOkbP-w0-3KpJ6RDQqoWNeUS2************H
    :return:
    """
    app_secret_enc = app_secret.encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, app_secret)
    string_to_sign_enc = string_to_sign.encode('utf-8')
    hmac_code = hmac.new(app_secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
    sign = base64.b64encode(hmac_code).decode('utf-8')
    return sign




# 接收@机器人的消息
@app.route('/', methods=["GET","POST"])
def index():
    if request.method == "POST":
        timestamp = request.headers.get('Timestamp')
        sign = request.headers.get('Sign')
        if sha256_base64(timestamp=timestamp) == sign:
            req_data = json.loads(str(request.data, 'utf-8'))
            senderNick = req_data.get('senderNick')
            text = req_data.get('text').get('content', "").strip()
            logging.info(text)
            if text == "你好":
                DingDingBot().send_markdown_message(
                    "hi,%s,我可以帮助你带领你更快的熟悉供应链流程。可以试试@我,看板、新人培训、数据分析日报、组织介绍、" % (senderNick))
            if text == "":
                DingDingBot().send_markdown_message(
                    "hi,%s,我可以帮助你带领你更快的熟悉供应链流程。可以试试@我,看板、新人培训、数据分析日报、组织介绍" % (senderNick))
            if text == "看板":
                DingDingBot().send_markdown_message(
                    "#### ** 当前供应链看板:**\n"
                    "##### [奥莱全链路](https://fbi.alibaba-inc.com/dashboard/view/page.htm?spm=a2o1z.8190073.0.0.d7a0543fHD9PWX&id=1179110)\n"
                    "##### [奥莱-生鲜供应链看板](https://fbi.alibaba-inc.com/dashboard/view/page.htm?spm=a2o1z.8190073.0.0.d7a0543fVGSySI&id=1057367)\n"
                    "##### [上海冷藏仓临期预警报表](https://fbi.alibaba-inc.com/dashboard/view/page.htm?spm=a2o1z.8189972.0.0.538b543fCY4Esx&id=1009034)")
            if text == "新人培训":
                DingDingBot().send_markdown_message(
                    "#### ** 新人培训合集:**\n"
                    "##### [语雀新人培训](https://aliyuque.antfin.com/tgb52p/fos7la)\n"
                    "##### [特殊时间数据分析](https://aliyuque.antfin.com/tgb52p/pudm9h)\n")

                return "succeed"
            else:
                return "not found"
    else:
        return "method not found"


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

四、成果展示

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值