真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解nodejs微信公眾號開發(fā)——5.素材管理接口

上一篇文章:nodejs微信公眾號開發(fā)——4.自動回復(fù)各種消息,我們實(shí)現(xiàn)了被動回復(fù)文字和圖文,回復(fù)圖片失敗,因為需要先獲取通過素材管理接口上傳多媒體文件而得到的MediaId,這一節(jié)們就來實(shí)現(xiàn)素材管理的接口。可參看:公眾平臺開發(fā)者文檔

創(chuàng)新互聯(lián)服務(wù)項目包括鳳山網(wǎng)站建設(shè)、鳳山網(wǎng)站制作、鳳山網(wǎng)頁制作以及鳳山網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,鳳山網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到鳳山省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

1. 新增臨時素材

臨時素材顧名思義是臨時的,上傳后一定時間就被清理掉,適用于一些有時效性的圖文鏈接。關(guān)于臨時素材需要注意的點(diǎn):

  1. 對于臨時素材,每個素材(media_id)會在開發(fā)者上傳或粉絲發(fā)送到微信服務(wù)器3天后自動刪除(所以用戶發(fā)送給開發(fā)者的素材,若開發(fā)者需要,應(yīng)盡快下載到本地),以節(jié)省服務(wù)器資源。
  2. media_id是可復(fù)用的。
  3. 素材的格式大小等要求與公眾平臺官網(wǎng)一致。具體是,圖片大小不超過2M,支持bmp/png/jpeg/jpg/gif格式,語音大小不超過5M,長度不超過60秒,支持mp3/wma/wav/amr格式
  4. 需使用https調(diào)用本接口。

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

1.1 實(shí)現(xiàn)uploadTempMaterial方法

uploadTempMaterial是用來上傳臨時素材,直接在Wechat的原型鏈上添加:

Wechat.prototype.uploadTempMaterial = function(type,filepath){
  var that = this;
  var form = { //構(gòu)造表單
    media:fs.createReadStream(filepath)
  }
  return new Promise(function(resolve,reject){
    that.fetchAccessToken().then(function(data){

      var url = api.uploadMaterial + 'access_token=' + data.access_token + '&type=' + type;
      request({url:url,method:'POST',formData:form,json:true}).then(function(response){
        var _data = response.body;
        if(_data){
          resolve(_data)
        }else{
          throw new Error('upload material failed!');
        }
      }).catch(function(err){
        reject(err);
      });
    });
  });
}

代碼中的fetchAccessToken用以獲取access_token,修改回復(fù)數(shù)字2的代碼:

else if(content === '2'){
  var data = yield wechatApi.uploadTempMaterial('image',__dirname+'/public/king.jpg');
  reply = {
    type:'image',
    mediaId:data.media_id
  }
}

先將本地的一張圖片上傳到臨時素材接口,獲取media_id,封裝到回復(fù)消息里面去。同樣的方法適用于語音,視頻等:

詳解nodejs微信公眾號開發(fā)——5.素材管理接口

2. 新增永久素材

永久素材回永遠(yuǎn)存儲在微信后臺服務(wù)器上,永不失效。關(guān)于永久素材有一下幾個特點(diǎn):

  1. 新增的永久素材也可以在公眾平臺官網(wǎng)素材管理模塊中看到
  2. 永久素材的數(shù)量是有上限的,請謹(jǐn)慎新增。圖文消息素材和圖片素材的上限為5000,其他類型為1000
  3. 素材的格式大小等要求與公眾平臺官網(wǎng)一致。具體是,圖片大小不超過2M,支持bmp/png/jpeg/jpg/gif格式,語音大小不超過5M,長度不超過60秒,支持mp3/wma/wav/amr格式
  4. 調(diào)用該接口需https協(xié)議

新增永久圖文素材請求地址:https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN

新增永久圖片請求地址:https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN

新增其他類型永久素材請求地址:https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN

2.1 實(shí)現(xiàn)uploadPermMaterial方法

uploadPermMaterialuploadTempMaterial方法基本是類似的,只是永久素材的的上傳分為三類,需要判斷一下傳入的類型。

Wechat.prototype.uploadPermMaterial = function(type,material){
  var that = this;
  var form = {}
  var uploadUrl = '';
  if(type === 'pic') uploadUrl = api.uploadPermPics;
  if(type === 'other') uploadUrl = api.uploadPermOther;
  if(type === 'news'){
    uploadUrl = api.uploadPermNews;
    form = material
  }else{
    form.media = fs.createReadStream(material);
  }
  return new Promise(function(resolve,reject){
    that.fetchAccessToken().then(function(data){
      var url = uploadUrl + 'access_token=' + data.access_token;
      var opts = {
        method:'POST',
        url:url,
        json:true
      }
      (type == 'news') ? (opts.body = form) : (opts.formData = form); //上傳數(shù)據(jù)的方式不同
      request(opts).then(function(response){
        var _data = response.body;
        if(_data){
          resolve(_data)
        }else{
          throw new Error('upload permanent material failed!');
        }
      }).catch(function(err){
        reject(err);
      });
    });
  });
}

:雖然實(shí)現(xiàn)了永久素材上傳,但是測試賬號也不是每一次都能測試成功,未經(jīng)過認(rèn)證的訂閱號也不支持永久素材的上傳。

3. 獲取素材鏈接

由于獲取臨時素材和獲取永久素材的差異性不大,直接放在一個函數(shù)里完成。

Wechat.prototype.getMaterial = function(mediaId,permanent){
  var that = this;
  var getUrl = permanent ? api.getPermMaterial : api.getTempMaterial;
  return new Promise(function(resolve,reject){
    that.fetchAccessToken().then(function(data){
      var url = getUrl + 'access_token=' + data.access_token;
      if(!permanent) url += '&media_id=' + mediaId;
      resolve(url)
    });
  });
}

4. 刪除永久素材

刪除永久素材就比較簡單了,只需傳入一個mediaId即可:

Wechat.prototype.delMaterial = function(mediaId){
  var that = this;
  return new Promise(function(resolve,reject){
    that.fetchAccessToken().then(function(data){
      var url = api.delPermMaterial + 'access_token=' + data.access_token;
      var form = {media_id:mediaId}
      request({url:url,method:'POST',formData:form,json:true}).then(function(response){
        var _data = response.body;
        if(_data.errcode === '0'){
          resolve();
        }else{
          throw new Error('delete permanent material failed!');
        }
      }).catch(function(err){
        reject(err);
      });
    });
  });
}

5.其他

還有修改永久圖文素材、獲取素材總數(shù)、獲取素材列表功能由于本項目中不會用到,就不一一實(shí)現(xiàn)了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


分享標(biāo)題:詳解nodejs微信公眾號開發(fā)——5.素材管理接口
文章URL:http://weahome.cn/article/jgdceg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部