Python微信公众号开发—小白篇(一)

为了防止我的文章被到处转载,贴一下我的公众号【智能制造专栏】,欢迎大家关注。

本篇文章首先实现与公众号的对接,实现简单的回复文字、图片内容。下一篇会对接腾讯的AI平台,实现对照片的人脸检测与分析,分析年龄、性别、表情、魅力值等。

准备工作

首先要注册一个公众号,这个很简单,我们到微信公众平台注册就可以了,选择个人订阅号就可以。但是如果可以认证的,我建议选择认证订阅号,因为未认证的号很多功能权限都没有。好了,话不多说进入正题。

1. 配置公众号

打开公众号,在 开发->基本配置 页面填写内容。

配置

下面说下需要填的内容,第一个URL要填的就是我们的服务地址,这个地址必须是外网地址并且是80端口。我们要本地开发时可以用 ngrok 解决。在ngrok.com官网下载。解压后就是一个exe程序。在当前目录下输入即可启动。启动后如下图所示,图片中网址就是我们需要的

启动ngrok

第二个Token,自己想一个就行了,随便填,你可以当他为一个密码。

第三个自己生成就可以了。

最后一个消息加解密方式选择明文模式。配置到这里就结束了,我们先不要关闭这个页面,等我们Python程序验证部分写好以后点击页面下面的提交就可以了。现在点会报错的。

2.接口验证部分代码编写

importfalcon

fromfalconimporturi

fromwechatpy.utilsimportcheck_signature

fromwechatpy.exceptionsimportInvalidSignatureException

classConnect(object):

defon_get(self, req, resp):

query_string = req.query_string

query_list = query_string.split('&')

b = {}

foriinquery_list:

b[i.split('=')[]] = i.split('=')[1]

try:

check_signature(token='这里填写配置界面你输入的token', signature=b['signature'], timestamp=b['timestamp'], nonce=b['nonce'])

resp.body = (b['echostr'])

exceptInvalidSignatureException:

pass

resp.status = falcon.HTTP_200

app = falcon.API()

connect = Connect()

app.add_route('/connect', connect)

代码写好以后,我们在命令行输入在80端口启动我们的程序。启动后如下图,代表启动成功,这时候我们到微信的配置页面点击提交,会弹出提交成功消息框,代表我们成功接入微信

启动程序

3. 发送文本信息给用户

接入成功后,就可以回复用户的信息了。我们增加一个函数处理用户发送的消息,整体代码如下:

importfalcon

fromwechatpy.utilsimportcheck_signature

fromwechatpy.exceptionsimportInvalidSignatureException

fromwechatpyimportparse_message

fromwechatpy.repliesimportTextReply, ImageReply

classConnect(object):

defon_get(self, req, resp):

query_string = req.query_string

query_list = query_string.split('&')

b = {}

foriinquery_list:

b[i.split('=')[]] = i.split('=')[1]

try:

check_signature(token='xxxxx', signature=b['signature'], timestamp=b['timestamp'], nonce=b['nonce'])

resp.body = (b['echostr'])

exceptInvalidSignatureException:

pass

resp.status = falcon.HTTP_200

defon_post(self, req, resp):

xml = req.stream.read()

msg = parse_message(xml)

ifmsg.type =='text':

reply = TextReply(content=msg.content, message=msg)

xml = reply.render()

resp.body = (xml)

resp.status = falcon.HTTP_200

app = falcon.API()

connect = Connect()

app.add_route('/connect', connect)

我们导出了parse_message,TextReply,ImageReply函数。当拿到用户消息时,判断是文本消息,就原样返回给用户。现在我们启动脚本后,向公众号发送文本消息就会收到自动回复了。

4. 发送图片信息给用户

我们简单修改下on_post函数,使其不仅能处理文本,也能处理图片信息。完整代码如下:

importfalcon

fromwechatpy.utilsimportcheck_signature

fromwechatpy.exceptionsimportInvalidSignatureException

fromwechatpyimportparse_message

fromwechatpy.repliesimportTextReply, ImageReply

classConnect(object):

defon_get(self, req, resp):

query_string = req.query_string

query_list = query_string.split('&')

b = {}

foriinquery_list:

b[i.split('=')[]] = i.split('=')[1]

try:

check_signature(token='xxxxxxx', signature=b['signature'], timestamp=b['timestamp'], nonce=b['nonce'])

resp.body = (b['echostr'])

exceptInvalidSignatureException:

pass

resp.status = falcon.HTTP_200

defon_post(self, req, resp):

xml = req.stream.read()

msg = parse_message(xml)

ifmsg.type =='text':

reply = TextReply(content=msg.content, message=msg)

xml = reply.render()

resp.body = (xml)

resp.status = falcon.HTTP_200

elifmsg.type =='image':

reply = ImageReply(media_id=msg.media_id, message=msg)

xml = reply.render()

resp.body = (xml)

resp.status = falcon.HTTP_200

app = falcon.API()

connect = Connect()

app.add_route('/connect', connect)

效果图

效果图

总结

以上就是第一部分的内容,我们首先做了接口认证,之后通过一个on_post函数处理了用户发送的文本和图片信息,不过目前就是原样返回。

下一篇我们接入腾讯AI平台,对照片进行人脸分析检测之后再返回给用户,不要走开哦。

不要错过

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180613G0FG9D00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券