企业微信自动回复软件,企业微信自动回复机器人,python框架分享

简介: 企业微信机器人包含完整的消息处理流程,支持文本消息自动回复、事件处理、消息加密解密等功能

下载地址:https://www.pan38.com/yun/share.php?code=JCnzE 提取密码:1131
企业微信机器人包含完整的消息处理流程,支持文本消息自动回复、事件处理、消息加密解密等功能。使用时需要替换配置文件中的企业微信相关参数,并部署到服务器上。

import json
import time
import requests
from flask import Flask, request, jsonify

app = Flask(name)

class WeChatWorkRobot:
def init(self, corp_id, corp_secret, agent_id):
self.corp_id = corp_id
self.corp_secret = corp_secret
self.agent_id = agent_id
self.access_token = None
self.token_expire_time = 0

def get_access_token(self):
    if time.time() < self.token_expire_time and self.access_token:
        return self.access_token

    url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={self.corp_id}&corpsecret={self.corp_secret}"
    response = requests.get(url)
    data = response.json()

    if data.get('errcode') == 0:
        self.access_token = data['access_token']
        self.token_expire_time = time.time() + data['expires_in'] - 300
        return self.access_token
    else:
        raise Exception(f"获取access_token失败: {data}")

def send_message(self, user_id, content):
    token = self.get_access_token()
    url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}"

    payload = {
        "touser": user_id,
        "msgtype": "text",
        "agentid": self.agent_id,
        "text": {"content": content},
        "safe": 0
    }

    response = requests.post(url, json=payload)
    return response.json()

def handle_message(self, msg_data):
    msg_type = msg_data.get('MsgType')
    user_id = msg_data.get('FromUserName')

    if msg_type == 'text':
        content = msg_data.get('Content', '').strip()
        if content == '帮助':
            return self.send_message(user_id, "输入关键词获取帮助信息")
        else:
            return self.send_message(user_id, f"已收到您的消息: {content}")
    return None

robot = WeChatWorkRobot(
corp_id="YOUR_CORP_ID",
corp_secret="YOUR_CORP_SECRET",
agent_id=YOUR_AGENT_ID
)

@app.route('/callback', methods=['POST'])
def callback():
data = request.json
if data.get('Event') == 'subscribe':
user_id = data.get('FromUserName')
robot.send_message(user_id, "欢迎关注企业微信机器人")
else:
robot.handle_message(data)
return jsonify({"status": "success"})

if name == 'main':
app.run(host='0.0.0.0', port=5000)

企业微信配置
WECHAT_CONFIG = {
"corp_id": "YOUR_CORP_ID",
"corp_secret": "YOUR_CORP_SECRET",
"agent_id": 1000002,
"token": "YOUR_TOKEN",
"encoding_aes_key": "YOUR_ENCODING_AES_KEY"
}

自动回复规则

REPLY_RULES = {
"帮助": "输入以下关键词获取帮助:\n1. 天气\n2. 新闻\n3. 会议",
"天气": "今日天气晴朗,气温25-32℃",
"新闻": "最新新闻请访问公司内网",
"会议": "今日会议安排:\n10:00 部门例会\n15:00 项目评审"
}

import re
from config import REPLY_RULES

class MessageHandler:
@staticmethod
def process_text_message(content):
content = content.strip().lower()

    # 精确匹配
    if content in REPLY_RULES:
        return REPLY_RULES[content]

    # 模糊匹配
    for keyword, reply in REPLY_RULES.items():
        if keyword in content:
            return reply

    # 正则匹配
    if re.search(r'时间|几点', content):
        from datetime import datetime
        return f"当前时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"

    return "抱歉,我不理解您的请求。输入'帮助'获取支持信息。"

@staticmethod
def process_event_message(event):
    if event == 'subscribe':
        return "欢迎关注企业微信机器人!"
    elif event == 'unsubscribe':
        return ""
    return None

hashlib
import time
import random
import string
from Crypto.Cipher import AES
import base64
from config import WECHAT_CONFIG

class WeChatUtils:
@staticmethod
def verify_signature(signature, timestamp, nonce):
token = WECHAT_CONFIG['token']
tmp_list = sorted([token, timestamp, nonce])
tmp_str = ''.join(tmp_list).encode('utf-8')
hashcode = hashlib.sha1(tmp_str).hexdigest()
return hashcode == signature

@staticmethod
def decrypt_message(encrypt_msg):
    aes_key = base64.b64decode(WECHAT_CONFIG['encoding_aes_key'] + "=")
    cipher = AES.new(aes_key, AES.MODE_CBC, aes_key[:16])
    decrypted = cipher.decrypt(base64.b64decode(encrypt_msg))

    pad = ord(decrypted[-1:])
    content = decrypted[16:-pad].decode('utf-8')
    return content

@staticmethod
def encrypt_message(reply_msg):
    aes_key = base64.b64decode(WECHAT_CONFIG['encoding_aes_key'] + "=")
    cipher = AES.new(aes_key, AES.MODE_CBC, aes_key[:16])

    random_str = ''.join(random.choices(string.ascii_letters + string.digits, k=16))
    msg_len = len(reply_msg.encode('utf-8'))
    pad_len = 32 - (msg_len % 32)
    pad_char = chr(pad_len)

    plaintext = random_str + reply_msg + pad_char * pad_len
    encrypted = cipher.encrypt(plaintext.encode('utf-8'))
    return base64.b64encode(encrypted).decode('utf-8')
相关文章
|
3月前
|
机器人 数据安全/隐私保护 Python
微信自动转发机器人,微信群自动发消息机器人,微信全自动群发软件
展示一个使用Python进行基础网页自动化的示例代码,仅供学习自动化技术原理使用。
|
2月前
|
域名解析 人工智能 机器人
AppFlow:企业微信支持流式群聊机器人
企业微信近日更新,新增群聊机器人功能,支持与自定义大模型对话。通过@机器人,可实现流式输出,提升交互效率。只需简单配置,即可将AI能力集成至群聊,完成即时消息解析与业务联动。
436 1
AppFlow:企业微信支持流式群聊机器人
|
1月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
|
1月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
|
2月前
|
API 数据安全/隐私保护 Python
拼多多批量上架软件, 电商一键上货发布工具,python电商框架分享
多线程批量上传架构,支持并发处理商品数据 完整的拼多多API签名和token管理机制
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
140 1
|
7月前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
11月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
627 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
10月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
120 1
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作

热门文章

最新文章

推荐镜像

更多