微信开发第六篇服务器主动发送信息

  • Post author:
  • Post category:其他


上几篇文章基本是介绍有手机客户端触发的事件在先,这种有手机微信客户端触发的请求,咱们的服务器被动响应,这种模式我个人理解为被动发送信息。

但是除此之外我们有时间要让用户推送消息,比如向家长每天发送孩子的作业信息。这就要用到模板消息了

对于模板消息首先要添加

进入模板选择行业之后就要等两天才能用模板消息

能用模板消息之后 根据自己的情况,查看模板选择适用于自己的模板 如果没有可以自己定义 只要微信官方审核通过就可以用(我申请的好像说是7-15天,完成审计,但是好像30分钟就给我发通知说申请成功)

后两个都是我自己申请的模板。

给一个我调用模板的方法

[WebMethod(Description = “测试优学酷能力报告”)]

public string TestEveryOneWeek(string featherOpenid)

{


string url = “http://……”;

string first = “亲爱的家长,您孩子能力报告出炉通知\n”;

var keyword1 = string.Format(“英语”);

var keyword2 = “单词、语法很棒哦!听力、口语还不错!差一点就当学霸了,继续加油!\n”;

var remark = “点击“详情”查看”;

//得到所需要的模板数据

var data = MessageTemplate.NoticeYouxuekuEvery(first, keyword1, keyword2, remark);

//模板标号

string templateid = “XakPchhUx1InpJX0pxDqmDKKQz6-ocrPTn682sV5VSw”;

featherOpenid = “…………”;  //我个人微信的openid

bool sendsucess = SendTemplateMessageService.SendTemplateMessage(templateid, featherOpenid, url, data);

if (sendsucess)

{


return “成功”;

}

else

{


return “失败”;

}

}

要给所谓的消息,制成固定格式如下 格式并添加颜色

public static object NoticeYouxuekuEvery(string first, string keyword1, string keyword2,string remark)

{


var data = new

{


first = new TemplateDataItem(first, “#000000”),

keyword1 = new TemplateDataItem(keyword1, “#000000”),

keyword2 = new TemplateDataItem(keyword2, “#000000”),

remark = new TemplateDataItem(remark, “#000000”)

};

return data;

}

里面的first,keyword1,keyword2,remark都是模板里面的参数。

调用发送消息方法如下

public static bool SendTemplateMessage(string templateId, string openId, string url, object data)

{


WeiXinService weixin = new WeiXinService();

var accessToken = weixin.GetAccessToken();

var getInfoUrl = string.Format(GetBaseUserInfoApi, accessToken, openId);

WeiXinUserInfo userInfo = HttpClientHelper.GetResponse<WeiXinUserInfo>(getInfoUrl);

string resultes=null;

//判断用户是否关注公众号

switch (userInfo.Subscribe)

{


case 0:

break;

default:

var sendUrl = string.Format(SendMessageApi, accessToken);

var msg = new TemplateMessage

{


template_id = templateId,

touser = openId,

url = url,

data = data

};

//序列化实体为json

string json = JsonConvert.SerializeObject(msg, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });

//调用消息发送接口

var result = HttpClientHelper.PostResponse<TemplateMessageResult>(string.Format(sendUrl, accessToken), json);

resultes = result.errmsg;

break;

}

if (resultes==”ok”)

{


return true;

}

else

{


return false;

}

}

如果知道了用户的openid,这样就可以使用模板消息,主动向手机客户端发送消息了。



版权声明:本文为u010773333原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。