科技微讯

微信公众号开发各 API 的关系和使用

群发图文消息

概览:

  1. 首先,预先将图文消息中需要用到的图片,使用一个叫“上传图文消息内图片”的接口进行上传,上传成功后获得图片 URL;
  2. 上传图文消息(也就是公众号文章),图文中使用的图片请使用第一步获取的图片 URL;
  3. 使用对用户标签的群发,或对 OpenID 列表的群发,将图文消息群发出去,群发时微信会进行原创校验,并返回群发操作结果;
  4. 在上述过程中,如果需要,还可以预览图文消息、查询群发状态,或删除已群发的消息等。

具体:

const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=${ACCESS_TOKEN}`;
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=${ACCESS_TOKEN}`;
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=${ACCESS_TOKEN}`;
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=${ACCESS_TOKEN}`;
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=${ACCESS_TOKEN}`;
const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token=${ACCESS_TOKEN}`;

群发其他消息

无论是群发图文消息,还是群发图片、视频、语音等消息,关键都是拿到 media_id,上面群发图文消息是通过 media/uploadnews 拿到 media_id,而其他消息类型可以通过素材管理接口拿到 media_id,文档有这些非图文消息的群发说明。

素材管理接口可以分为临时素材管理接口、永久素材管理接口。

新增临时素材

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

const ACCESS_TOKEN = "";
const TYPE = "";
const api = `https://api.weixin.qq.com/cgi-bin/media/upload?access_token=${ACCESS_TOKEN}&type=${TYPE}`;

新增永久素材

material/add_news:新增永久图文,貌似下架了?文档找不到这个 API。media/uploadnews 上传的图文消息也是永久。

const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=${ACCESS_TOKEN}`;

media/uploadimg:上传图文消息内的图片获取 URL。

const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=${ACCESS_TOKEN}`;

material/add_material:新增其他类型永久素材,包括图片。

const ACCESS_TOKEN = "";
const TYPE = "";
const api = `https https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=${ACCESS_TOKEN}&type=${TYPE}`;

视频 media_id

通过素材管理 API 获取到的图片、语音的 media_id 可以直接用 mass/sendall 推送出去,但是获取到的视频 media_id 不能直接推送出去,还需要用 media/uploadvideo 这个 api 把这个 media_id 转换成另一个 media_id。

const ACCESS_TOKEN = "";
const api = `https://api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=${ACCESS_TOKEN}`;
//把下面的数据 post 到 api
const body = {
  media_id: "rF4UdIMfYK3efUfyoddYRMU50zMiRmmt_l0kszupYh_SzrcW5Gaheq05p_lHuOTQ",
  title: "TITLE",
  description: "Description",
};
//api 返回的数据,这次拿到的 media_id 才可以群发
const result = {
  type: "video",
  media_id: "IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",
  created_at: 1398848981,
};

永久素材和临时素材的区别

API 总结

所以无非就是 material/media/mass/ 三类 api,其中 material 后面都有 add,media 后面都有 upload。media/uploadimgmaterial/add_material 都可以返回 URL,返回 URL 的可能就是永久素材吧。

注意 media/uploadnewsmedia/uploadimgmass/send 等接口需要认证过的公众号才能用。

有一个问题,通过 media/uploadnewsmaterial/add_news 获取的 media_id 一样吗?


相关文章:

thumbsup0
thumbsdown0
暂无评论