06_微信的素材和图片消息处理

临时素材:

公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。

请注意:

1、对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器3天后自动删除(所以用户发送给开发者的素材,若开发者需要,应尽快下载到本地),以节省服务器资源。
2、media_id是可复用的。
3、素材的格式大小等要求与公众平台官网一致。具体是,图片大小不超过2M,支持bmp/png/jpeg/jpg/gif格式,语音大小不超过2M,长度不超过60秒(公众平台官网可以在文章中插入小于30分钟的语音,但这些语音不能用于群发等场景,只能放在文章内,这方面接口暂不支持),支持mp3/wma/wav/amr格式
4、需使用https调用本接口。

1.新增临时素材

1.1.调用接口:(POST/FORM,需使用https)

https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

1.2.调用实例:

curl -F [email protected] "https://api.weixin.qq.com/cgi-bin/medi/upload?access_token=ACCESS_TOKEN&type=TYPE"

1.3.参数说明:

ACCESS_TOKEN:调用接口凭证,必须

TYPE:媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),必须

MEDIA:form-data中媒体文件标识,有filename、filelength、content-type等信息,必须

1.4.返回实例:

{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}

TYPE:媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)

media_id:媒体文件上传后,获取时的唯一标识

created_at:媒体文件上传时间戳

1.5.返回错误实例:

{"errcode":40004,"errmsg":"invalid media type"}

1.6.注意事项

上传的临时多媒体文件有格式和大小限制,如下:

  • 图片(image): 2M,支持bmp/png/jpeg/jpg/gif格式
  • 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
  • 视频(video):10MB,支持MP4格式
  • 缩略图(thumb):64KB,支持JPG格式

媒体文件在后台保存时间为3天,即3天后media_id失效。

2.获取临时素材

2.1.接口说明

视频文件不支持https下载,调用该接口需http协议。

2.2.调用接口(GET,https调用)

https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID

2.3.调用实例

curl -I -G "https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"

2.4.参数说明

access_token:调用接口凭证,必须

media_id:媒体文件ID,必须

2.5.返回说明

HTTP/1.1 200 OK

Connection: close

Content-Type: image/jpeg

Content-disposition: attachment; filename="MEDIA_ID.jpg"

Date: Sun, 06 Jan 2013 10:20:18 GMT

Cache-Control: no-cache, must-revalidate

Content-Length: 339721

curl -G "https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"2.6.返回错误实例

{"errcode":40007,"errmsg":"invalid media_id"}

3.新增永久素材

3.1.接口说明

最近更新,永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用,图片将被屏蔽)。

3.1.1、新增的永久素材也可以在公众平台官网素材管理模块中看到

3.1.2、永久素材的数量是有上限的,请谨慎新增。图文消息素材和图片素材的上限为5000,其他类型为1000

3.1.3、素材的格式大小等要求与公众平台官网一致。具体是,图片大小不超过2M,支持bmp/png/jpeg/jpg/gif格式,语音大小不超过5M,长度不超过60秒(公众平台官网可以在文章中插入小于30分钟的语音,但这些语音不能用于群发等场景,只能放在文章内,这方面接口暂不支持),支持mp3/wma/wav/amr格式

3.1.4、调用该接口需https协议

3.2.调用接口(post方法)

https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN

3.3.调用实例

{

"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结构,最多8段

]

}

3.4.参数说明

title:标题,必须

thumb_media_id: 图文消息的封面图片素材id(必须是永久mediaID),必须

author:作者,必须

digest:图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空,必须

show_cover_pic:是否显示封面,0为false,即不显示,1为true,即显示,必须

content:图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS,必须

content_source_url:图文消息的原文地址,即点击“阅读原文”后的URL,必须

3.5.返回说明

{

"media_id":MEDIA_ID

}

3.6.注意事项

在图文消息的具体内容中,将过滤外部的图片链接,开发者可以通过下述接口上传图片得到URL,放到图文内容中使用。3.7.上传图文消息内的图片

3.7.1.新增说明

本接口所上传的图片不占用公众号的素材库中图片数量的5000个的限制。图片仅支持jpg/png格式,大小必须在1MB以下。

3.7.2.调用接口(post请求)

https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN

3.7.3.调用实例

curl -F [email protected] "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN"

3.7.4.参数说明

