个人微信公众号搭建Python实现 -个人公众号搭建-处理消息和事件(14.3.4)
@
1.消息处理
现在只处理text文本消息
没有关键字的就交给qingyunke机器人去应付,这是一个免费的对话api
从配置文件中读取关键字信息,如果存在某个关键字就返回对应的
返回的时候要传之前用户的信息,所以这里就直接把微信服务器发送过来的xml文件转为dict传过来
返回给用户信息时,如果是文字就不做处理的读取配置信息的内容
如果发现关键字对应的信息以pic_开头,说明返回的是图片(这里使用了切片)
import ReturnMessage
import json
from requests import request
def Processing(xml_dict,msg_type,SET):
if msg_type == "text":
return Text(xml_dict,SET)
else:
return Others(xml_dict)
def Text(xml_dict,SET):
Content = str.lower(xml_dict.get("Content"))
Copyright = SET["MAIN"]
#使用run启动,keyword.json对应着run的目录
with open(r'../resource/KeyWord.json', 'r', encoding="utf-8") as f:
KeyWord = json.load(f)
if Content in KeyWord.keys():
if KeyWord[Content][0:4] == "pic_":
return ReturnMessage.ReturnPic(xml_dict,KeyWord[Content][4:])
else:
return ReturnMessage.ReturnText(xml_dict,Copyright +"\n\n"+ KeyWord[Content])
else:
url = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s" % Content
rep = request("get", url)
msg_ = rep.content.decode()
dict = json.loads(msg_)
return ReturnMessage.ReturnText(xml_dict,dict["content"])
def Others(xml_dict):
return ReturnMessage.ReturnException(xml_dict)
2.事件处理
这里就只处理订阅事件,返回一个欢迎信息
import ReturnMessage
def Processing(xml_dict,Event):
if Event == "subscribe":
return Subscribe(xml_dict)
elif Event == "unsubscribe":
Unsubscribe(xml_dict)
else:
return Others(xml_dict)
def Subscribe(xml_dict):
return ReturnMessage.ReturnText(xml_dict,"欢迎订阅")
def Unsubscribe(xml_dict):
pass
def Others(xml_dict):
return ReturnMessage.ReturnException(xml_dict)
3.返回处理
一共有三个方法,一是返回自定义文字,二是返回固定文字,三是返回图片
这里都是查看的官方文档去构造的返回数据
将dict转化为xml返回给微信服务器
返回图片的时候,是返回图片的id(用永久素材的id)
import time
def ReturnText(xml_dict,text):
resp_dict = {
"xml":{
"ToUserName":xml_dict.get("FromUserName"),
"FromUserName":xml_dict.get("ToUserName"),
"CreateTime":int(time.time()),
"MsgType":"text",
"Content":text
}
}
return resp_dict
def ReturnException(xml_dict):
resp_dict = {
"xml":{
"ToUserName":xml_dict.get("FromUserName"),
"FromUserName":xml_dict.get("ToUserName"),
"CreateTime":int(time.time()),
"MsgType":"text",
"Content":"目前只支持文字类型"
}
}
return resp_dict
def ReturnPic(xml_dict,id):
resp_dict = {
"xml":{
"ToUserName":xml_dict.get("FromUserName"),
"FromUserName":xml_dict.get("ToUserName"),
"CreateTime":int(time.time()),
"MsgType":"image",
"Image":{"MediaId":id}
}
}
return resp_dict
关于作者
个人博客网站
个人GitHub地址
个人公众号:
个人微信公众号搭建Python实现 -个人公众号搭建-处理消息和事件(14.3.4)的更多相关文章
- 个人微信公众号搭建Python实现 -个人公众号搭建-被动回复消息建模(14.3.2)
@ 目录 1.阅读官方文档 2.思考 关于作者 1.阅读官方文档 点击进入微信官方开发者文档 接收普通消息 文本消息 图片消息 语言消息 视频消息 小视频消息 地理位置消息 链接消息 接收事件消息 关 ...
- 个人微信公众号搭建Python实现 -个人公众号搭建-总结(14.3.6)
@ 目录 1.主要技术:Flask,requests 2.实现的主要功能 3.目录说明 4.运行方式 关于作者 1.主要技术:Flask,requests requirements.txt如下 req ...
- 个人微信公众号搭建Python实现 -个人公众号搭建-永久素材管理(14.3.5)
@ 目录 1.说明 2.上传素材 3.获取素材列表 关于作者 1.说明 个人微信公众号开发的功能有限,因为很多权限没有,但支持上传永久素材,具体查看微信公众号文档 这里的请求都要将本地IP地址放到微信 ...
- 个人微信公众号搭建Python实现 -个人公众号搭建-运行run方法的编写(14.3.3)
@ 目录 1.主要逻辑 2.代码 关于作者 1.主要逻辑 使用的是flask服务器 就使用一个函数处理请求 第一个是验证服务器,返回微信服务器给的字符串就表示验证成功 第二是要处理微信服务器发送过来的 ...
- 个人微信公众号搭建Python实现 -个人公众号搭建-构想(14.3.1)
@ 目录 1.需求 2.怎么做 关于作者 1.需求 个人便捷工具 2.怎么做 针对个人未认证订阅号拥有以下权限 以及微信网页的一些权限,但是由于开发微信网页有限制 可定制功能只有被动回复,以及这个素材 ...
- 使用python一步一步搭建微信公众平台(一)
使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微信平台注册的时候需要你拍张手持身份证的照片,还有几天的审核期 微信公众平台:http:/ ...
- Java开发微信公众号(三)---微信服务器请求消息,响应消息,事件消息以及工具处理类的封装
在前面几篇文章我们讲了微信公众号环境的配置 和微信公众号服务的接入,接下来我们来说一下微信服务器请求消息,响应消息以及事件消息的相关内容,首先我们来分析一下消息类型和返回xml格式及实体类的封装. ( ...
- 微信H5页面内实现一键关注公众号
H5页面内实现关注公众号的微信JSSDK没有相关接口开放,因此就得动点脑筋来实现该功能了.下面的方法就是通过一种非常蹊跷的方式实现的. 首先,需要在公众号内发表一篇原创文章,注意是原创文章,然后由另一 ...
- .net微信公众号开发——消息与事件
作者:王先荣 本文介绍如何处理微信公众号开发中的消息与事件,包括:(1)消息(事件)概况:(2)验证消息的真实性:(3)解析消息:(4)被动回复消息:(5)发送其他消息. 开源项目地址:h ...
随机推荐
- 如何利用 CleanMyMac X 进行系统清理
CleanMyMac X是一款颇受欢迎的专业清理软件,拥有十多项强大的功能,可以进行系统清理.清空废纸篓.清除大旧型文件.程序卸载.除恶意软件.系统维护等等,并且这款清理软件操作简易,非常好上手,特别 ...
- 类虚拟机软件CrossOver是什么?它的优势在哪里?
虚拟机软件对于很多人来说已经不是一个陌生的词汇了.我们可以通过软件来模拟具有完整硬件系统功能的计算机系统.比如我们可以在Mac OS系统上模拟Windows 7 的系统,以此来安装我们想要使用的应用程 ...
- gitlab private-token利用工具
在渗透测试中,经常会遇到只获得gitlab PRIVATE-TOKEN的情况,而gitlab提供了一系列的api给我们通过这个token去访问gitlab. 所以做了个简单的gitlab工具,以供紧获 ...
- 使用axios实现登录功能
1.创建一个login.vue页面 1.1写页面components/Login.vue 在 src/components 下创建 Login.vue 页面 <template> < ...
- selenium如何处理H5视频
selenium处理H5视频主要使用的是javascript,javascript函数有内置的对象叫arguments,arguments包含了调用的参数组,[0]代表取第一个值. currentSr ...
- LeetCode周赛#209
1609. 奇偶树 #广搜 #二叉树的层次遍历 题目链接 题意 如果一棵二叉树满足下述几个条件,则可以称为奇偶树 : 二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标 ...
- form 表单上传文件及传输数据的编码格式
form中的 action 控制请求往什么地方提交 method 请求方式 如果不写默认是get 请求 如果想传文件 必须要把默认的urlencoded的改成enctype="multi ...
- Error:Execution failed for task ':app:mergeDebugResources'. > Error: Some file crunching failed, see logs for details
android studio中的资源文件命名是不能带有数字的,因为会与R类的资源ID起冲突,所以编译就发生了错误.
- vue----(组件)子组件和父组件
1.组件的定义 1.定义组件并引用 2.父组件向子组件传值 3.子组件向父组件传值 什么是组件 1.Html中有组件,是一段可以被复用的结构代码 2.Css中有组件,是一段可以被复用的样式 3.Js中 ...
- Spring Cloud 学习 (六) Spring Cloud Config
在实际开发过程中,每个服务都有大量的配置文件,例如数据库的配置.日志输出级别的配置等,而往往这些配置在不同的环境中也是不一样的.随着服务数量的增加,配置文件的管理也是一件非常复杂的事 在微服务架构中, ...