当前位置: 首页 > news >正文

Python发送微信模板消息

1、根据appid,secret获取token

2、查找粉丝

3、指定模板及粉丝id发送模板消息

4、链接SqlServer数据库获取消息任务

5、创建定时任务监听消息

from logging import exception
import time
import pymysql
import datetime;
from utils.http_utils import *;
from model.msg_wx_model import *;
from threading import Timerappid = "wx*****";
appsecret = "****";   
template_id = '9uWUl0evW9o5Q5KPbZaa4WxpXOsHN9V28vWPG2T**'     #模板id
token = "";#查找公众号所有的粉丝
def findUser():url = f"https://api.weixin.qq.com/cgi-bin/user/get?access_token={token}&next_openid=";result = httpGet(url,"");print(result);for row in result["data"]["openid"]:print(row);url =  "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + token + "&openid=" + row;jsonText = httpGet(url,"");print(jsonText);pass;#指定粉丝发送模板消息
def send(userId, content):list = content.split('|');first = list[0]k1=list[1];k2=list[2];k3=list[3];k4=list[4];k5=list[5];remark = list[6];jsonstr =  "{'first':{ "\f"    'value':'{first}',"\"    'color':'#173177'"\"},"\"'keyword1': {"\f"    'value':'{k1}',"\"    'color':'#173177'"\"},"\"'keyword2': {"\f"    'value':'{k2}',"\"    'color':'#173177'"\"},"\"'keyword3': {"\f"    'value':'{k3}',"\"    'color':'#173177'"\"},"\"'keyword4': {"\f"    'value':'{k4}',"\"    'color':'#173177'"\"},"\"'keyword5': {"\f"    'value':'{k5}',"\"    'color':'#173177'"\"},"\"'remark':{"\f"    'value':'{remark}',"\"    'color':'#173177'"\"}}";jsonstr = jsonstr.replace("'", "\"")body = "{" + f'"touser":"{userId}", "template_id": "{template_id}", "url":"#", "data":{jsonstr}' + "}";data = json.loads(body);url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + token;result = httpPost(url, data , "");print(result);def getToken():  print("获取token...")url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + appsecret;result = httpGet(url,"");print(result);global token;token = result["access_token"];#Timer(60*60, getToken).start()def sendMsg():now = datetime.datetime.now()ts = now.strftime('%Y-%m-%d %H:%M:%S')conn1 = pymysql.connect(host="xx.xx.xx.xx",port=3306,user="root",passwd="xxx",db="sxty_data" )cursor1 = conn1.cursor()print(ts + " 获取消息任务")sql = "select to_user,content,id from msg_wx where state = 0 "#print(sql)cursor1.execute(sql)data1 = cursor1.fetchall()#print(data1);for row in data1:userId = row[0];content = row[1];msgId = row[2];send(userId,content);msg = MsgWxModel();msg.cursor = cursor1;msg.conn = conn1;msg.id = msgId;msg.state = 1;msg.send_date = ts;msg.update();cursor1.close();conn1.close();#获取token
def job0():try:getToken();        except Exception as reason:print(reason)pass;Timer(60*60, job0).start();       #发送消息
def job1():try:sendMsg();        except Exception as reason:getToken();print(reason)Timer(5, job1).start();print("消息服务已启动...")
job0();
job1(); #findUser();

http://www.lryc.cn/news/250993.html

相关文章:

  • springboot(ssm医院门诊信息管理系统 医院管理平台Java(codeLW)
  • css所有属性介绍
  • C#语言高阶开发
  • 使用Qt Designer设计水平布局,加addStretch()不起作用,解决办法?
  • 数据结构:带头双向循环链表的实现
  • 最小生成树(Minimum Spanning Tree)及生成MST的几种方法
  • 逻辑漏洞 暴力破解(DVWA靶场)与验证码安全 (pikachu靶场) 全网最详解包含代码审计
  • io基础入门
  • k8s ingress 无法找到端点
  • properties转yml
  • 谈谈中间件设计的思路
  • WT2605-24SS音频蓝牙录放语音芯片:标准蓝牙功能与多样化存储播放方式助力音频体验升级
  • openssl生成ssl证书
  • 以太网PHY,MAC接口
  • c语言中 , x++ 和 ++x的区别
  • DBeaver 社区版(免费版)下载、安装、解决驱动更新出错问题
  • 景联文科技加入中国人工智能产业联盟(AIIA)数据委员会
  • 数据结构 / 结构体指针
  • P1 什么是链表 C语言简单易懂
  • Python实现FA萤火虫优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战
  • Spring Task
  • HttpServletRequest/Response视频笔记
  • 网上选课系统源码(Java)
  • mac修改默认shell为bash
  • 基于Java SSM小区物业管理系统
  • 计算机网络408
  • 【android开发-01】android中toast的用法介绍
  • 打印元素绘制协议Java实现
  • js 处理编译器html 包含img的标签并设置width
  • 同旺科技 分布式数字温度传感器 -- OPC Servers测试