关注/取消关注事件处理
当用户关注或取消关注公众号时,微信会推送一条事件消息到开发者填写的 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)
Previous: 10-菜单事件托送接收
Next: 12-模板消息接口-设置所属行业