模板消息接口

'''
使用规则
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用25个模板。
5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。
''' import werobot
import requests,json
robot = werobot.WeRoBot(token='tteexx')
robot.config['APP_SECRET'] = 'fee02e53beed0e49f2c597adcca8cf56'
robot.config['APP_ID'] = 'wx94efe9defbf49573'
client = robot.client
ACCESS_TOKEN = "17_v7LVKYFlHSH5CperVCJQ2TeuzzT_F6oIBVYphwmKyADa3xnjp_GeAX6wxCwpjOMcZvIpzwE1EzNcchtIQh7AHB0W76c7jM2VtQOsBsq9wwbecIF2ARzvIMx0Ng6sbv1sFh5lSycwoTNyCPYbPGFhADACTS" #————————刷新ACCESS_TOKEN——————————
#判断ACCESS_TOKEN 是不是 42001 ,是说明过期,需要刷新
def access(url,ACCESS_TOKEN):
url = url + ACCESS_TOKEN
req = requests.get(url).text
a = eval(req).get('errcode')
# print(a)
if a == "":
ACCESS_TOKEN = client.get_access_token()
return ACCESS_TOKEN
access(url="https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=",ACCESS_TOKEN=ACCESS_TOKEN)
print(ACCESS_TOKEN) #———————设置所属行业——————————————————
#assess_token 注意时效 ,行业的参数代码,必选2个行业 url = "https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token="+ str(ACCESS_TOKEN)
data = {
"industry_id1": "",
"industry_id2": ""
}
data_json = json.dumps(data)
req = requests.post(url,data_json).text
print(req) #————————获取设置的行业信息——————————————
#注意assess_token 注意时效 url = "https://api.weixin.qq.com/cgi-bin/template/get_industry?access_token=" + str(ACCESS_TOKEN)
req =requests.get(url).text
print(req) #————————获取行业模板ID——————————————
#template_id_short:模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式 url = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=" + str(ACCESS_TOKEN)
data ={"template_id_short":"TM00015"}
req =requests.post(url,data).text
print(req) #————————获取行业模板列表—————————————— url = "https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=" + str(ACCESS_TOKEN)
req =requests.get(url).text
print(req) #————————删除模板——————————————
#template_id 公众帐号下模板消息ID url = "https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token=" + str(ACCESS_TOKEN)
data ={"template_id" : "Dyvp3-Ff0cnail_CDSzk1fIc6-9lOkxsQE7exTJbwUE"}
req =requests.post(url,data).text
print(req) #————————发送模板消息——————————————
'''
touser 是 接收者openid
template_id 是 模板ID
url 否 模板跳转链接(海外帐号没有跳转能力)
miniprogram 否 跳小程序所需数据,不需跳小程序可不用传该数据
appid 是 所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏)
pagepath 否 所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),暂不支持小游戏
data 是 模板数据
color 否 模板内容字体颜色,不填默认为黑色
'''
url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + str(ACCESS_TOKEN)
data = {
{
"touser": "OPENID",
"template_id": "ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url": "http://weixin.qq.com/download",
"miniprogram": {
"appid": "xiaochengxuappid12345",
"pagepath": "index?foo=bar"
},
"data": {
"first": {
"value": "恭喜你购买成功!",
"color": "#173177"
},
"keyword1": {
"value": "巧克力",
"color": "#173177"
},
"keyword2": {
"value": "39.8元",
"color": "#173177"
},
"keyword3": {
"value": "2014年9月22日",
"color": "#173177"
},
"remark": {
"value": "欢迎再次购买!",
"color": "#173177"
}
}
}
}
req =requests.post(url,data).text
print(req)

自定义菜单栏

 #自定义菜单栏
from werobot import WeRoBot
import requests
#定义app_id,app_secret
robot = WeRoBot(token='tteexx',app_id='wx94efe9defbf49573',app_secret= 'fee02e53beed0e49f2c597adcca8cf56')
#继承client的方法
client = robot.client
#获取acceaccess token
acceaccess_token = client.grant_token()
#刷新acceaccess token
acceaccess_token = client.get_access_token()
#自定义菜单地址
url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token=' + str(acceaccess_token)
#自定义菜单目录
menu = {
"button":[
{
"type": "view",
"name": "百度",
"url": "http://www.baidu.com",
},
{
"name": "腾讯",
"sub_button": [
{
"type": "view",
"name": "腾讯主页",
"url": "http://www.tencent.com"
},
{
"type": "view",
"name": "腾讯招聘",
"url" : "https://join.qq.com/"
},
{
"type": "view",
"name": "腾讯网",
"url": "https://www.qq.com/"
},
{
"type": "view",
"name": "腾讯视频",
"url": "https://v.qq.com/"
}
]
},
{
"name": "博客园",
"sub_button": [
{
"type": "view",
"name": "我的博客",
"url": "https://www.cnblogs.com/cy708/"
},
{
"type": "view",
"name": "博客园主页",
"url": "https://www.cnblogs.com/"
}
]
}
]
}
#创建自定义菜单
bacg = client.create_menu(menu_data=menu)
#提交数据
response = requests.post(url,bacg)

 注:1、40164报错:未将IP地址添加到白名单中,将提示的IP加入IP地址白名单中

   2、48001报错:非授权的账户不可使用自定义菜单栏

