weixin2py--微信公众平台web服务器-0.1.3
---------------------------
##Summary
* 使用python2.7和django(**Demo仅支持大于1.7版本的Django**)开发的微信公众平台服务端程序,可以自动回复用户发来微信的消息。
* 最初的启发来自“武大助手”,类似的平台,提供消息智能回复功能。
* 完全重构了代码,虽然还有很多缺陷但已经完美了很多:)欢迎提出pull request。
##Feature
* 支持可视化的自定义消息回复规则和程序性的消息回复规则 - 使用接口编写即可,通过简单的过程,你也可以集成你的聊天机器人:)
* 文本路由((数据库路由和文件路由) - 使用正则表达式对回复进行匹配。
* 插件支持,你可以用django模板语法定义动态消息回复
* 易于集成 - 单独对django app `weixin2py`,里面有大部分可能用到的工具类和工具函数,需要的时候,新建你的django app,并且在app中使用WeiLib。
* 消息模版 - WeiLil.lib中包含了text_response和pic_text_response函数,传入参数可以在任意view或者handler中使用.
* 缓存session - 为增加诸如“谁是卧底”类的应用提供基础,更改你的缓存后端或者更改缓存接口即可.
##FAQ
* 调试和测试? - [下载wei-dev二进制包](https://github.com/winkidney/wei-dev/releases)(图形化测试工具)
##Change Log
* 2015-05-31 - 为Django1.8升级,修改setup.py中的Django版本要求
* 2015-03-05 - 修改所有代码结构,分离weixin2py和demo应用,更新setup.py,现在可以单独安装weixin2py
* 2014-10-10 - 修改版本号为0.0.1,增加setup.py,修改代码结构和说明文档,修改管理界面项目名称
* 2014-06-10 - 修复小bug,更新文档。
* 2014.05.09 - 2014.05.15 增加路由功能,插件功能。
* 2014.05.08 - 全面重构中
* 2013.xx.xx - first release,多么幼稚的代码
##How To
###INSTALL
+ Requires
+ django >= 1.5
+ python > 2.6
你可以使用如下方式安装python依赖:
```bash
apt-get install python-pip
pip install django
```
yum系系统类似方法安装依赖即可~~
或
```bash
cd weixin2py
python setup.py install
```
接下来,打开你的bash,切换到应用根目录,执行
```bash
cd demo
python rebuild_db.py
```
然后在你的settings.py中编辑TOKEN,改为你自己的TOKEN
将会自动生成数据库并添加超级用户,用户名admin,密码admin,你可以自行去这个脚本修改默认设定,数据库为了方便起见使用了sqlite
```bash
sh runserver.sh
```
运行测试服务器(默认工作在80端口)。
配置完毕后,登陆你的微信公众平台,设定访问地址为:http://yourhost:port/admin/
微信公众平台的接口URL为http://yourhost:port/weichat/
也可以使用nginx+*cgi,任何你喜欢的方式。提供了脚本ctrl8020.sh来控制fcig模式的启动和关闭。
###Basic Usage
访问http://youhost:port/admin/
登录,添加消息回复规则即可。
例如 想对用户发来的文本消息进行匹配,并回复一条文本消息,在管理面板中选择“文本>文本消息回复规则”,根据各个字段的提示进行填写即可。
如下示例图
用户发来的消息类型 2 回复的消息类型
####示例:文本2文本 消息回复规则
![添加文本->文本消息回复规则](res/home.jpg)
![添加文本->文本消息回复规则2](res/text2text_1.jpg)
####示例:添加使用插件的 文本2文本 消息回复规则
![使用包含插件功能的文本2文本消息回复规则](res/plugin_test.jpg)
插件消息使用django模板语法进行编写,参见[django模板语法](http://django-14-tkliuxing.readthedocs.org/en/latest/topics/templates.html)
插件编写参见[插件编写](#插件编写)
##流程说明
![工作流程图](res/flow.jpg)
##APIS
####[插件](id:插件编写)
插件目前仅工作在文本回复阶段,在匹配到消息回复之后,会对回复消息进行以此渲染,渲染所用的信息字典就是插件返回的字典。
每一个插件所返回的字典内容都会被自动合并到一个字典,然后在你的消息回复定义中使用你所返回的字典中的变量即可(当然可以是动态)
####目录结构
插件目录位于weixin2py/plugins/
目录结构如下
```bash
weixin2py/plugins/
|- setting.py - 插件配置文件
|- activity.py - 插件实现 (名字可以任意)
```
####编写
1.在插件目录下新建一个任意名字的py文件,然后根据如下格式写一个名为processor函数,这个函数会接收用户的消息对象作为参数,你可以根据用户的消息动态定义消息回复。
```python
#coding:utf-8
def processor(recv_msg):
"""A processor must return a dict.
If not ,program will throw the returned result.
"""
from_user = recv_msg.from_user
return {'test_plugin': 'only_the test plugin output',
'from_user': from_user
}
```
2.启用插件
打开setting.py,将你的插件导入并编辑plugin_text元组。
```python
import activity
plugin_text = ( activity,
)
```
3.在消息回复中使用插件定义的内容
![使用包含插件功能的文本2文本消息回复规则](res/plugin_test.jpg)
###handler
handler是拓展这个应用功能的另一种方式,最初开发使用的是这种方式,在没有数据库的情况下也可以正常运作,缺点是数据一旦写死修改很麻烦,适合用来生成动态内容,例如聊天机器人接口,查询接口之类的.
####结构
目前应用内置了两个router,file_router和db_router,执行的优先级是file_router->db_router,handler是file_router才有的结构。
####编写一个handler
在任意应用目录新建一个handlers.py(只是约定,可以自定义名称),将handler书写到其中。一个典型的handler如下.
```python
#coding:utf-8
from weixin2py.utils import text_response
def default_handler(recv_msg):
#do something
return text_response(recv_msg, "没有匹配操作,返回默认信息")
```
handler 返回一个text_response或者一个pic_text_response(图文消息回复),也可以是你自定义的response,要求必须是一个django的HttpResponse实例。
####启用handler
为了启用handler,你需要增加一个匹配模式,打开应用目录下的sample/router.py文件,示例内容如下
```python
#coding:utf-8
import re
from sample.handlers import (help_handler,about_handler,
test_handler)
"""
参考信息:
消息类型:text ,event,image, video, link , location,
"""
router_patterns =[
# 消息类型 消息文字(非文字类型消息留空) 操作函数
('text', re.compile('^help$'), help_handler),
#('text', re.compile('^about$'), about_handler),
#('text', re.compile('^test$'), test_handler),
]
```
将你的handler导入。然后如注释一样添加模式。
####在view中使用handler和router
示例文件:sample/views.py - 仅展现关键逻辑,详情参考具体文件
```python
# coding:utf-8
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from weixin2py.routers import base_router, db_router
from .router import router_patterns
from weixin2py import WeiMsg, check_signature
from weixin2py.handlers import default_handler
try:
from wei_demo.localsettings import TOKEN
except ImportError:
from wei_demo.settings import TOKEN
# router must be a list of router instance
routers = [base_router, db_router]
@csrf_exempt
def home(request):
if request.method == 'GET':
response = HttpResponse()
if check_signature(request, TOKEN):
response.write(request.GET.get('echostr'))
return response
else:
response.write('�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于python开发的微信公众平台自动消息处理程序+SDK+源码+开发文档+项目源码解析,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 使用python2.7和django(Demo仅支持大于1.7版本的Django)开发的微信公众平台服务端程序,可以自动回复用户发来微信的消息。 最初的启发来自“武大助手”,类似的平台,提供消息智能回复功能。 支持可视化的自定义消息回复规则和程序性的消息回复规则 - 使用接口编写即可,通过简单的过程,你也可以集成你的聊天机器人:) 文本路由((数据库路由和文件路由) - 使用正则表达式对回复进行匹配。 插件支持,你可以用django模板语法定义动态消息回复 易于集成 - 单独对django app weixin2py,里面有大部分可能用到的工具类和工具函数,需要的时候,新建你的django app,并且在app中使用WeiLib。 消息模版 - WeiLil.lib中包含了text_response和pic_text_response函数,传入参数可以在任意view或者handler中使用
资源推荐
资源详情
资源评论
收起资源包目录
微信公众平台自动消息处理程序+SDK.zip (53个子文件)
weixin2py-master
weixin2py-master
setup.py 368B
LICENSE 18KB
demo
__init__.py 16B
wei_demo
__init__.py 14B
wsgi.py 1KB
urls.py 608B
settings.py 6KB
runtestserver.sh 50B
rebuild_db.py 951B
sample
__init__.py 0B
admin.py 418B
models.py 1KB
urls.py 305B
handlers.py 801B
router.py 477B
views.py 1KB
manage.py 399B
ctrl8020.sh 567B
res
flow.dia 3KB
home.jpg 47KB
text2text_1.jpg 63KB
plugin_test.jpg 25KB
flow.jpg 32KB
.gitignore 398B
weixin2py
utils.py 4KB
__init__.py 7KB
admin.py 362B
models.py 7KB
templates
send
msg_music.json 254B
msg_text_pic.json 434B
msg_pic.json 104B
msg_text.json 106B
msg_voice.json 2B
msg_video.json 162B
menu_create.json 1KB
multi_msg_send.json 524B
response
msg_voice.xml 173B
msg_pic_text.xml 466B
msg_video.xml 278B
msg_text.xml 184B
msg_music.xml 400B
msg_img.xml 173B
msg_base.xml 348B
format.txt 2KB
plugin
__init__.py 0B
data
who_the_spy
who_the_spy.data 2KB
setting.py 264B
who_the_spy.py 578B
activity.py 311B
handlers.py 188B
sample_msg.py 5KB
routers.py 2KB
README.md 9KB
共 53 条
- 1
资源评论
梦回阑珊
- 粉丝: 5508
- 资源: 1707
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 天池大数据竞赛-新浪微博互动预测大赛第一赛季参赛源码(下载即用)
- 基于springboot的中国陕西民俗网源码(java毕业设计完整源码+LW).zip
- 基于springboot的秒杀系统设计与实现源码(java毕业设计完整源码+LW).zip
- 基于springboot的医药管理系统源码(java毕业设计完整源码+LW).zip
- 基于Python Django医院挂号诊疗系统毕业设计源码案例+数据库(高分项目)
- 机械设计自动打螺丝机生产线sw16项目全套技术资料.zip
- 机械设计自动缠绕膜包装机打包机sw17项目全套技术资料.zip
- 使用OpenCV部署yolov8检测人脸和关键点-包含C++和Python两个版本的程序(高分项目)
- 机械设计自动摆盘机(sw19可编辑+bom)项目全套技术资料.zip
- 基于Flask框架+MySQL Flask实现的图书管理系统源码+说明(高分项目)
- 机械设计自动导料机sw17项目全套技术资料.zip
- e6d67-main.zip
- 文件管理器 Path Finder for Mac v2165
- 文件管理器 Path Finder for Mac v2175
- 文件管理器 Path Finder for Mac v2163
- 威纶通触摸屏模板,直接打开就可以用,可根据自己要求修改, 威纶通触摸屏,全部图库
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功