模块开发术语

系统通信参数

微信 与 微粤宝 间通信.

AppId

第三方用户唯一凭证. 对应 $_W['account']['key'].

微信系统的每一个公众号均可被视为一个应用(软件), 应用的标识就是 AppId.

每一个 AppId 都配有一个通信密钥 AppSecret. 对应 $_W['account']['secret'].

注: AppID 和 AppSecret 可在微信公众平台官网-开发者中心页中获得.

Token

微信平台与微粤宝系统通信时的密钥,用于身份验证。 对应 $_W['account']['token'].

ACCESS_TOKEN

access_token 是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。 获取 access_token

注: 公众号可以使用 AppID 和 AppSecret 调用接口来获取 access_token。

注: 调用所有微信接口时均需使用 https 协议。

微粤宝系统常用变量

$_W

微粤宝系统程序运行中的全局变量, 里面存放公众号及粉丝用户的基本信息. 参见 $_W

$_GPC

$_GET, $_POST, $_COOKIE 的集合体.

uniacid

微粤宝系统中 统一公众号 (主公号) 的标识(主键), 对应 $_W['uniacid'] .

acid

微粤宝系统中, 子公号 (微信公众号) 的标识(主键), 对应 $_W['acid'].

uid

微粤宝系统中, 后台(web)管理员或操作员 ID, 对应 $_W['uid'].

openid

微粤宝系统中, 微站(app)中某子公众号对应的粉丝标识, 对应 $_W['openid'].

if (!empty($_W['fans']['follow'])){

 echo '已关注';
 

} else {

 echo '未关注';
 

} fans

微粤宝系统中, 微站(app)中某子公众号对应的粉丝, 对应 $_W['fans'].

member

微粤宝系统中, 微站(app)中主公众号对应的会员, 对应 $_W['member'].

微粤宝接收消息类型

微粤宝系统接收粉丝发往微信服务器的消息,对这些消息进行抽象、包装处理成统一的消息结构。

subscribes 接收消息类型 订阅消息时按此处所示类型判断.

普通消息

type event 说明

text 文本消息

image 图片消息

voice 语音消息

video 视频消息

shortvideo 小视频消息

location 地理位置消息

link 链接消息

事件推送消息

type event 说明

event subscribe 关注事件

event unsubscribe 取消关注事件

event qr

event trace 上报地理位置事件

event click 点击菜单(链接)

event view 点击菜单(模拟关键字)

handles 接收消息类型

处理消息时按此处所示类型判断.

普通消息

type

text 文本消息

image 图片消息

voice 音频消息

video 视频消息

location 地理位置消息

link 链接消息

事件推送消息

type

subscribe 关注事件

unsubscribe 取消关注事件

qr 扫描二维码事件

trace 上报地理位置事件

click 点击菜单(链接)

view 点击菜单(模拟关键字)

基本结构 $message = array(

     // 此部分数据结构为**全局共有的结构**, 其他消息类型为此结构的扩展.

'from' ⇒ , string: 发送消息方, 代表一个粉丝用户(使用OpenID表示) 'to' ⇒ , string: 消息接收方, 对应当前的公众号

'time' ⇒ , int : 消息发送时间, 使用Unix时间戳表示 'type' ⇒ , string: 消息类型, 用于区分不同类型的消息, 请参阅下文

'event' ⇒ string: 事件类型, 'msgid' ⇒ long : 消息编号

     // 扩展结构
     ...

);

普通消息 文本消息

$text_message = array(

'from' ⇒ 'fromUser',

'to' ⇒ 'toUser',

'time' ⇒ '123456789',

'type' ⇒ 'text', string: 消息类型 'event' ⇒ , 'redirection' ⇒ false, bool: 是否是重定向

'source' ⇒ null string: 消息来源, 消息二次分析(目前来源:qr,click, 将扫码等事件转换为 text 事件.) ); 图片消息 $image_message = array( 'from' ⇒ 'fromUser', 'to' ⇒ 'toUser', 'time' ⇒ '123456789', 'type' ⇒ 'image', string: 消息类型

'event' ⇒ ,

'url' ⇒ $url, string: 图片URL ); 语音消息 $voice_message = array( 'from' ⇒ 'fromUser', 'to' ⇒ 'toUser', 'time' ⇒ '123456789', 'type' ⇒ 'voice', string: 消息类型

'event' ⇒ ,

'media' ⇒ , string: 语音消息媒体 'format' ⇒ , string: 语音格式,如 amr,speex 等

);

视频消息

