开发微信公众号【3】接收消息

开发微信公众号【3】接收消息,第1张

当普通微信用户向公众号发送消息的时候,微信服务器将POST消息的XML数据包发到开发者填写的URL上,所以我们之前设置的用来验证服务器是否是我们的那个URL便成了服务器与微信通信的唯一接口,不过它这次不用GET方法,而是用POST,并且发送的是XML,且要求我们回复XML

之前用的是body-parser,尝试直接使用reqbody获取不到相应的数据包,原因是body-parser只对reqbody 为json格式的做解析,所以对于xml格式的,解析后就reqbody就变成空对象了

通过百度查询找到了两个xml转化模块,一个是xml2js,一个是express-xml-bodyparser

两个模块都可以转化xml为js对象,笔者因为使用了express框架,而且只需要在请求中调用转换,因此选择了后者,如果你想在其他地方使用到转化或者前端框架不是express的化,那么前者则是更好的选择。

然后在路由中调用:

<pre><code>

var xmlparser = require('express-xml-bodyparser');

apppost('你设置的公众号URL', xmlparser({trim: false, explicitArray: false}), function(req, res) {

consolelog(reqbody);

})

</code></pre>

返回xml格式需要在res中提前设置Content-Type为application/xml

<pre><code>

var xmlparser = require('express-xml-bodyparser');

apppost('你设置的公众号URL', xmlparser({trim: false, explicitArray: false}), function(req, res) {

consolelog(reqbody);

data = '<xml><ToUserName>chenjsh36</ToUserName></xml>';

reswriteHead(200, {'Content-Type': 'application/xml'});

resend(data);

})

</code></pre>

好了,有了接收普通消息的接口后,便可以实现很多有趣的功能,如问答机器人、字典翻译等,网上也有很多已经实现好的模块供大家去直接调用。

笔者调用一个免费开源的问答机器人,它提供了对应的接口,笔者将微信服务器发送过来的数据包解析后,提取content转发给问答机器人,得到回复后再转发给微信服务器,具体转发方法请参考上面的格式,便简单的实现一个智能机器人(本来想自己实现一个,发现人工智能太弱了。。。)

遇到的坑 :一开始是直接转发content的内容,发现问答机器人很不智能,刚好早上看到一位前端老师的课程ppt,刚好讲到了字符集和字符编码的内容,简直是太巧了,瞬间意识到了可能是中文没有编码导致的问题,使用encodeURI解决了这个bug,机器人瞬间智能了!(我要谢谢那位发ppt给我的教导员T T)

实现消息接收和回复的主要坑是之前没有接触过xml的接收和传递,导致开始拿到的body为空的情况。记住这个坑就可以了。

作为个人开发者公众号,开放的 会话功能 只有接收消息、接收事件推送、接收语音识别结果(暂时不知道是什么鬼)、自动回复这些接口

一些好玩的接口如获取用户列表、获取用户地理位置、素材管理、微信支付、分享接口等都没有开发给个人运营者

拿到微信公众号的OpenID之后,就要使用微信派的微信文章接口;通过输入微信公众号的OpenID和微信派网站提供的Token的话,就可以获取返回的json格式的公众号文章列表和文章内容。

由于接口的返回格式是json格式的;各大网站如果想要这些公众号文章的数据的话,还有经过自己的二次加工。

公众号做了蛮多的,借这个问题梳理一下。开发一个微信公众号,技术点可以分布在客户端和后端两部分,其中微信公众号为客户端。

1后端:用自己熟悉的语言就可以了。Java、Python、C++、C#、NodeJs,甚至是PHP,怎么快怎么来。

2API和>

3加密解密技术:微信公众号与后端的交互过程中,是需要相互授信的。这里除了基本的网络协议知识之外,还有加密解密技术。首先你会感知的是微信公众号分配的AppSecret,其次就是摘要算法。

4JSON和XML技术:数据的传输,其中一个关注点就是传输的格式。微信公众号开发里,JSON和XML全部用上了,接口的数据传输格式普遍为JSON格式,其次在消息接口里则是使用XML的格式。

5传统Web技术:在第2点说到,我们必须通读整个微信公众号的API文档。如果发现你想实现的功能并不存在适合的接口时,我们就必须让功能应用跳转到自己开发的H5页面。那么这个时候,传统的Web技术就会使用上,这里传统的Web技术包括Html5、Javascript、CSS3等。

以上就是关于开发微信公众号【3】接收消息全部的内容,包括:开发微信公众号【3】接收消息、python怎么抓取搜狗的微信文章、微信公众号开发需要哪些技术等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9629930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存