3.公众号 - 3.ILazyMaterials
UploadTempMaterialAsync
-
作用 : 新增临时素材
- 临时素材media_id是可复用的
- 媒体文件在微信后台保存时间为3天,即3天后media_id失效
- 传临时素材的格式、大小限制与公众平台官网一致
- 图片(image): 10M,支持PNG\JPEG\JPG\GIF格式
- 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
- 视频(video):10MB,支持MP4格式
- 缩略图(thumb):64KB,支持JPG格式
public enum MediaType { image, voice, video, thumb }
- 需使用https调用本接口
-
官方文档 : https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/New_temporary_materials.html
-
参数
- fullFilePath : 素材完整路径
- mediaType : 素材类型
-
返回值 dynamic
{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}
-
示例代码
var root = Directory.GetCurrentDirectory(); var fullFilePath = root + @"\Materials\image.jpg"; var imageRes = _lazyMaterials.UploadTempMaterialAsync(fullFilePath, mediaType).Result;
GetTempMaterialAsync
-
作用 : 获取临时素材
-
官方文档 : https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Get_temporary_materials.html
-
参数
- media_id : 媒体文件ID
-
返回值 object
-
如果返回的是视频消息素材, 则为dynamic
{ "video_url":DOWN_URL }
-
否则为媒体的字节数组, byte[]
-
-
示例代码
var media_id = "F-0-E8F_ai7fL8JYYo_FcAjUoFWK5PbA12Q1Dkag5hyX57qs4GbJazj34kBNbeEi"; var material = await _lazyMaterials.GetTempMaterialAsync(media_id);
CreateNewsMaterialAsync
-
作用 : 上传永久图文素材
- 永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用
- 公众号的素材库保存总数量有上限:图文消息素材、图片素材上限为100000,其他类型为1000
- 传临时素材的格式、大小限制与公众平台官网一致
- 图片(image): 10M,支持PNG\JPEG\JPG\GIF格式
- 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
- 视频(video):10MB,支持MP4格式
- 缩略图(thumb):64KB,支持JPG格式
- 图文消息的具体内容中,微信后台将过滤外部的图片链接,图片url需通过"上传图文消息内的图片获取URL"接口上传图片获取
- "上传图文消息内的图片获取URL"接口所上传的图片,不占用公众号的素材库中图片数量的100000个的限制,图片仅支持jpg/png格式,大小必须在1MB以下
- 图文消息支持正文中插入自己帐号和其他公众号已群发文章链接的能力
-
官方文档 : https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Adding_Permanent_Assets.html
-
参数
- articles : 图文素材的列表(List
)
public class ArticleModel { /// <summary> /// 标题(必填) /// </summary> public string title { get; set; } /// <summary> /// 图文消息的封面图片素材id(必须是永久mediaID)(必填) /// </summary> public string thumb_media_id { get; set; } /// <summary> /// 作者(非必填) /// </summary> public string author { get; set; } /// <summary> /// 图文消息的摘要(非必填) /// </summary> public string digest { get; set; } /// <summary> /// 是否显示封面(必填), 1或者0 /// </summary> public string show_cover_pic { get; set; } /// <summary> /// 图文消息的具体内容,支持HTML标签(必填) /// </summary> public string content { get; set; } /// <summary> /// 图文消息的原文地址,即点击“阅读原文”后的URL(必填) /// </summary> public string content_source_url { get; set; } /// <summary> /// 是否打开评论,0不打开,1打开(非必填) /// </summary> public int need_open_comment { get; set; } /// <summary> /// 是否粉丝才可评论,0所有人可评论,1粉丝才可评论(非必填) /// </summary> public int only_fans_can_comment { get; set; } }
- articles : 图文素材的列表(List
-
示例代码
var articles = new List<ArticleModel>(); var article = new ArticleModel(); article.title = "test.article.title"; article.thumb_media_id = "AtzPvqLEZb0DjSNkZtUljXnrWFV2ord_RJVY5VXSz4k"; article.show_cover_pic = "1"; article.content = "test.article.content"; article.content_source_url = "https://test.lazywechat.cn/"; articles.Add(article); var res = _lazyMaterials.CreateNewsMaterialAsync(articles).Result;
EditMaterialAsync
-
作用 : 修改永久图文素材
-
参数
- media_id : 要修改的图文消息的id
- index : 要更新的文章在图文消息中的位置(多图文消息时,此字段才有意义),第一篇为0
- article : 图文消息内容
-
返回值 : dynamic
{ "errcode": ERRCODE, "errmsg": ERRMSG }
-
示例代码
var article = new ArticleModel(); article.title = "test.article.title2"; article.thumb_media_id = "AtzPvqLEZb0DjSNkZtUljSmrMmWCvvl8D-enblyLT04"; article.show_cover_pic = "1"; article.content = "test.article.content2"; article.content_source_url = "https://test.lazywechat.cn/"; var res = _lazyMaterials.EditMaterialAsync("AtzPvqLEZb0DjSNkZtUljT3Z9KEetSiZcthq7wDhCsU", 0, article).Result;
UploadMaterialAsync
-
作用 : 上传其他永久素材
-
官方文档 : https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Adding_Permanent_Assets.html
-
有两个重载方法
-
重载方法一 : 上传image, voice, thumb
Task<dynamic> UploadMaterialAsync(string fullFilePath, MediaType mediaType);
- 参数
- fullFilePath : 素材完整路径
- mediaType : 素材类型
- 参数
-
重载方法二 : 上传 video
Task<dynamic> UploadMaterialAsync(string fullFilePath, string title, string introduction);
- 参数
- fullFilePath : 素材完整路径
- title : 视频素材的标题
- introduction : 视频素材的描述
- 参数
-
-
返回值 dynamic
{ "media_id":MEDIA_ID, "url":URL }
-
示例代码
var root = Directory.GetCurrentDirectory(); var fullFilePath = root + @"\Materials\video.mp4"; var mediaType = MediaType.video var videoRes = await _lazyMaterials.UploadMaterialAsync(fullFilePath, "VIDEO_TITLE", "INTRODUCTION"); var media_id = videoRes.media_id;
var root = Directory.GetCurrentDirectory(); var fullFilePath = root + @"\Materials\image.jpg"; var mediaType = MediaType.image var imageRes = await _lazyMaterials.UploadMaterialAsync(fullFilePath, mediaType); var media_id = imageRes.media_id;
UploadImgMaterialAsync
-
用作 : 上传图文消息内的图片获取URL
-
官方文档 : https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Adding_Permanent_Assets.html
-
参数
- fullImgFilePath : 图片完整路径
-
返回值 dynamic
{ "url": "http://mmbiz.qpic.cn/mmbiz/gLO17UPS6FS2xsypf378iaNhWacZ1G1UplZYWEYfwvuU6Ont96b1roYs CNFwaRrSaKTPCUdBK9DgEHicsKwWCBRQ/0" }
-
示例代码
var root = Directory.GetCurrentDirectory(); var fullFilePath = root + @"\Materials\1.jpg"; var imageRes = await _lazyMaterials.UploadImgMaterialAsync(fullFilePath);
GetMaterialAsync
-
作用: 获取永久素材
-
官方文档 : https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Getting_Permanent_Assets.html
-
参数
- media_id : 媒体文件ID
-
返回值 object
-
如果返回的是图文素材, 则为dynamic
{ "news_item": [ { "title":TITLE, "thumb_media_id"::THUMB_MEDIA_ID, "show_cover_pic":SHOW_COVER_PIC(0/1), "author":AUTHOR, "digest":DIGEST, "content":CONTENT, "url":URL, "content_source_url":CONTENT_SOURCE_URL }, //多图文消息有多篇文章 ] }
-
如果返回的是视频消息素材, 则为dynamic
{ "title":TITLE, "description":DESCRIPTION, "down_url":DOWN_URL, }
-
否则为媒体的字节数组, byte[]
-
-
示例代码
var material = await _lazyMaterials.GetMaterialAsync(media_id);
GetMaterialsAsync
-
作用 : 获取永久素材的列表
-
官方文档 : https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Get_materials_list.html
-
参数
- type : 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)
- offset : 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回
- count : 返回素材的数量,取值在1到20之间
-
返回值 dynamic
-
图文消息
{ "total_count": TOTAL_COUNT, "item_count": ITEM_COUNT, "item": [{ "media_id": MEDIA_ID, "content": { "news_item": [{ "title": TITLE, "thumb_media_id": THUMB_MEDIA_ID, "show_cover_pic": SHOW_COVER_PIC(0 / 1), "author": AUTHOR, "digest": DIGEST, "content": CONTENT, "url": URL, "content_source_url": CONTETN_SOURCE_URL }, //多图文消息会在此处有多篇文章 ] }, "update_time": UPDATE_TIME }, //可能有多个图文消息item结构 ] }
-
其他消息
{ "total_count": TOTAL_COUNT, "item_count": ITEM_COUNT, "item": [{ "media_id": MEDIA_ID, "name": NAME, "update_time": UPDATE_TIME, "url":URL }, //可能会有多个素材 ] }
-
-
示例代码
string[] media = { "image", "video", "voice", "news" }; for (int i = 0; i < media.Length; i++) { var res = _lazyMaterials.GetMaterialsAsync(media[i], 0, 20).Result; }
GetMaterialsCountAsync
-
作用 : 获取永久素材的总数
-
返回值 dynamic
{ "voice_count":COUNT, "video_count":COUNT, "image_count":COUNT, "news_count":COUNT }
-
示例代码
var total_count = await _lazyMaterials.GetMaterialsCountAsync();
DeleteMaterialAsync
-
作用 : 删除素材
-
官方文档 : https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Deleting_Permanent_Assets.html
-
返回值
{ "errcode":ERRCODE, "errmsg":ERRMSG }
-
示例代码
var res = await _lazyMaterials.DeleteMaterialAsync(media_id);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!