微信开发之服务器9大接口的使用方法

公众平台是为微信用户提供服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公众平台网站中创建公众号、获取接口权限后,可以通过阅读本接口文档来帮助开发。

公众平台开发接口提供与用户进行消息交互、自定义菜单交互的能力。对于成功接入公众平台开发接口的公众账号,当用户发消息给公众号,微信公众平台服务器会使用http请求对接入的网址进行消息推送,第三方服务器可通过响应包回复特定结构,从而达到回复消息的目的。

二、注册微信平台公众帐号

(1)注册地址: https://mp.weixin.qq.com

(2)微信公众平台接口测试帐号申请: http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

使用微信扫描后登录;

这些接口为:

1.语音识别接口

2.客服接口

3.OAuth2.0 网页授权接口

4.生成带参数的二维码接口

5.获取用户地理位置接口

6.获取用户基本信息接口

7.获取关注者列表接口

8.用户分组接口

9.上传下载多媒体文件接口

~

1. 语音识别

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

实用意义:第三方可以调用微信自主研发的语音识别技术。意味着微信向第三方开放语音识别技术,直接调用语音识别接口,对语音识别结果进行互动或根据识别的内容进行自动答复。

用户给您的微信公众账号发送语音消息,微信服务器会先对语音消息进行识别,然后将识别出的文本内容和语音发送给您的微信公众账号的后台服务器

发送方不带语音识别功能的XML如下所示:

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1357290913</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <Format><![CDATA[Format]]></Format> <MsgId>1234567890123456</MsgId> </xml>

发送方带语音识别功能的XML如下所示:

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1357290913</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <Format><![CDATA[Format]]></Format> <Recognition><![CDATA[腾讯微信团队]]></Recognition> <MsgId>1234567890123456</MsgId> </xml>

从上面可以看出,微信服务器在推送的语音消息XML数据包中,增加了一个Recongnition字段,该字段的内容是语音识别出的文本内容。
【参数说明】:

ToUserName

  • 开发微信号(也就是你的微信公众号)

FromUserName

  • 发送方帐号(一个OpenID,用户的账号)

CreateTime

  • 消息创建时间 (整型)

MsgType

  • 语音为voice

MediaID

  • 语音消息媒体id,可以调用多媒体文件下载接口拉取该媒体

Format

  • 语音格式:amr

Recognition

  • 语音识别结果,UTF8编码

MsgID

  • 消息id,64位整型

【注】:语音识别功能可以在我的服务页面的高级接口栏目,通过开关来控制开启和关闭。

2. 客服接口

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

实用意义:以前公众帐号跟订户只能被动响应,比如用户触发了需求,如发送关键字给公众帐号,后者才可以与用户对话。如今,如果订户跟公众帐号对话过一次,公众帐号就可以在 12 个小时内持续给用户下发消息。这提高了公众帐号发送消息的能力。

3. OAuth 2.0 网页授权

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

实用意义:这就像微博、QQ的帐号授权功能。这意味着微信帐号正式成为一个帐号系统。

4. 生成带参数二维码

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

实用意义:举例来说,以前放一个二维码在网站或者线下的广告牌,效果都是一样的:获得关注用户。现在可以分析订户来自哪里。开发者可以在链接里设置特殊信息,做更多的数据分析。这一功能也可以用来做帐号绑定,

5. 获取用户地理位置

功能描述:通过该接口,公众号能够获得用户进入公众号会话时的地理位置。

实用意义:两种情况可以获得用户地理位置:一是与公众帐号“会话时”,二是在会话界面“每隔 5 秒”。在用户同意下,这就可以做微信导航或地理围栏方面的服务。

6. 获取用户基本信息

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

实用意义:以前这是一个非常高的权限。获得用户基本信息后,可以做 CRM 管理后台,方便商家管理用户。

7. 获取关注者列表

功能描述:通过该接口,用户可以获取所有关注者的 OpenID

实用意义:以前不能知道有多少人关注你,是谁在关注你。如今你可以知道谁在关注你。

8. 用户分组接口

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

实用意义:可以对用户进行分组,比如乐思享组织一场“听众交流会”,现场来了 1000 人,可以把它归为一组,后续的活动花絮照片只发给这 1000 人。这对于商家来说,就是一个 VIP 会员管理,是 CRM 管理平台。

