你所在的位置:微信群>互联网推广>正文

链接消息

原创
发布时间: 2023-07-15 13:09:53 热度: 202 作者: 李斯特 来源: 微信加 本文共 6461 字 阅读需要 22 分钟
链接消息当用户向公众号发送链接消息时。
链接消息

当用户向公众号发送链接消息时,微信公众号接收到的 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