微信公众平台C#开发系列(十六): 模板消息-发送消息模板
使用微信公众平台接口向用户发送模板消息
获取已添加至帐号下所有模板列表,可在微信公众平台后台中查看模板列表信息。为方便第三方开发者,提供通过接口调用的方式来获取帐号下所有模板信息,具体如下:
官方文档地址
https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#
获得模板ID
参考 微信公众平台C#开发系列(十三): 模板消息-获得模板ID
根据文档我们先定义一个SendTemplateMessageResponse类继承 ErrorMessage 用于解析接口结果
ErrorMessage 公共类参考 : 微信公众平台C#开发系列(四):获取access token凭证
namespace YuanTK.WeiXin.Wrapper
{
/// <summary>
/// 发送模板消息结果
/// </summary>
public class SendTemplateMessageResponse:ErrorMessage
{
/// <summary>
/// 消息ID
/// </summary>
public string msgid { get; set; }
}
}
定义一个SendTemplateMessage方法类继承WeiXinRequest 和接口IWeiXin
namespace YuanTK.WeiXin
{
/// <summary>
/// 发送模板消息请求参数
/// </summary>
public class SendTemplateMessageRequest
{
/// <summary>
/// 接收者openid
/// </summary>
public string touser { get; set; }
/// <summary>
/// 模板ID
/// </summary>
public string template_id { get; set; }
/// <summary>
/// 模板跳转链接(海外帐号没有跳转能力)
/// </summary>
public string url { get; set; }
/// <summary>
/// 跳小程序所需数据,不需跳小程序可不用传该数据
/// </summary>
public Miniprogram miniprogram { get; set; }
/// <summary>
/// 模板填充字段数据
/// </summary>
public Dictionary<string, TemplateDataItem> data { get; set; }
}
/// <summary>
/// 小程序配置信息
/// </summary>
public class Miniprogram
{
public string appid { get; set; }
public string pagepath { get; set; }
}
public class TemplateDataItem
{
public string value { get; set; }
public string color { get; set; }
}
/// <summary>
/// 发送模板消息
/// </summary>
public class SendTemplateMessage : WeiXinRequest<SendTemplateMessageResponse>, IWeiXin<SendTemplateMessageResponse>
{
/// <summary>
/// 接口地址
/// </summary>
String api;
dynamic _RequestData;
public SendTemplateMessage(string access_token, SendTemplateMessageRequest request)
{
_RequestData = request;
//_RequestData.data = request.data as dynamic;
this.api = $"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={access_token}";
}
/// <summary>
/// 调用接口获取结果
/// </summary>
/// <returns></returns>
public SendTemplateMessageResponse GetResponse()
{
var jSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
string poststr = Newtonsoft.Json.JsonConvert.SerializeObject(this._RequestData, Formatting.Indented, jSetting);
return this.Post(api, poststr);
}
}
}
调用代码例子
SendTemplateMessageRequest request = new SendTemplateMessageRequest()
{
template_id = "jijmFDVnEoLakQPhRM-JOx3frbUUcYhAP7g6yObVKc8",
touser = "osupU6********************XYLAbmc",
url = "http://www.yuantk.com",
data = new Dictionary<string, TemplateDataItem>()
{
{ "result",new TemplateDataItem(){ value="哎呀 居然中奖了",color="#F80"} },
{ "withdrawMoney",new TemplateDataItem(){ value="0.01",color="#F80"} },
{ "withdrawTime",new TemplateDataItem(){ value="2021-06-09",color="#F80"}},
{ "cardInfo",new TemplateDataItem(){ value="邮政银行",color="#F80"}},
{ "arrivedTime",new TemplateDataItem(){ value="2021-06-09",color="#F80"}},
{ "remark",new TemplateDataItem(){ value="下次中奖还内定你",color="#F80"}}
}
};
string access_token = token.access_token;
IWeiXin<SendTemplateMessageResponse> api = new SendTemplateMessage(access_token, request);
SendTemplateMessageResponse response = api.GetResponse();
调用成功返回的结果
可以看到这里的模板ID就是上上篇文章里在后台添加的测试模板
微信端收到消息效果