下方代码实现功能

1、联接Sqlserver数据库取出发送消息清单

2、根据appid,secret获取企业微信token

3、根据消息清单类型决定发送客户消息还是内部员工消息

4、更新发送标记

5、创建发送定时任务

from datetime import datetime
import time
import threading
from queue import Queue
from queue import Empty
import pymssql
from http_utils import *

class UserMsgServer(object):


    def init(self):
        self.connect = pymssql.connect('xxxxxx:6229', 'user_name', 'pass', 'HD_Common')  #建立连接
        if self.connect:
            print("连接成功!")
        self.appid = None;
        self.secret_abs = None;
        self.secret_kh = None;
        self.agentid = None;
        self.token_abs = None;
        self.token_kh = None;


    def getToken(self):
        url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={self.appid}&corpsecret={self.secret_abs}"
        result = httpGet(url)
        self.token_abs = result["access_token"]
        print(self.token_abs)
        url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={self.appid}&corpsecret={self.secret_kh}"
        result = httpGet(url)
        self.token_kh = result["access_token"]
        print(self.token_kh)
        pass


    #发送给内部员工
    def send(self, userId, conent):

        url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + self.token_abs
        print(url)
        data = {
            "touser" : userId,
            "toparty" : "",
            "totag" : "",
            "msgtype" : "text",
            "agentid" : self.agentid,
            "text" : {
                "content" : conent
            },
            "safe":0,
            "enable_id_trans": 0,
            "enable_duplicate_check": 0,
            "duplicate_check_interval": 1800
        }
        result = httpPost(url, data)
        print(result)
        return result["errcode"]
        pass

    #发送给客户
    def send1(self, userId, sender, conent):

        url = "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/add_msg_template?access_token=" + self.token_kh + "&debug=1"
        print(url)
        data = {
            "chat_type": "single",
            "external_userid": [
                userId
            ],
            "sender": sender,
            "text": {
                "content": conent
            }
        }
        result = httpPost(url, data)
        print(result)
        return result["errcode"]
        pass    

    def sendMsg(self):
        cursor = self.connect.cursor()   #创建一个游标对象,python里的sql语句都要通过cursor执行
        sql = "select IndexId,UserId,Content,UserType from W_UserMessage where state = 0 and (ISNULL(PlanFlag,0)= 0 or (ISNULL(PlanFlag,0)= 1 and PlanTime <= GETDATE()))"
        cursor.execute(sql)   #执行sql语句
        row = cursor.fetchone()  #读取查询结果,            
        index = 1    
        while row:            #循环读取所有结果
            if index == 1:
                self.getToken();  #获取token

            id = row[0]
            userId = row[1]
            content = row[2]
            userType = row[3]
            
            print("发送消息给"+ userId +",content=" + content)
            if userType == "guest":
                users = userId.split('|');
                sender = "";
                if len(users) &gt; 1:
                    userId = users[0];
                    sender =  users[1];
                    
                result = self.send1(userId, sender, content)
                self.updateMsg(id, result)

            else:    
                result = self.send(userId,content)
                self.updateMsg(id, result)
                
                           
            row = cursor.fetchone()
            index = index + 1
            time.sleep(1)
            
        
    def updateMsg(self,id, result):

        print("result")
        print(result);
        cursor = self.connect.cursor()
        if result == 0:
             cursor.execute(f"update W_UserMessage set state=1 where IndexId={id}")
        else:
             cursor.execute(f"update W_UserMessage set state=-1 where IndexId={id}")
             
        self.connect.commit()  #提交
        

    # 每n秒执行一次
    def job(self):
        while True:
            #print(datetime.now().strftime("%Y-%m-%d  %H:%M:%S"))
            try:
                self.sendMsg()
                time.sleep(3)      
            except Exception as reason:
                print(reason)
                

        
userMsgServer = UserMsgServer()
userMsgServer.init()
userMsgServer.appid = "wwe72868b229a****"
userMsgServer.secret_abs = "sGbP3HiG2e4ciZFuqyiHlAxnHvmY_Xlku8B7******"
userMsgServer.secret_kh = "Xw24GyBQCDj_IEJL7Sv1Sd1eSRGUJLo*******"
userMsgServer.agentid = 1000012
userMsgServer.job()

原文地址:https://blog.csdn.net/gdgztt/article/details/134725665

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_24356.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注