$video_message = array(

'from' ⇒ 'fromUser',

'to' ⇒ 'toUser',

'time' ⇒ '123456789',

'type' ⇒ 'video', string: 消息类型 'event' ⇒ , 'media' ⇒ , string: 视频消息媒体

'thumb' ⇒ , string: 视频消息缩略图的媒体 ); 小视频消息(待定) $video_message = array( 'from' ⇒ 'fromUser', 'to' ⇒ 'toUser', 'time' ⇒ '123456789', 'type' ⇒ 'shortvideo', string: 消息类型

'event' ⇒ ,

'media' ⇒ , string: 小视频消息媒体 'thumbmediaId' ⇒ , string: 小视频消息缩略图的媒体

);

地理位置消息

$location_message = array(

'from' ⇒ 'fromUser',

'to' ⇒ 'toUser',

'time' ⇒ '123456789',

'type' ⇒ 'location', string: 消息类型 'event' ⇒ , 'location_x' ⇒ , float: 地理位置纬度

'location_y' ⇒ , float: 地理位置经度 'scale' ⇒ , float: 地图缩放大小

'label' ⇒ , string: 地理位置信息 ); 链接消息 $link_message = array( 'from' ⇒ 'fromUser', 'to' ⇒ 'toUser', 'time' ⇒ '123456789', 'type' ⇒ 'link', string: 消息类型

'event' ⇒ ,

'title' ⇒ , string: 消息标题 'description' ⇒ , string: 消息描述

'url' ⇒ , string: 消息链接 ); 事件推送消息 关注消息 $trace = array( 'from' ⇒ 'fromUser', 'to' ⇒ 'toUser', 'time' ⇒ '123456789', 'type' ⇒ 'event', 'event' ⇒ 'subscribe', ); 取消关注消息 $unsubscribe_message = array( 'from' ⇒ 'fromUser', 'to' ⇒ 'toUser', 'time' ⇒ '123456789', 'type' ⇒ 'event', 'event' ⇒ 'unsubscribe', string: 消息类型

);

扫描二维码

1. 用户未关注时,进行关注后的事件推送

$trace = array(

'from' ⇒ 'fromUser',

'to' ⇒ 'toUser',

'time' ⇒ '123456789',

'type' ⇒ 'event',

'event' ⇒ 'subscribe',

'scene' ⇒ '123', int : 事件KEY值,二维码的参数值,已去除'qrscene_'前缀 'ticket' ⇒ …, string: 二维码的ticket,可用来换取二维码图片

);

2. 用户已关注时的事件推送

$qr_message = array(

'from' ⇒ 'fromUser',

'to' ⇒ 'toUser',

'time' ⇒ '123456789',

'type' ⇒ 'qr',

'event' ⇒ 'SCAN',

'scene' ⇒ '123', int: 事件KEY值,是一个32位无符号整数,即创建二维码时的二维码scene_id 'ticket' ⇒ …, string: 二维码的ticket,可用来换取二维码图片

);

上报地理位置事件

$trace_message = array(

'from' ⇒ 'fromUser',

'to' ⇒ 'toUser',

'time' ⇒ '123456789',

'type' ⇒ 'trace', string: 消息类型 'event' ⇒ 'LOCATION', 'location_x' ⇒ , string: 地理位置纬度

'location_y' ⇒ , string: 地理位置经度 'precision' ⇒ , string: 地理位置精度

'latitude' ⇒ ? ⇔ location_x 原始值 'longitude' ⇒ ? ⇔ location_y 原始值

);

点击菜单事件

☞ 1. click

点击推事件

$click_message = array(

'from' ⇒ 'fromUser',

'to' ⇒ 'toUser',

'time' ⇒ '123456789',

'type' ⇒ 'event',

'event' ⇒ 'click',

'eventkey' ⇒ 'EVENTKEY' string: 模拟的关键字 ); ☞ 2. view 跳转 URL $view_message = array( 'from' ⇒ 'fromUser', 'to' ⇒ 'toUser', 'time' ⇒ '123456789', 'type' ⇒ 'event', 'event' ⇒ 'view', 'eventkey' ⇒ 'www.qq.comstring: 设置的跳转URL

);

☞ 3. scancode_push

扫码推事件

$view_message = array(

'from' ⇒ 'fromUser',

'to' ⇒ 'toUser',

'time' ⇒ '123456789',

'type' ⇒ 'event',

'event' ⇒ 'scancode_push | scancode_waitmsg',

'scancodeinfo' ⇒ array(

'scanresult' ⇒ ?,

'scantype' ⇒ ?,

'eventkey' ⇒ ?,

)

);

