# 素材管理
<br>
[<h2>微信客服官方API文档入口</h2>](https://open.work.weixin.qq.com/kf/doc/92512/93143/93304)
<br>
<br>
[TOC]
## 概述
企业使用自定义的资源时,比如发送本地图片、视频等。为了实现同一资源文件,一次上传可以多次使用,我们提供了素材管理接口:以media\_id来标识资源文件,实现文件的上传与下载。
## 上传临时素材
把媒体文件上传到微信客服的服务器。
> 素材上传得到media\_id,该media\_id仅三天内有效
**请求方式:**POST(**HTTPS**)
**请求地址:**https://qyapi.weixin.qq.com/cgi-bin/media/upload?access\_token=ACCESS\_TOKEN&type=TYPE
使用multipart/form-data POST上传文件, 文件标识名为”media”
**参数说明:**
| 参数 | 必须 | 说明 |
| --- | --- | --- |
| access\_token | 是 | 调用接口凭证 |
| type | 是 | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file) |
POST的请求包中,form-data中媒体文件标识,应包含有**filename**、filelength、content-type等信息
> filename标识文件展示的名称。比如,使用该media\_id发消息时,展示的文件名由该字段控制
**请求示例:**
~~~
POST https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=accesstoken001&type=file HTTP/1.1Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468Content-Length: 220---------------------------acebdf13572468Content-Disposition: form-data; name="media";filename="wework.txt"; filelength=6Content-Type: application/octet-streammytext---------------------------acebdf13572468--
~~~
**返回数据:**
~~~
{ "errcode": 0, "errmsg": "", "type": "image", "media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0", "created_at": "1380000000"}
~~~
**参数说明:**
| 参数 | 说明 |
| --- | --- |
| type | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file) |
| media\_id | 媒体文件上传后获取的唯一标识,3天内有效 |
| created\_at | 媒体文件上传时间戳 |
**上传的媒体文件限制**
所有文件size必须大于5个字节
* 图片(image):2MB,支持JPG,PNG格式
* 语音(voice) :2MB,播放长度不超过60s,**仅支持**AMR格式
* 视频(video) :10MB,支持MP4格式
* 普通文件(file):20MB
## 获取临时素材
获取微信客服的临时素材。即下载临时的多媒体文件。
**请求方式:**GET(**HTTPS**)
**请求地址:**https://qyapi.weixin.qq.com/cgi-bin/media/get?access\_token=ACCESS\_TOKEN&media\_id=MEDIA\_ID
**参数说明 :**
| 参数 | 必须 | 说明 |
| --- | --- | --- |
| access\_token | 是 | 调用接口凭证 |
| media\_id | 是 | 媒体文件id, 见[上传临时素材](https://www.kancloud.cn/wikizhima/wechatkf-api/2376706) |
**返回说明 :**
正确时返回(和普通的http下载相同,请根据http头做相应的处理):
~~~
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 Xxxx
~~~
错误时返回(这里省略了HTTP首部):
~~~
{ "errcode": 40007, "errmsg": "invalid media_id"}
~~~
**附注:支持断点下载(分块下载)**
本接口支持通过在http header里指定`Range`来分块下载。
在文件很大,可能下载超时的情况下,推荐使用分块下载。
以curl命令进行测试为例,假如我有一个2048字节的文件,
下面是获取文件前1024字节:
> curl ‘https://qyapi.weixin.qq.com/cgi-bin/media/get?access\_token=ACCESS\_TOKEN&media\_id=MEDIA\_ID’ -i -H “Range: bytes=0-1023”
生成如下http请求:
> GET /cgi-bin/media/get?access\_token=ACCESS\_TOKEN&media\_id=MEDIA\_ID HTTP/1.1
> Host: qyapi.weixin.qq.com
> Range: bytes 0-1023
服务器端会返回状态码为 206 Partial Content 的响应:
> HTTP/1.1 206 Partial Content
> Accept-Ranges: bytes
> Content-Range: bytes 0-1023/2048
> Content-Length: 1024
> …
> (1024 Bites binary content)
可以看到响应中有如下特点:
* 状态码是`206 Partial Content`,而非`200 ok`
* 返回的header中,`Accept-Ranges`首部表示可用于定义范围的单位
* 返回的header中,`Content-Range`首部表示这一部分内容在整个资源中所处的位置
更多协议详情参考[RFC: Range Requests](https://tools.ietf.org/html/rfc7233#section-4.1)
<br>
<br>
## 微信客服第三方服务商 - 芝麻客服接入指南
<br>
1. 登陆 [芝麻客服官网](https://xiaokefu.com.cn/index/wechatkefu),点击 [一键接入微信客服组件](https://xiaokefu.com.cn/app/selectionWechatKf)。
</h>
![](https://img.kancloud.cn/af/df/afdfff884685c34bd8b8cdadbc7bb168_500x270.jpg)
</h>
</h>
2. 点击 下一步 ,然后企业微信管理员扫码即可。
</h>
![](https://img.kancloud.cn/4a/90/4a909d691b66bc168fba2cfed4f7f7cd_500x305.jpg)
</h>
</h>
- 微信客服 - 开发指引
- 微信客服 - 客服账号管理
- 微信客服 - 添加客服账号
- 微信客服 - 删除客服账号
- 微信客服 - 修改客服账号
- 微信客服 - 获取客服帐号列表
- 微信客服 - 获取客服帐号链接
- 微信客服 - 客服消息收发
- 微信客服 - 接收消息和事件
- 微信客服 - 发送消息
- 微信客服 - 客户基本信息获取
- 微信客服 - 客服接入
- 微信客服 - 客服接入概述
- 微信客服 - 视频号中接入微信客服
- 微信客服 - 微信内网页接入微信客服
- 微信客服 - 公众号中接入微信客服
- 微信客服 - 小程序中接入微信客服
- 微信客服 - 搜一搜品牌官方区接入微信客服
- 微信客服 - 微信支付凭证中接入微信客服
- 微信客服 - App跳转微信客服
- 微信客服 - 微信小程序打开微信客服
- 微信客服 - 素材管理
- 微信客服 - 帮助其他企业管理客服
- 微信客服 - 全局错误码