access_token:调用接口凭证,必须

media:form-data中媒体文件标识,有filename、filelength、content-type等信息,必须

3.7.5.返回说明

"url": "http://mmbiz.qpic.cn/mmbiz/gLO17UPS6FS2xsypf378iaNhWacZ1G1UplZYWEYfwvuU6Ont96b1roYs CNFwaRrSaKTPCUdBK9DgEHicsKwWCBRQ/0"

4.新增其它类型永久素材

4.1.接口说明

通过POST表单来调用接口,表单id为media,包含需要上传的素材内容,有filename、filelength、content-type等信息。请注意:图片素材将进入公众平台官网素材管理模块中的默认分组。

4.2.调用接口(post方法)

https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN

4.3.参数说明

access_token: 调用接口凭证,必须

type: 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),必须

media:form-data中媒体文件标识,有filename、filelength、content-type等信息,必须

4.4.新增永久视频素材注意事项

在上传视频素材时需要POST另一个表单,id为description,包含素材的描述信息,内容格式为JSON,格式如下:

{
  "title":VIDEO_TITLE,
  "introduction":INTRODUCTION
}

4.4.1.调用实例

curl "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN" -F [email protected] -F description='{"title":VIDEO_TITLE, "introduction":INTRODUCTION}'

4.4.2.参数说明

title:视频素材的标题

introduction:视频素材的描述

4.4.3.返回说明

{

"media_id":MEDIA_ID,

"url":URL

}

4.4.4.返回参数说明

media_id: 新增的永久素材的media_id

url:新增的图片素材的图片URL(仅新增图片素材时会返回该字段)

4.4.5.返回实例

{"errcode":40007,"errmsg":"invalid media_id"}

5.获取永久素材

5.1.接口说明

在新增了永久素材后,开发者可以根据media_id来获取永久素材,需要时也可保存到本地。

请注意:

1、获取永久素材也可以获取公众号在公众平台官网素材管理模块中新建的图文消息、图片、语音、视频等素材(但需要先通过获取素材列表来获知素材的media_id)
2、临时素材无法通过本接口获取
3、调用该接口需https协议

5.2.调用接口(post方法,https调用)

https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=ACCESS_TOKEN

5.3.参数说明

access_token:调用接口凭证,必须

media_id:要获取的素材的media_id,必须

5.4.返回说明

如果请求的素材为图文消息,则响应如下:

{
 "news_item":
 [
     {
     "title":TITLE,
     "thumb_media_id":THUMB_MEDIA_ID,
     "thumb_url":THUMB_URL,
     "show_cover_pic":SHOW_COVER_PIC(0/1),
     "author":AUTHOR,
     "digest":DIGEST,
     "content":CONTENT,
     "url":URL,
     "content_source_url":CONTENT_SOURCE_URL
     },
     //多图文消息有多篇文章
  ]
}

如果返回的是视频消息素材,则内容如下:

{
  "title":TITLE,
  "description":DESCRIPTION,
  "down_url":DOWN_URL,
}

其他类型的素材消息,则响应的直接为素材的内容,开发者可以自行保存为文件。例如:

curl "https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=ACCESS_TOKEN" -d '{"media_id":"61224425"}' > file

5.5.返回参数说明

title:图文消息的标题

thumb_media_id:图文消息的封面图片素材id(必须是永久mediaID)

thumb_url:图文消息的封面图片的地址,第三方开发者也可以使用这个URL下载图片到自己服务器中,然后显示在自己网站上

show_cover_pic:是否显示封面,0为false,即不显示,1为true,即显示

author:作者

digest:图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空

content:图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS

url:图文页的URL

content_source_url: 图文消息的原文地址,即点击“阅读原文”后的URL

5.6.返回错误实例

{"errcode":40007,"errmsg":"invalid media_id"}

6.删除永久素材

6.1.接口说明

在新增了永久素材后,开发者可以根据本接口来删除不再需要的永久素材,节省空间。

请注意:

1、请谨慎操作本接口,因为它可以删除公众号在公众平台官网素材管理模块中新建的图文消息、语音、视频等素材(但需要先通过获取素材列表来获知素材的media_id)
2、临时素材无法通过本接口删除
3、调用该接口需https协议

 6.3.调用接口(post方法)

https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=ACCESS_TOKEN