☞ 4. scancode_waitmsg

扫码推事件且弹出"消息接收中"提示框

参阅 ☞ 3. scancode_push

☞ 5. pic_sysphoto

弹出系统拍照发图

$view_message = array(

'from' ⇒ 'fromUser',

'to' ⇒ 'toUser',

'time' ⇒ '123456789',

'type' ⇒ 'event',

'event' ⇒ 'pic_photo_or_album | pic_weixin | pic_sysphoto',

'sendpicsinfo' ⇒ array(

'count' ⇒ ?,

'piclist' ⇒ array(

…,

)

)

);

☞ 6. pic_photo_or_album

弹出拍照或者相册发图

参阅 ☞ 5. pic_sysphoto

☞ 7. pic_weixin

弹出微信相册发图器 参阅 ☞ 5. pic_sysphoto

☞ 8. location_select 弹出地理位置选择器 $view_message = array(

'from' ⇒ 'fromUser',

'to' ⇒ 'toUser',

'time' ⇒ '123456789',

'type' ⇒ 'event',

'event' ⇒ 'location_select',

'sendlocationinfo' ⇒ array(

'location_x' ⇒ ?,

'location_y' ⇒ ?,

'scale' ⇒ ?,

'label' ⇒ ?,

'poiname' ⇒ ?,

'eventkey' ⇒ ?

)

);

统一发送消息结构 微信结构, 请参阅 微信发送消息介绍

发送消息统一经由 processor.php 中的 respond() 分析处理, 调用 return $this→respXxx($returnMessage); 来包装并返回消息.

文本消息 参见 $this→respText($content)

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[text]]></MsgType>

<Content><![CDATA[你好]]></Content>

</xml>

图片消息 参见 $this→respImage($mid)

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[image]]></MsgType>

<Image>

<MediaId><![CDATA[media_id]]></MediaId>

</Image>

</xml>

语音消息 参见 $this→respVoice($mid)

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[voice]]></MsgType>

<Voice>

<MediaId><![CDATA[media_id]]></MediaId>

</Voice>

</xml>

视频消息 参见 $this→respVideo($video)

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[video]]></MsgType>

<Video>

<MediaId><![CDATA[media_id]]></MediaId>

<Title><![CDATA[title]]></Title>

<Description><![CDATA[description]]></Description>

</Video>

</xml>

音乐消息 参见 $this→respMusic($music)

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[music]]></MsgType>

<Music>

<Title><![CDATA[TITLE]]></Title>

<Description><![CDATA[DESCRIPTION]]></Description>

<MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>

<HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>

<ThumbMediaId><![CDATA[media_id]]></ThumbMediaId>

</Music>

</xml>

图文消息 参见 $this→respNews($news)

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[news]]></MsgType>

<ArticleCount>2</ArticleCount>

<Articles>

<item>

<Title><![CDATA[title1]]></Title>

<Description><![CDATA[description1]]></Description>

<PicUrl><![CDATA[picurl]]></PicUrl>

<Url><![CDATA[url]]></Url>

</item>

<item>

<Title><![CDATA[title]]></Title>

<Description><![CDATA[description]]></Description>

<PicUrl><![CDATA[picurl]]></PicUrl>

<Url><![CDATA[url]]></Url>

</item>

</Articles>

</xml>

规则与关键字 微粤宝系统会在微信用户的 对话内容 符合 一定的条件 时对用户进行回答反馈。

为描述以上过程,微粤宝系统定义了两个术语:关键字 和 规则。

关键字 用户对话内容的部分、全部或抽象。

规则 关键字的集合以及对指定内容的处理方式。

规则定义中包括处理此消息所使用的模块和此模块处理消息时所需要的其他附加数据

规则分类

完全匹配 用户对话与关键字完全相同 包含匹配 用户对话含有关键字 高级匹配(正则匹配) 用户兑换符合一定的规则(高级模式) 直接接管 没有其他规则匹配,将使用直接托管 默认回复、欢迎回复 用户对话不符合任何已定义规则 消息路由 消息路由是指粉丝用户经公众平台发送消息内容至微粤宝时, 微粤宝系统查找对应的规则记录, 并将消息分配至合适的模块处理的过程. 微粤宝系统按照不同的消息类型, 进行不同的处理.

联系我们

公司地址: 广州市黄埔区黄埔东路5号东城国际2502

邮箱地址:gzzy@020ziyu.com

公众号:微粤宝

官网网站: http://www.020ziyu.com

服务热线: 020-29883380