素材:

  • 注册 微信公众平台的订阅号
  • 开通开发者中心功能,注册公众平台测试账号。获取到appID和appsecret

摘要:

  • 使用Python 2.7
  • 基于 微信‘公众平台测试账号’的appID和appsecret实现自动刷新 access_token,和(根据接收列表)发送消息的功能

代码:

# -*- coding: utf-8 -*-
"""
Created on Mon Apr 03 21:24:18 2017@author: Selay
"""import requests
import json
import threading# 字典allusers用于存储 由 索引名和openID构成的键值对
# 微信关注‘测试号’时,会生成openID用于与对应微信账号通讯
# 索引名 是为了便于自己识别和管理而对openID起的别名
allusers = {'大大':'eXIuShYFO7tghjb_4YWA'}def usersto(users = None):if users == None:return allusers['大大']elif users == "All":return ','.join(set(allusers.values()))else:if isinstance(users,list):usersinfo = []for user in users:usersinfo.append(allusers[user])return ','.join(set(usersinfo))else:print "'users' must be a list!"returndef json_post_data_generator(content='Hi!你好!',users = None):msg_content = {}msg_content['content'] = contentpost_data = {}post_data['text'] = msg_contentpost_data['touser'] = "%s" % usersto(users)post_data['toparty'] = ''post_data['msgtype'] = 'text'post_data['agentid'] = '9'post_data['safe'] = '0'#由于字典格式不能被识别,需要转换成json然后在作post请求#注:如果要发送的消息内容有中文的话,第三个参数一定要设为Falsereturn json.dumps(post_data,False,False)# 需将此处的APPID,APPSECRET换为自己‘测试号管理’页面内显示的内容
def appInfos():APPID = "****************"APPSECRET = "******************"return (APPID,APPSECRET)def get_token_info():APPInfo = appInfos()r = requests.get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s" % APPInfo)#print "Accessing %s" %r.urljs =  r.json()if "errcode" not in js:access_token = js["access_token"]expires_in = js["expires_in"]else:print "Can not get the access_token"print jsquit()return access_token,expires_inpost_url_freshing = ['']def post_url():access_token,expires_in = get_token_info()print "token expires_in:%s" % expires_intimer = threading.Timer((expires_in-200),post_url)timer.start()post_url_freshing[0] = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s' %access_tokenpost_url()def sender(text_str,user_lis = None):posturl = post_url_freshing[0]post_data = json_post_data_generator(content=text_str,users = user_lis)r = requests.post(posturl,data=post_data)result = r.json()if result["errcode"] == 0:print "Sent successfully"else:print result["errmsg"]if __name__ == "__main__":text_str = "你好"user_lis = Nonesender(text_str,user_lis)

附加信息:

  • 微信公众号有多种,订阅号易申请,使用限制不多。申请地址https://mp.weixin.qq.com/ (自行百度 ‘申请微信订阅号’)
  • 公众平台测试帐号:无需申请公众帐号、可在测试帐号中体验并测试微信公众平台所有高级接口。
  • access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 (因此,access_token需要在2小时内刷新)
  • 微信公众平台开发者文档:https://mp.weixin.qq.com/wiki/home/index.html

参考:

  1. 监控服务调用微信API如何给自己发告警信息
  2. 用python给微信公众号发消息
  3. 使用微信公众平台发送报警信息(Python版)
  4. 用Python实现Zabbix微信报警
  5. 关于Zabbix3版本发送微信报警配置

报错信息:

  1. out of response count limit hint: [0ns1wa0056ge20]:
    在连续或累计发送20条消息或一段时间(48H)后,对方无回复,则会出现此错误;对方回复后,即可继续发送。

调用微信公众平台API免费给自己发消息相关推荐

  1. 使用gson和httpclient呼叫微信公众平台API

    吐槽:微信api很无语.有一部分xml.有一部分json. 最近看如何调用微信公众平台json有关api更方便.终于找到了httpcliect和gson对. 假设你有一个更好的办法,请告诉我. 了解如 ...

  2. 【转】微信公众平台API

    <?php /*** 微信公众平台API* * @author maojianlw@139.com* @link http://www.eaglephp.com*/ class WeixinCh ...

  3. 第三方网站不能调用微信公众平台里的图片了 显示此图片来自微信公众号平台未经允许不可引用...

    下午ytkah在自己小博客搜索时看到有几篇文章图片显示不了,再访问一些网站时发现有些图片无法显示出来,显示"此图片来自微信公众号平台未经允许不可引用",如下图所示,这个应该是最近微 ...

  4. python 微信公众号网页接口调用_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  5. 解决调用微信公众平台-获取草稿列表响应中文乱码问题

    一.问题背景 在对接微信公众平台过程中,需要调用"获取草稿列表"的接口,其官网地址如下:https://developers.weixin.qq.com/doc/offiaccou ...

  6. 神卓互联内网穿透微信公众平台 API 实现微信登录

    神卓互联是一家专注于内网穿透和互联网软件开发的公司,其提供的内网穿透服务和微信开发能够满足众多企业和个人的需求.本文将介绍神卓互联的内网传统微信开发服务. 在内网中使用微信开发具有一定的困难,因为微信 ...

  7. python连接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  8. python微信api_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  9. python链接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

最新文章

  1. keil5函数 默认返回值_C++的返回值return
  2. [待总结]高频率vim命令
  3. mysql中事务的启动方式
  4. 测开之路二十:比较v1和v2
  5. zookeeper集群配置与配置文件详解
  6. 边缘计算在天猫精灵云应用上的落地实践
  7. 查看ie保存的表单_解决浏览器保存密码自动填充问题
  8. RocketMQ 实战-SpringBoot整合RocketMQ同步消息、异步消息、单向消息
  9. 毫米波雷达探测应用,智能人体感应雷达,家居雷达方案新体验
  10. word单独编辑或者删除某一页的页眉
  11. Ubuntu 20.04换阿里源
  12. GT传奇3服务器架设全攻略~!(新手篇)(转)
  13. 页面加载缓冲的login
  14. WebRTC技术详解
  15. 本地idea连接Linux上Redis出现RedisConnectionException: Unable to connect to xxx.xxx.xxx.xxx:6379的问题
  16. 唯样商城:电路板上的字母都代表什么意思?
  17. 众包置信度:改进众包数据标记的贝叶斯推断
  18. 计算机是如何执行程序的
  19. 2021 广东省程序设计竞赛(GDCPC)
  20. 大姨妈在运营方面积累的一些经验(3点)

热门文章

  1. Python爬虫+BI分析,做一份酷炫的A股牛市可视化!
  2. uniapp 苹果支付注意事项(前端)
  3. 建议收藏 | H.265编码原理入门
  4. 已知总图的边和子图顶点,判断子图连通性
  5. Java并发知识点快速复习手册(下)
  6. Ubuntu20.04配置好文
  7. 题解 P4766 【[CERC2014]Outer space invaders】
  8. 2022-2028中国干墙砂光机市场现状研究分析与发展前景预测报告
  9. HighNewTech:展望未来之十大颠覆技术
  10. 大华服务器没进系统,交换机与大华服务器链路聚合出问题