6.4.参数说明

access_token: 调用接口凭证,必须

media_id:要获取的素材的media_id,必须

6.5.返回说明

{
    "errcode":ERRCODE,
    "errmsg":ERRMSG
}

 正常情况下调用成功时,errcode将为0。

 7.修改永久图文素材

7.1.接口说明

开发者可以通过本接口对永久图文素材进行修改。

请注意:

1、也可以在公众平台官网素材管理模块中保存的图文消息(永久图文素材)
2、调用该接口需https协议

 7.2.调用接口(post方法)

https://api.weixin.qq.com/cgi-bin/material/update_news?access_token=ACCESS_TOKEN

7.3.调用实例

{
  "media_id":MEDIA_ID,
  "index":INDEX,
  "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
    }
}

7.4.参数说明:

media_id:要修改的图文消息的id,必须

index:要更新的文章在图文消息中的位置(多图文消息时,此字段才有意义),第一篇为0,必须

title:标题,必须

thumb_media_id:图文消息的封面图片素材id(必须是永久mediaID),必须

author:作者,必须

digest:图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空,必须

show_cover_pic:是否显示封面,0为false,即不显示,1为true,即显示,必须

content: 图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS,必须

content_source_url:图文消息的原文地址,即点击“阅读原文”后的URL,必须

7.5.返回说明

{

"errcode": ERRCODE,

"errmsg": ERRMSG

}

正确时errcode的值应为0。

8.获取素材总数

8.1.接口说明

开发者可以根据本接口来获取永久素材的列表,需要时也可保存到本地。

请注意:

1.永久素材的总数,也会计算公众平台官网素材管理中的素材
2.图片和图文消息素材(包括单图文和多图文)的总数上限为5000,其他素材的总数上限为1000
3.调用该接口需https协议

8.2.调用接口(get方法)

https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=ACCESS_TOKEN

8.3.返回说明

{

"voice_count":COUNT,

"video_count":COUNT,

"image_count":COUNT,

"news_count":COUNT

}

8.4.返回参数说明

voice_count: 语音总数量

video_count: 视频总数量

image_count: 图片总数量

news_count:图文总数量

8.5.返回失败实例

{"errcode":-1,"errmsg":"system error"}

9.获取素材列表

9.1.接口说明:

在新增了永久素材后,开发者可以分类型获取永久素材的列表。

请注意:

1、获取永久素材的列表,也会包含公众号在公众平台官网素材管理模块中新建的图文消息、语音、视频等素材(但需要先通过获取素材列表来获知素材的media_id)
2、临时素材无法通过本接口获取
3、调用该接口需https协议

9.2.调用接口(post方法)

https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN

9.3.调用实例

{

"type":TYPE,

"offset":OFFSET,

"count":COUNT

}

9.4.参数说明

type: 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news),必须

offset:从全部素材的该偏移位置开始返回,0表示从第一个素材 返回,必须

count: 返回素材的数量,取值在1到20之间,必须

9.5.返回说明

永久图文消息素材列表的响应如下:

{
   "total_count": TOTAL_COUNT,
   "item_count": ITEM_COUNT,
   "item": [{
       "media_id": MEDIA_ID,
       "content": {
           "news_item": [{
               "title": TITLE,
               "thumb_media_id": THUMB_MEDIA_ID,
               "thumb_url": THUMB_URL,
               "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
   },
   //可能会有多个素材
   ]
}

9.6.返回参数说明

total_count:该类型的素材的总数

item_count:本次调用获取的素材的数量

title: 图文消息的标题

thumb_media_id:图文消息的封面图片素材id(必须是永久mediaID)

thumb_url: 图文消息的封面图片的地址,第三方开发者也可以使用这个URL下载图片到自己服务器中,然后显示在自己网站上

show_cover_pic: 是否显示封面,0为false,即不显示,1为true,即显示

author: 作者

digest:图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空

content:图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS

url:图文页的URL,或者,当获取的列表是图片素材列表时,该字段是图片的URL

content_source_url: 图文消息的原文地址,即点击“阅读原文”后的URL

update_time:这篇图文消息素材的最后更新时间

name:文件名称

9.7.错误返回实例:

{"errcode":40007,"errmsg":"invalid media_id"}

猜你喜欢

转载自yansxjl.iteye.com/blog/2354179