C#微信公众平台开发之高级群发接口
微信公众平台提供了高级群发接口,可以用于向用户发送图文消息、语音消息、音乐消息、视频消息、小程序卡片消息等。
1. 获取access_token
在使用高级群发接口时,需要先获取到有效的access_token。可以使用以下接口获取:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
其中,APPID和APPSECRET需要替换为自己的公众号appId和appSecret。
获得access_token后,需要缓存并定时刷新。微信公众平台规定每个access_token的有效期为2个小时。
2. 发送图文消息
使用高级群发接口发送图文消息,可以按照以下步骤进行:
2.1 创建图文消息素材
使用以下接口创建一个图文消息素材:
POST https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN
请求参数格式如下:
{
"articles": [
{
"title": TITLE,
"thumb_media_id": THUMB_MEDIA_ID,
"author": AUTHOR,
"digest": DIGEST,
"show_cover_pic": SHOW_COVER_PIC(0 / 1),
"content": CONTENT,
"content_source_url": CONTENT_SOURCE_URL
},
//...articles
]
}
参数说明:
- TITLE: 标题
- THUMB_MEDIA_ID: 图文消息的封面图片素材id(必须先上传图文消息内的图片获取URL,见下说明)
- AUTHOR: 作者
- DIGEST: 描述
- SHOW_COVER_PIC: 是否显示封面,0为false,即不显示,1为true,即显示
- CONTENT: 正文内容
- CONTENT_SOURCE_URL: 原文链接
返回数据格式:
{
"media_id":MEDIA_ID
}
将返回的media_id保存下来,后续发送图文消息需要用到。
2.2 上传图文消息内的图片获取URL
在创建图文消息后,需要上传图文消息内的图片,获取URL,作为图文消息的封面图片。
以下为上传图片的接口:
POST https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
请求参数如下:
{
"media": form-data
}
form-data 中需要包含一个字段:media,用 form-data 形式上传文件。
返回数据格式如下:
{
"url":URL
}
将返回的URL保存下来,后续创建图文消息时需要用到。
2.3 发送图文消息
使用以下接口发送图文消息:
POST https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN
请求参数格式如下:
{
"filter":{
"is_to_all":false,
"tag_id":TAG_ID
},
"mpnews":{
"media_id":MEDIA_ID
},
"msgtype":"mpnews",
"send_ignore_reprint":0
}
参数说明:
- is_to_all: 是否群发给所有用户,false为否,true为是
- tag_id: 群发目标的标签id
- media_id: 图文消息素材的ID
- send_ignore_reprint: 表示拒绝用户转发,0表示允许转发,1表示不允许转发(转载请注明出处)
2.4 示例
以下为C#代码示例,演示如何使用高级群发接口发送图文消息:
//获取access_token
var accessToken = GetAccessToken();
//创建图文消息素材
var articles = new List<object>
{
new
{
title = "标题1",
thumb_media_id = "THUMB_MEDIA_ID",
author = "作者1",
digest = "描述1",
show_cover_pic = 0,
content = "内容1",
content_source_url = "https://www.example.com"
},
new
{
title = "标题2",
thumb_media_id = "THUMB_MEDIA_ID",
author = "作者2",
digest = "描述2",
show_cover_pic = 0,
content = "内容2",
content_source_url = "https://www.example.com"
}
};
var result = HttpHelper.PostForObject($"https://api.weixin.qq.com/cgi-bin/material/add_news?access_token={accessToken}", new { articles });
//上传图文消息内的图片获取URL
var thumbMediaId = "THUMB_MEDIA_ID";
var thumbFilePath = @"C:\example.jpg";
result = HttpHelper.Upload($"https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token={accessToken}", "media", thumbFilePath);
var thumbUrl = JObject.Parse(result)["url"].ToString();
//发送图文消息
var tagId = 2;
var mediaId = JObject.Parse(result)["media_id"].ToString();
var data = new
{
filter = new
{
is_to_all = false,
tag_id = tagId
},
mpnews = new
{
media_id = mediaId
},
msgtype = "mpnews",
send_ignore_reprint = 0
};
result = HttpHelper.PostForObject($"https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token={accessToken}", data);
3. 发送客服消息
使用高级群发接口发送客服消息,可以按照以下步骤进行:
3.1 发送客服消息
使用以下接口发送客服消息:
POST https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN
请求参数格式如下:
{
"touser":[
"OPENID1",
"OPENID2"
],
"msgtype": "news",
"news": {
"articles": [
{
"title": "标题1",
"description": "描述1",
"url": "https://www.example.com",
"picurl": "https://www.example.com/example.jpg"
},
{
"title": "标题2",
"description": "描述2",
"url": "https://www.example.com",
"picurl": "https://www.example.com/example.jpg"
}
]
}
}
参数说明:
- touser: 接收消息的用户openid列表
- msgtype: 消息类型,news表示图文消息
- articles: 图文消息的内容,数组,每个元素包含title、description、url、picurl四个字段。
3.2 示例
以下为C#代码示例,演示如何使用高级群发接口发送客服消息:
//获取access_token
var accessToken = GetAccessToken();
//发送客服消息
var tousers = new List<string> { "OPENID1", "OPENID2" };
var articles = new List<object>
{
new
{
title = "标题1",
description = "描述1",
url = "https://www.example.com",
picurl = "https://www.example.com/example.jpg"
},
new
{
title = "标题2",
description = "描述2",
url = "https://www.example.com",
picurl = "https://www.example.com/example.jpg"
}
};
var data = new
{
touser = tousers,
msgtype = "news",
news = new
{
articles = articles
}
};
var result = HttpHelper.PostForObject($"https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token={accessToken}", data);
参考资料
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#微信公众平台开发之高级群发接口 - Python技术站