9. 上传下载多媒体文件

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

实用意义:之前微信公众账号也可以下发音乐文件,现在则可以下发图片、视频。比如搞笑视频,上传到微信公众账号后台(目前只支持通过链接发布视频,腾讯视频的网址链接开放),可以向听众推送出来,这原来是视频网站的一个业务。

~~

服务器9大接口 #

  1. 用户分组接口: 通过分组接口,可以在后台为用户移动、创建和修改分组,比如把班级的同学分为男生和女生二组。
  2. 上传下载多媒体文件: 通过这个接口,公众号可以在需要的时候在微信服务器上传下载多媒体文件

订阅号接口 #

  1. 会话界面的自定义菜单
  2. 多客服接口,提供贴心快捷的客服服务
  3. 获取用户地址位置,精确提供服务
  4. 高级群发接口,实现更灵活的群发能力
  5. 用户分组接口,方便管理用户

一、域名、服务器及ngrok环境配置 #

ngrok #

内网穿透利器

localtunnel #

通过随机域名访问本地服务器

  • 不运动自定义域名映射
  • 映射以后如果本机服务重启,则映射会失效
$ npm install -g localtunnel
$ lt --port 9090

配置接入微信公众号 #

微信公众平台开发者文档
微信公众号
申请微信测试号

验证公众号 #

  1. 将token、timestamp、nonce三个参数进行字典排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 将加密后的字符串与signature对比,如果相同,表示这个请求来源于微信,我们直接原样返回echostr参数内容,接入,验证就成功了。

编写加密认证逻辑 #

var Koa = require('koa');
var sha1 = require('sha1');
var config = {
    wechat:{
        appID:'wx4bc04730ea7aa5ca',
        appSecret:'1cbfbc33bf3af7aced8e89ea06dcdb98',
        token:'zhufengpeixun'
    }
}

var app = new Koa();
app.use(function* (){
    var token = config.wechat.token;
    var signature = this.query.signature;
    var nonce = this.query.nonce;
    var timestamp = this.query.timestamp;
    var echostr = this.query.echostr;
    var str = [token,timestamp,nonce].sort().join('');
    var shaStr = sha1(str);
    if(shaStr == signature){
        this.body = echostr+'';
    }else{
        this.body = 'wrong';
    }

});
app.listen(9090);
console.log('start listening at 9090');

使用QQ浏览器代理调试端口 #

  1. 下载QQ浏览器
    QQ浏览器

  2. 安装微信调试插件

    qqbrowser://extensions/index
    

微信中消息与回复的种类 #

接口说明 #

  • 微信公众号接口只能接收80端口
  • 微信后台配置的URL是唯一能接收到消息的地址,我们在公众号中的所有操作都是与这个URL进行交互的
  • 调用微信接口的时候必须使用https协议
  • 用户向公众号发送消息时,会传过来OpenID,这个OpenID是用户微信号加密之后的值,每个用户在每个公众号中的OpenID是唯一的
  • 在开发阶段要注意报错的信息,以便根据报错码解决问题
  • 在和微信服务器交互的时候,需要满足各个接口的规范、调用频率限制,也要注意模板消息、用户数据等敏感信息的使用规范,比如微信认证分为资质认证和名称认证两部分,只需要资质认证通过,就可以获得接口每一个接口的调用次数是有上限的。

access_token #

公众号的全局统一token,可以看做是与微信交互的一把钥匙

  • access_token每2个小时自动失效,需要重新获取
  • 只要更新了access_token,之前那个就自动失效了
  • 可以让我们的系统每2个小时刷新一下token,这样无论何时调用接口token始终是有效的
  • 为了方便调用,我们需要把token保存在唯一的一个地方,并且持久化,不要放在内存里

获取access_coken

实现自动回复 #

  1. 在服务器端处理POST请求并解析XML请求体
  2. 解析数据包,获得数据包的消息类型或事件类型
  3. 拼装出定义好的消息
  4. 包装成XML的格式
  5. 在5秒钟内返回客户端

未经允许不得转载:WEB前端开发 » 微信开发之服务器9大接口的使用方法

赞 (0)