链接消息
原创当用户向公众号发送链接消息时,微信公众号接收到的 POST 消息的 XML 数据格式如下:
1. <xml> 2. <ToUserName><![CDATA[toUser]]></ToUserName> 3. <FromUserName><![CDATA[fromUser]]></FromUserName> 4. <CreateTime>1351776360</CreateTime> 5. <MsgType><![CDATA[link]]></MsgType> 6. <Title><![CDATA[公众平台官网链接]]></Title> 7. <Description><![CDATA[公众平台官网链接]]><Description> 8. <Url><![CDATA[url]]></Url> 9. <MsgId>1234567890123456</MsgId> 10. </xml >
表 4-8 对所用参数进行了说明,具体如下。
表 4-8 用户向公众号发送链接消息参数说明

链接消息需要继承 RequestBaseMessage,接收链接消息的代码如下:
1. ///<summary> 2. ///接收链接消息 3. ///<summary> 4. public class RequestLinkMessage: RequestBaseMessage 5. { 6. public class override RequestMsgType MsgType 7. { 8. get { return RequestMsgType.link;} 9. } 10. ///<summary> 11. ///消息标题 12. ///</summary> 13. public string Title{ get; set; } 14. ///<summary> 15. ///消息描述 16. ///</summary> 17. public string Description{ get; set; } 18. ///<summary> 19. ///消息链接 20. ///</summary> 21. public string Url{ get; set; } 22. }
在微信用户与公众号进行交互的过程中,微信服务器将用户的某些操作通过事件推送的形式发送到开发者的服务器,开发者可以从中获取到该信息。其中,某些事件在推送发生后,是允许开发者回复用户的,某些则不允许。允许的事件有关注/取消关注事件、扫描带参数二维码事件、上报地理位置事件、自定义菜单事件、单击菜单拉取消息的事件推送、单击菜单跳转链接时的事件推送。
封装事件与普通消息类似,当用户对公众号进行某种操作时,微信服务器会以 XML 格式通过 POST 方式将相应事件消息发送到人们填写的服务器地址中,开发者文档上定义了所有事件的消息结构,不难发现,每种类型的消息都包含参数 ToUserName、FromUserName、CreateTime、MsgType 与 Event。
事件基类的代码如下:
1. public class BaseEvent 2. { 3. ///<summary> 4. ///开发者微信号 5. ///</summary> 6. public string ToUserName{ get; set; } 7. ///<summary> 8. ///发送方账号(OpenID) 9. ///</summary> 10. public string FromUserName{ get; set; } 11. ///<summary> 12. ///消息创建时间 13. ///</summary> 14. public string CreateTime{ get; set; } 15. ///<summary> 16. ///消息类型 17. ///</summary> 18. public string MsgType{ get; set; } 19. ///<summary> 20. ///事件类型 21. ///</summary> 22. public string Event{ get; set; } 23. }
接下来建立一个继承于 BaseEvent 的接收事件推送的基类 RequestBaseEvent。
1. public class RequestBaseEvent 2. { 3. ///<summary> 4. ///接收事件消息基类 5. ///</summary> 6. public class RequestBaseEvent:BaseEvent 7. { 8. get {return RequestMsgType.Event; 9. } 10. ///<summary> 11. ///事件类型 12. ///</summary> 13. public virtual Event Event 14. { 15. get { return Event.CLICK;} 16. } 17. ///<summary> 18. ///事件 key 值 19. ///</summary> 20. public virtual Event Event {get;set;} 21. } 22.
用户在关注或者取消关注微信公众号时,微信会把该事件推送到开发者填写的服务器地址中,方便开发者给用户发欢迎消息或账号的解绑。
推送 XML 数据包示例:
1. <xml> 2. <ToUserName><![CDATA[toUser]]></ToUserName> 3. <FromUserName><![CDATA[fromUser]]></FromUserName> 4. <CreateTime>123456789</CreateTime> 5. <MsgType><![CDATA[event]]></MsgType> 6. <Event><![CDATA[subscribe]]></Event> 7. <MsgId>1234567890123456</MsgId> 8. </xml >
表 4-9 对所用参数进行了说明,具体如下。
表 4-9 关注事件推送数据包参数说明
参数名称 | 描述 |
MsgType | 消息类型,event |
Event | 事件类型,subscribe(订阅)、unsubscribe(取消订阅) |
关注/取消关注事件的消息类型都是 event,参数为 subscribe 时表示关注事件,参数为 unsubscribe 时表示取消关注事件。接收该事件继承事件基类 BaseEvent,与关注/取消关注事件示例 XML 数据包相对应的代码如下:
1. ///<summary> 2. ///接收关注/取消关注事件 3. ///</summary> 4. public class SubscribeEvent : RequestBaseEvent 5. { 6. public override Event Event 7. { 8. get { return Event.subscribe;} 9. } 10. }
用户扫描带场景值二维码时,可能推送两种事件:如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值的关注事件推送给开发者;如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。
用户未关注时,进行关注后的事件推送,推送 XML 数据包示例如下:
1. <xml> 2. <ToUserName><![CDATA[toUser]]></ToUserName> 3. <FromUserName><![CDATA[fromUser]]></FromUserName> 4. <CreateTime>123456789</CreateTime> 5. <MsgType><![CDATA[event]]></MsgType> 6. <Event><![CDATA[subscribe]]></Event> 7. <EventKey><![CDATA[qrscene_123123]]></EventKey> 8. <Ticket><![ CDATA[TICKET]]></Ticket> 9. </xml >
表 4-10 对所用参数进行了说明,具体如下。
表 4-10 未关注用户扫描二维码事件推送数据包参数说明

用户已关注时的事件推送,推送 XML 数据包示例如下:
1. <xml> 2. <ToUserName><![CDATA[toUser]]></ToUserName> 3. <FromUserName><![CDATA[fromUser]]></FromUserName> 4. <CreateTime>123456789</CreateTime> 5. <MsgType><![CDATA[event]]></MsgType> 6. <Event><![CDATA[SCAN]]></Event> 7. <EventKey><![CDATA[SCENE_VALUE]]></EventKey> 8. <Ticket><![CDATA[TICKET]]></Ticket> 9. </xml >
表 4-11 对所用参数进行了说明,具体如下。
表 4-11 关注用户扫描二维码事件推送数据包参数说明

扫描带参数二维码事件的代码如下:
1. ///<summary> 2. ///接收扫描带参数二维码事件 3. ///</summary> 4. public class QRCodeEvent : RequestBaseEvent 5. { 6. public override Event Event 7. { 8. get { return Event.scan;} 9. } 10. ///<summary> 11. ///二维码的 ticket 12. ///</summary> 13. public string Ticket { get; set; } 14. }
用户同意上报地理位置后,每次进入公众号,都会在进入时上报地理位置,或在进入会话后每 5 s 上报一次地理位置,以在公众平台网站中修改位置。上报地理位置时,微信会将上报地理位置事件推送到开发者填写的 URL。
推送 XML 数据包示例如下:
1. <xml> 2. <ToUserName><![CDATA[toUser]]></ToUserName> 3. <FromUserName><![CDATA[fromUser]]></FromUserName> 4. <CreateTime>123456789</CreateTime> 5. <MsgType><![CDATA[event]]></MsgType> 6. <Event><![CDATA[LOCATION]]></Event> 7. <Latitude>23.137466</Latitude> 8. <Longitude>113.352425</Longitude> 9. <Precision>119.385040</Precision> 10. </xml >
表 4-12 对所用参数进行了说明,具体如下。
表 4-12 上报地理位置事件推送数据包参数说明

上报地理位置事件的消息结构对应的类如下:
1. ///<summary> 2. ///上报地理位置事件 3. ///</summary> 4. public class LocationEvent: RequestBaseEvent 5. { 6. public override Event Event 7. { 8. get { return Event.LOCATION;} 9. } 10. ///<summary> 11. ///纬度 12. ///</summary> 13. public string Latitude{ get; set; } 14. ///<summary> 15. ///经度 16. ///</summary> 17. public string Longitude{ get; set; } 18. ///<summary> 19. ///精度 20. ///</summary> 21. public string Precision{ get; set; } 22. }
版权保护: 本文由 李斯特 原创,转载请保留链接: https://www.wechatadd.com/artdet/9548
阅读推荐
更多...- 朋友圈的销售功能与公众号的营销威力 2023-07-02
- 反对意见:四步抗性话术,让客户从说「不」到说「是」 2023-05-22
- 也要敢于对客户说「NO」--实现业绩的突破 2023-04-01
- 别做一锤子买卖,把客户当成你的合伙人——销售技巧 2023-03-04
- 是的……最终会有一个时刻能「达成」销售「销售技巧」 2023-03-02
- 你言行一致吗「销售管理」 2023-03-02
- 移动互联网时代娱乐营销策略 2022-07-25
- 微商的分类方法有哪些?微商的类型有哪几类? 2022-07-20
- 三大模式打磨精品渠道管理——销售技巧 2023-03-04
- 且慢谈生意,先聊聊自己的私事,不断提高您的销售技巧和业绩 2023-04-01
- [微信创业]产品思维:选对产品,事半功倍 2023-07-12
- 粉丝经济,营销战该怎么打 2022-07-24
- 排版实战——微信后台与专业排版器排版技巧,第三方专业排版软件——秀米编辑器 2023-05-30
- 鱼缸法则:从小白到销售冠军,你需要的是广袤空间 2023-05-22
- 如何写出业界点赞的营销案例分享? 2022-07-29
- 顾客进店,如何引导试用体验,促进成交呢?送你 3 条建议 2023-05-22
- 正确的倾听方式,倾听客户内心真正的声音——销售技巧 2023-03-04
- 微信创业的营销方式,活动营销 2023-07-12