Python——WeRobot(微信公众号开发)的更多相关文章

  1. python之微信公众号开发(基本配置和校验)

    前言 最近有微信公众号开发的业务,以前没有用python做过微信公众号开发,记录一下自己的学习和开发历程,共勉! 公众号类型 订阅号 普通订阅号 认证订阅号 服务号 普通服务号 认证服务号 服务方式 ...

  2. 细数Python Flask微信公众号开发中遇到的那些坑

    最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到 ...

  3. Python webpy微信公众号开发之 回复图文消息

    新建图文回复模板reply_pictext.xml: $def with (toUser,fromUser,createTime,title1,description1,picurl1,url1)&l ...

  4. 微信公众号开发被动回复用户消息,回复内容Content使用了"\n"换行符还是没有换行

    使用语言和框架:本人后端开发使用的Python的DRF(Django REST framework)框架 需求:在微信公众号开发时,需要实现自动回复,即被关注回复.收到消息回复.关键词回复 发现问题: ...

  5. 微信公众号开发(一)--验证服务器地址的Java实现

    现在主流上都用php写微信公众号后台,其实作为后端语言之一的java也可以实现. 这篇文章将对验证服务器地址这一步做出实现. 参考资料:1.慕课网-<初识java微信公众号开发>,2.微信 ...

  6. C#微信公众号开发系列教程三(消息体签名及加解密)

    http://www.cnblogs.com/zskbll/p/4139039.html C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C ...

  7. C#微信公众号开发系列教程二(新手接入指南)

    http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...

  8. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...

  9. NET微信公众号开发-5.0微信支付(待测试)

    开发前准备. 1.0微信支付官方开发者文档 2.0官方demo下载 我们用c#所以选择.net版本 不过这个官方的demo根本跑步起来 3.0官方demo运行起来解决方案 4.0微信支付官方.net版 ...

  10. .NET开发者如何愉快的进行微信公众号开发

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:这篇文章只是一个如何提高开发效率的简单指导和记录,不会涉及具体的微信公众号开发内容. ...

随机推荐

  1. jacoco+ant安装部署篇(统计代码覆盖率,适用自动化测试)

    1:什么是jacoco? JaCoCo是一个开源的覆盖率工具(官网地址:http://www.eclemma.org/JaCoCo/),它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant. ...

  2. Linux 系统负载查询及分析说明

    Linux 系统出现死机或卡顿时,可以参阅如下步骤进行整体排查: 检查服务器进程与服务否占用了过多内存,或者内存没有正常释放,导致出现内存溢出,系统宕机. 检查 /var/spool/cron 等系统 ...

  3. jsp相关基础知识

    一.JSP简介 JSP全称是Java Server Page,它和Servlet一样,也是sun公司推出的一套开发动态web资源的技术,称为JSP/Servlet规范.其本质也是一个Servlet. ...

  4. DSSM:深度语义匹配模型(及其变体CLSM、LSTM-DSSM)

    导语 在NLP领域,语义相似度的计算一直是个难题:搜索场景下Query和Doc的语义相似度.feeds场景下Doc和Doc的语义相似度.机器翻译场景下A句子和B句子的语义相似度等等.本文通过介绍DSS ...

  5. Centos 7 修改系统时区

    timedatectl status Local time: 四 2014-12-25 10:52:10 CST Universal time: 四 2014-12-25 02:52:10 UTC R ...

  6. Achievements

    看了Suma,觉得懂了85%以上. 两个月可以学这么多.方法是不懂的就学就行了. 最近学了:字符串,网络流,线段树,斯特林反演,多项式与生成函数,一些数论等.

  7. 关于XLL加载项动态加载、卸载的演示及XLL函数自定义类型注册的演示

    1.在XLL中,把函数定义成不同的类型,在Excel中的实际效果也不同,具体如下: pxMacroType value                                          ...

  8. Vue之小入门

    Vue之小入门 <div id="app">{{ greeting }}</div> <script> let oDiv = document. ...

  9. Python_内置函数之round的幺蛾子

    pycharm运行结果 1 ret = round(0.5) print(ret) >>> 0 ret1 = round(1.5) print(ret1) >>> ...

  10. 使用PHPExcel导出数据库表结构及内容

    导出表结构: mysql> desc user ; +----------+--------------+------+-----+---------------------+--------- ...