11-关注或者取消关注事件-发送欢迎消息

关注/取消关注事件处理

当用户关注或取消关注公众号时,微信会推送一条事件消息到开发者填写的 URL 接口。我们可以捕捉这个事件,判断是订阅还是取消订阅,从而下发欢迎消息或做帐号解绑等操作。

为保护用户数据隐私,开发者收到用户取消关注事件时需要删除该用户的所有信息。

接口说明

文档地址:

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454

推送 XML 数据包示例:

<xml>
  <ToUserName><![CDATA[toUser]]></ToUserName>
  <FromUserName><![CDATA[FromUser]]></FromUserName>
  <CreateTime>123456789</CreateTime>
  <MsgType><![CDATA[event]]></MsgType>
  <Event><![CDATA[subscribe]]></Event>
</xml>Code language: HTML, XML (xml)

参数说明:

参数描述
ToUserName开发者微信号
FromUserName发送方帐号(一个 OpenID)
CreateTime消息创建时间(整型)
MsgType消息类型,event
Event事件类型,subscribe(订阅)、unsubscribe(取消订阅)

控制器中处理关注/取消关注事件

在 Common 方法的 event 分支中增加 subscribe 和 unsubscribe 的判断:

case "event":
    switch (Event.InnerText.ToLower())
    {
        case "click":
            string returnXml2 = string.Format(@"<xml>
                <ToUserName><![CDATA[{0}]]></ToUserName>
                <FromUserName><![CDATA[{1}]]></FromUserName>
                <CreateTime>{2}</CreateTime>
                <MsgType><![CDATA[{3}]]></MsgType>
                <Content><![CDATA[{4}]]></Content>
                </xml>",
                FromUserName.InnerText,
                ToUserName.InnerText,
                OtherUtil.GetTimestamp(DateTime.Now),
                "text",
                "请不要点击。");
            return this.Content(returnXml2);

        case "subscribe":
            string returnXml3 = string.Format(@"<xml>
                <ToUserName><![CDATA[{0}]]></ToUserName>
                <FromUserName><![CDATA[{1}]]></FromUserName>
                <CreateTime>{2}</CreateTime>
                <MsgType><![CDATA[{3}]]></MsgType>
                <Content><![CDATA[{4}]]></Content>
                </xml>",
                FromUserName.InnerText,
                ToUserName.InnerText,
                OtherUtil.GetTimestamp(DateTime.Now),
                "text",
                "欢迎关注。");
            return this.Content(returnXml3);

        case "unsubscribe":
            // 这里应该做一些清理用户信息的操作,发信息给它已经没有用了
            break;

        default:
            break;
    }
    break;Code language: HTML, XML (xml)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注