Appearance
基础功能
公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过 media_id 来进行的。素材管理接口对所有认证的订阅号和服务号开放。
获取素材总数
图片和图文消息素材(包括单图文和多图文)的总数上限为 5000,其他素材的总数上限为 1000
$result = WeChat::instance('material')->total();
返回说明
{
"voice_count":COUNT,
"video_count":COUNT,
"image_count":COUNT,
"news_count":COUNT
}
获取素材列表
$param = [
//素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)
"type" => 'image',
//从全部素材的该偏移位置开始返回,0表示从第一个素材 返回
"offset" => 0,
//返回素材的数量,取值在1到20之间
"count" => 10
];
$result =(new WeChat())->instance('material')->lists($param);
临时素材
对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器 3 天后自动删除(所以用户发送给开发者的素材,若开发者需要,应尽快下载到本地),以节省服务器资源,可以查看 官方文档 了解相关信息。
大小限制
- 图片(image): 1M,支持 JPG 格式
- 语音(voice):2M,播放长度不超过 60s,支持 AMR\MP3 格式
- 视频(video):10MB,支持 MP4 格式
- 缩略图(thumb):64KB,支持 JPG 格式
新增素材
临时素材微信官网保存 3 天,第一个参数为类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)等,第二个参数为上传的文件。
$media = WeChat::instance('material')->addMedia('image', '1.png');
下载素材
//上传图片素材
$result = WeChat::instance('material')->upload('image', '1.png');
//获取临时素材
WeChat::instance('material')->getMedia($result['media_id']);
永久素材
- 新增的永久素材也可以在公众平台官网素材管理模块中看到
- 永久素材的数量是有上限的,请谨慎新增。图文消息素材和图片素材的上限为 5000,其他类型为 1000
新增素材
除图文消息类型以外的素材,如图片、音频等。
$result = WeChat::instance('material')->addMaterial('image', '1.png');
获取素材
//$media_id 为使用新增永久素材上传的素材media_id
$result = WeChat::instance('material')->getMaterial($media_id);
删除素材
//$media_id 为素材media_id
$result = WeChat::instance('material')->delMaterial($media_id);
图文素材
图文素材属于永久类型的素材,上传后可以在微信管理后台查看到。
新增图片素材
/上传永久素材
$instance = WeChat::instance('material');
$material = $instance->addMaterial('image', 'tests/images/user.jpg');
新增图文素材
$articles = [
'articles' => [
[
'title' => '后盾人',
//图文消息的封面图片素材id(必须是永久消息的mediaID)
'thumb_media_id' => $material['media_id'],
//作者
'author' => '后盾网',
//图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空
'digest' => '摘要信息...',
//1 显示封面 0 不显示
'show_cover_pic' => 1,
//图文内容,必须少于2万字符
'content' => '图文内容...',
//图文消息的原文地址,即点击“阅读原文”后的URL
'content_source_url' => 'http://houdunwang.com',
],
],
];
//添加图文,返回为新增的图文消息素材的media_id。
$instance = WeChat::instance('material');
$result = $instance->addNews($articles);
//上传成功的图文消息media_id,可用于群发消息使用
echo $result['media_id'];
修改图文素材
$article = [
//要修改的图文消息的id
"media_id" => 'xxxxx',
//要更新的文章在图文消息中的位置(多图文消息时,此字段才有意义),第一篇为0
"index" => 0,
'articles' =>[
'title' => '后盾网',
//图文消息的封面图片素材id(必须是永久mediaID)
'thumb_media_id' => $data['media_id'],
//作者
'author' => '后盾网',
//图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空
'digest' => '摘要信息...',
//1 显示封面 0 不显示
'show_cover_pic' => 1,
//图文内容,必须少于2万字符
'content' => '图文内容...',
//图文消息的原文地址,即点击“阅读原文”后的URL
'content_source_url' => 'http://houdunwang.com'
]
];
$result = (new WeChat())->instance('material')->editNews($article);
返回值
[
"errcode": 9001034,//错误号 成功时为0
"errmsg": '错误提示信息'
]
上传图文图片
本接口所上传的图片不占用公众号的素材库中图片数量的 5000 个的限制。图片仅支持 jpg/png 格式,大小必须在 1MB 以下。
$instance = WeChat::instance('material');
$material = $instance->addNewsImage('tests/images/user.jpg');
echo $material['url'];