python 公众号开发框架_基于werobot框架的微信公众号开发
最近几天在给我哥一个超市做一个服务类型的微信公众号,主要的功能是做一个可以外送的网店以及提供快递送货上门等服务。
最终实现之后的所有功能如下:
主要是从三个方面来进行功能设计,就是用户感觉越方便越好。
下面来具体聊一下开发的一些具体内容:
下面代码的运行环境:Ubuntu+python3.7
微信公众号后台配置
我使用的主要是python+werobot框架进行开发,同时还有考虑设计到python自带的cgihttpserver或者是apache服务器。
首先,开发一个微信公众号,你必须要有一个微信公众号,微信公众号中的订阅号不能提供高级接口,如果想要使用高级接口,必须要进行微信认证,我是直接申请的服务号。因为刚搭建的时候,我的域名还没有弄好,所以直接使用的是服务器的ip地址作为,后台url接口。
有关于域名解析的内容,我自己也还在学习中,先放在这里。 我们现在先只用一台服务器,运行一个werobot机器人。在微信公众号后台将token,url,appid,appsecret等都配置记录好了之后,进入到下一步。
服务器的配置
(1) 在腾讯云或者阿里云购买一个服务器,如果你是学生,只需10元即可。首先在不考虑任何功能实现的情况下,我们先将werobot机器人运行起来。
在服务器中安装werobot,推荐使用pip命令,十分简单方便:
1pip3 install werobot
一条命令安装完成。
根据werobot官方文档,我们可以写一个最基本的脚本,让服务器运行起来,如下
使用vim写一个robot.py脚本:
1from werobot import WeRoBot
robot=WeRoBot(token="****")
#编写一个只处理用户文本消息的函数
@robot.text
def hander(message):
return "欢迎,关注我的微信公众号"
#让机器人运行
robot["HOST"]="0.0.0.0"
robot["PORT"]=80
robot.run()
我想详细这段代码,希望可以帮助到大家,达到举一反三的效果。
实际上,werobot处理用户发送过来的不同消息,都是使用修饰器@来进行区分和实现的。如果和其他框架相对应来讲的话,在django中,与这个类似的就是对于不同url的视图函数。
从文档中可以得知,werobot的修饰器分为两种类型,一种是meaage(用户发送的各种类型的消息),二是event(对应各种点击型事件)。
实际上,我们需要注意的是对于所有的被message类型修饰器修饰的函数,他们都具有一些共同的属性:
也就是说对于任意的函数,他里面的message都包括这些参数,当然,对于不同的message也包含有一些不同的参数。
event类型同理。
之后使用命令:
1python3 robot.py
机器人即可开始运行。(这里就不妨示意图了)。
(2)关于自定义菜单与消息回复类型
开发一个具有完备功能的公众号,自定义菜单肯定是不能缺少的。在werobot文档中,有关于自定义菜单的具体介绍:
首先,如果需要使用自定义菜单,必须先要获得appid和appsecret:
这里我想提醒一下,在开发之前还需要将你的服务器ip地址加入ip白名单,只有这样,服务器才能获得access_token。
代码如下:
1from werobot import WeRoBot
robot=WoRoBot(token="****")
robot.config["APP_ID"]=******
robot.config["APP_AECRET"]=******
client=robot.client
client.create_menu({
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
},
{
"type":"click",
"name":"歌手简介",
"key":"V1001_TODAY_SINGER"
},
{
"name":"菜单",
"sub_button":[
{
"type":"view",
"name":"搜索",
"url":"http://www.soso.com/"
},
{
"type":"view",
"name":"视频",
"url":"http://v.qq.com/"
},
{
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
}
]
}
]}
创建一个自定义菜单,使用的是client的create_menu(menu_data)函数,函数中的参数是是一个字典类型,按照一定的格式即可。
对于view类型的button,只需要给一个合理的url即可,但是对于click类型的button,则需要写一个对应key值得视图函数,结构类似下述代码(处理一个key值为abc得button):
@robot.click
def hander(message):
if message.key=="abc":
return "Hello,World!"
关于消息的回复类型
当被修饰的函数返回的是一个字符串的时候,werobot会自动帮你把它处理成文本消息返还给用户, 这个很简单,构建一个TextReply:
那么假设用户点击我的菜单某个button,我想给他回复一个图片消息呢?
从文档中可以得知,回复图片消息,需要图片得media_id,而media_id怎样获取呢?
代码如下:
client.upload_permanent_media("image",files)
其中files是文件类型,先把图片上传到服务器上面,然后直接使用open打开即可,注意是“rb”,用二进制的方式打开。
之后会返还给你一个json数据包,其中就包括所需要的media_id。
之后我们就要用到client的replies库,具体代码如下:
from werobot.replies import ImageReply
robot = WeRoBot(token='*****')
robot.config["APP_ID"] = "*********"
robot.config["APP_SECRET"] ="****************"
client = robot.client
media_id=client.upload_permanent_media("image",open(r"C:\Users\13016\Desktop\1.png","rb"))["media_id"]
@robot.click
def abort(message):
if message.key == "abc":
reply=ImageReply(message=message,media_id=media_id)
return reply
这样即可实现回复图片消息。
我的博客:www.lovexu.xyz
我的知乎:我爱小徐子
更多优质内容请关注微信公众号:生物信息与python
python 公众号开发框架_基于werobot框架的微信公众号开发相关推荐
- python公众号开发框架_Python的WeRoBot框架开发公众号-Go语言中文社区
最终的效果图: 完整代码: #coding:utf-8 # Filename:return_message5.py # 被关注回复'Hello World!' # 收到 笑话 回复糗百笑话,收到收到 ...
- python 极速后台开发框架_基于FastAdmin快速搭建后台管理系统
[课程简介] FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架.本课程从安装.架构.一键生成.数据库.控制器.模块.前端组件等方面,对如何使用FastAdmin框架 ...
- 基于mpvue框架搭建微信小程序开发环境
一.按照mpvue官网新建前台工程 http://mpvue.com/mpvue/quickstart.html(mpvue快速上手教程) 二.路由功能代码实现 mpvue对vue-router的支持 ...
- java中微信公众号框架_java微信公众号开发框架包含哪些内容呢?为什么要使用框架...
java微信公众号开发框架包含哪些内容呢?为什么要使用框架 微信公众号是现在人们生活中经常会用到的,微信公众号有着各种各样的信息,包含了齐全的内容以及完善的功能,这也让人们可以更加轻松的在公众号上找到 ...
- [python]用flask框架搭建微信公众号的后台
用flask框架搭建微信公众号的后台 最近用python写了点爬虫,为了要让爬取的数据能够随时显示在我眼前,并实时根据我的指令返回数据.于是采用微信公众号做这个显示窗口,既能发送指令也能显示简单的相关 ...
- 微信公众号php提交表单,PHP教程:使用YII2框架实现微信公众号中表单提交功能...
<PHP教程:使用YII2框架实现微信公众号中表单提交功能>要点: 本文介绍了PHP教程:使用YII2框架实现微信公众号中表单提交功能,希望对您有用.如果有疑问,可以联系我们. 相关主题: ...
- 软件作业(3):用户体验分析——基于南通大学教务管理系统微信公众号
用户体验分析--基于南通大学教务管理系统微信公众号 1. 目标:基于实例分析,体会用户体验设计的 7 条准则. 2. 要求 ①基于我们列出的 7 条UX评价准则,分析"南通大学教务管理系统微 ...
- laravel框架中微信公众号推送消息
首先呢,大家都知道微信公众号是我们现在微信的一个重要功能,那么下面到带大家分享一下微信公众号的基本消息推送,如图首先访问 https://mp.weixin.qq.com/debug/cgi-bin/ ...
- go+vue——基于gin框架和gorm的web开发实战
go+vue--基于gin框架和gorm的web开发实战 gin框架 视频.资料.笔记 安装Go环境, 添加环境变量(可能自动添加好) 下载 Go 环境变量 goland 报错: GOROOT is ...
- sqlserver 微信 读取_基于SQLServer数据库实现微信推送消息
本文主要向大家介绍了基于SQLServer数据库实现微信推送消息,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 最近新上了一个项目,需要监控设备数据,增加一个报警功能. ...
最新文章
- 智能ABC拼音输入法的“秘密”
- souce insight中文出现乱码
- Ubuntu15.10的64位版本启动eclipse+adt时的若干问题
- C strcpy和strcat
- php 同步代码,PHP进程同步代码实例
- java多线程 --ConcurrentLinkedQueue 非阻塞 线程安全队列
- 自己实现strcpy
- getResource(String name)用法及源码分析
- PAT1007 素数对猜想 (20 分)
- [20170617]vim中调用sqlplus.txt
- 神经网络与深度学习——TensorFlow2.0实战(笔记)(一)
- win10删除开机密码_win10系统,电脑密码和微软密码都忘记了,怎么办? Day22
- OpenGL(三)——OpenGL着色器基础
- c++ 写x64汇编 5参数_第9篇-C/C++ x86_64的函数栈
- gogs: 如何恢复repository
- [tips]ubuntu 12.04系统黑屏
- wd移动硬盘插电脑没反应_WD MY BOOK 桌面移动硬盘 插电脑不识别的解决办法。
- 高通MSM8953平台调整通话音量
- 倒在转“码”路上的文科生
- 四位数中有几个七C语言,用4、0和7可以组成( )个不同的三位数,其中最大的数是( ),最小的数是( )。——青夏教育精英家教网——...
热门文章
- cad2019菜单栏怎么调出来_cad怎样调出菜单栏(cad2016工具栏怎么调出来)
- 移动机械硬盘测试软件,硬盘检测工具HDTune使用教程
- 阿里巴巴分布式调度引擎tbschedule实战四tbschedule的配置使用
- excel随机抽取一个数据,抽奖
- 希尔加密法matlab,希尔密码加密解密
- swfobject java_[Java教程]swfobject.js视频播放插件
- 两个栈实现一个队列以及两个队列实现一个栈(Java)
- Android基于串口通讯笔记(USB,485协议,232协议)
- 微信小程序UI框架之【weui】怎样使用
- ESP8266 WIFI模块