调用微信公众平台API免费给自己发消息
2017-04-04 17:10
197 查看
素材:
注册 微信公众平台的订阅号开通开发者中心功能,注册公众平台测试账号。获取到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!" return def json_post_data_generator(content='Hi!你好!',users = None): msg_content = {} msg_content['content'] = content post_data = {} post_data['text'] = msg_content post_data['touser'] = "%s" % usersto(users) post_data['toparty'] = '' post_data['msgtype'] = 'text' post_data['agentid'] = '9' post_data['safe'] = '0' #由于字典格式不能被识别,需要转换成json然后在作post请求 #注:如果要发送的消息内容有中文的话,第三个参数一定要设为False return 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.url js = 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 js quit() return access_token,expires_in post_url_freshing = [''] def post_url(): access_token,expires_in = get_token_info() print "token expires_in:%s" % expires_in timer = 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_token post_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 = None sender(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
参考:
监控服务调用微信API如何给自己发告警信息用python给微信公众号发消息
使用微信公众平台发送报警信息(Python版)
用Python实现Zabbix微信报警
关于Zabbix3版本发送微信报警配置
报错信息:
out of response count limit hint: [0ns1wa0056ge20]:在连续或累计发送20条消息或一段时间(48H)后,对方无回复,则会出现此错误;对方回复后,即可继续发送。
相关文章推荐
- C# 调用API,实现注销远程登录本机的用户 以及 远程登录用户获得自己用户名(转+原);
- 发现Windows程序 最主要的还是要理解消息和窗口的相互调用,相互影响是如何实现的,才能更准确的去理解Windows程序,去编好自己想要的程序功能
- 微信公众平台api的Java调用
- 飞信免费消息api,飞信接口
- 用gson和httpclient调用微信公众平台API
- 程序调用飞信API发送免费短信(JAVA例子,其他语言一样用)
- 实现消息转发功能(调用非自己类方法)
- 微信公众平台消息接口开发(24)图片识别之人脸识别API
- 微信公众平台消息接口API指南
- 调用免费智能API来增加公众号活跃度的神器
- 程序调用飞信API发送免费短信(JAVA例子,其他语言一样用)
- 微信公众平台消息接口开发(24)图片识别之人脸识别API
- OpenFlight API调用之一--编译自己的程序
- java服务器端调用JPush极光推送api推送通知消息
- Win32关于GDI 的API (Win32的API函数是微软自己的东西,可以直接在C#中直接调用,在做WinForm时还是很有帮助的。有时候我们之直接调用Win32 的API,可以很高效的实现想要)
- 比较全的java API帮助文档下载,中英文的都有!需要的朋友自己下吧!免费的哦!
- C#调用API接收发送窗口消息
- 微信公众平台消息接口API指南
- 微信公众平台消息接口API指南
- 在微信上面如何显示自己公司所有产品,连锁店的地理位置,如何调用高德云图API