开发微信公众号【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为空的情况。记住这个坑就可以了。

作为个人开发者公众号,开放的 会话功能 只有接收消息、接收事件推送、接收语音识别结果(暂时不知道是什么鬼)、自动回复这些接口
一些好玩的接口如获取用户列表、获取用户地理位置、素材管理、微信支付、分享接口等都没有开发给个人运营者

1可能是当前手机信号断开或者WiFi信号断开。检查是否是信号原因;可能是微信服务器宕机,需要等微信修复后才能正常发出信息;也有可能是手机软件或系统存在未知BUG。尝试重启手机解决。

2具体如下:如果无法发送消息,可以先返回微信主页面,查看上面微信字样旁边是否有未连接字样。可能是当前信号差,可以等一段时间再尝试发送;如果网络没有问题,可以检查一下内存信息是否过多。这时候我们可以清理内存,打开微信的[我]-[设置]-[通用],找到[存储空间]选项,点击下方[缓存]右侧的[清理]按钮。对方勒索你,这种情况下不能发信息。可以发给其他同事或者朋友测试。如果不能给单个联系人发消息,可能是你被对方敲诈了。如果找不出原因,可以启动重启。也许你只是遇到一个软件错误,重启就可以解决。


小爱同学是一个语音助手,可以听取您的指令并快速地为您提供服务。但是,如果您使用小爱同学发送微信消息时,需要注意以下几点:
1您的微信账号必须已经绑定在小爱同学上,否则无法使用微信功能。
2小爱同学发送消息时需要使用微信开放平台提供的API接口,并请求微信服务器发送消息,如果您的网络信号不稳定、微信API接口出现故障等情况会导致发送失败。
3某些微信功能可能受到微信自身的限制,如微信公众号、小程序无法在小爱同学中直接打开,需在微信客户端中 *** 作。
如果您在使用小爱同学时遇到微信无法发送消息的问题,可以先检查网络连接是否良好,尝试重新登录小爱同学和微信,或者隔段时间再次尝试发送。如果问题依然无法解决,建议您联系小爱同学客服人员进行咨询和处理。

微信公众平台分为订阅号和服务号,服务号提供9大接口,需要通过微信认证后才能使用这些接口。认证费用300元。下面是接口的大致介绍:

语音识别:通过语音识别接口,用户发送的语音,将会同时给出语音识别出的文本内容。

客服接口:通过客服接口,公众号可以在用户发送过消息的24小时内,向用户回复消息。

OAuth20网页授权:通过网页授权接口,公众号可以请求用户授权。

生成带参数二维码:通过该接口,公众号可以获得一系列携带不同参数的二维码,在用户扫描关注公众号后,公众号可以根据参数分析各二维码的效果。

获取用户地理位置:通过该接口,公众号能够获得用户进入公众号会话时的地理位置(需要用户同意)。

获取用户基本信息:通过该接口,公众号可以根据加密后的用户OpenID,获取用户的基础信息,包括头像、昵称、性别、地区。

获取关注者列表:通过该接口,公众号可以获取所有关注者的OpenID。

用户分组接口:通过分组接口,公众号可以在后台为用户移动分组,或创建、修改分组。

上传下载多媒体文件:通过该接口,公众号可以在需要时在微信服务器上传下载多媒体文件。


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

原文地址: https://outofmemory.cn/zz/13076829.html

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

发表评论

登录后才能评论

评论列表(0条)

保存