微信小程序nodejs發(fā)送模板消息 多次發(fā)送

原文鏈接https://blog.csdn.net/zxg_1991/article/details/79918100

1 微信小程序模板消息說明

  • 基于微信的通知渠道残炮,我們?yōu)殚_發(fā)者提供了可以高效觸達(dá)用戶的模板消息能力呛每,以便實(shí)現(xiàn)服務(wù)的閉環(huán)并提供更佳的體驗(yàn)。
  • 模板推送位置:服務(wù)通知
  • 模板下發(fā)條件:用戶本人在微信體系內(nèi)與頁面有交互行為后觸發(fā)翘县,詳見下發(fā)條件說明
  • 模板跳轉(zhuǎn)能力:點(diǎn)擊查看詳情僅能跳轉(zhuǎn)下發(fā)模板的該帳號(hào)的各個(gè)頁面
    以上是微信小程序開發(fā)文檔介紹,詳細(xì)資料可以打開查看谴分。下面的手機(jī)截圖顯示的是模板消息炼蹦,在微信的服務(wù)通知顯示我們定義的內(nèi)容,當(dāng)前圖片是麥當(dāng)勞的服務(wù)通知截圖狸剃。
    image

2 發(fā)送模板消息代碼

直接上一段發(fā)送模板消息的代碼掐隐,后臺(tái)服務(wù)是nodejs寫的。

function sendTemplateMessage(param) {
  return new Promise((resolve, reject) => {
    let opts = {
      touser: param.openId,
      template_id: param.template_id,
      form_id: param.formId,
      data: {
        "keyword1": {
          "value": param.user,
          "color": "#1d1d1d"
        },
        "keyword2": {
          "value": param.result,
          "color": "#1d1d1d"
        },
        "keyword3": {
          "value": param.time,
          "color": "#1d1d1d"
        }
      }
    }
    let data = {
      method: 'POST',
      url: `https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=${param.accessToken}`,
      body: JSON.stringify(opts),
      header: {
        'content-type': 'application/json' // 默認(rèn)值
      }
    }
    url.post(data).then(result => {
      result = JSON.parse(result)
      if (result.errcode == '0' && result.errmsg === 'ok') {
        resolve(result)
      }
      else {
        reject(result)
      }
    }).catch(err => {
      reject(err)
    })
  })
}

函數(shù)返回promise對(duì)象钞馁,參數(shù)param實(shí)現(xiàn)了全部的發(fā)送模板消息需要的參數(shù)虑省。

3 發(fā)送模板消息接口參數(shù)

通過官方文檔我們可以看到必要的參數(shù)有:

參數(shù) 說明
touser 接收者(用戶)的 openid
template_id 所需下發(fā)的模板消息的id
form_id 表單提交場(chǎng)景下,為 submit 事件帶上的 formId僧凰;支付場(chǎng)景下探颈,為本次支付的 prepay_id
data 模板內(nèi)容,不填則下發(fā)空模板
  • touser训措,接收者的openid伪节,用來識(shí)別接收消息。
  • template_id绩鸣,是在小程序模板消息的個(gè)人模板庫(kù)中定義模板消息的id怀大。
  • form_id,這個(gè)是小程序界面表單提交場(chǎng)景下呀闻,為 submit 事件帶上的 formId化借;支付場(chǎng)景下,為本次支付的 prepay_id捡多。這里主要說明form_id,prepay_id如果你做了微信支付接口蓖康,就會(huì)了解铐炫。
  • data模板內(nèi)容,如下代碼蒜焊,定義了3行數(shù)據(jù)倒信。
data: {
        "keyword1": {
          "value": param.user,
          "color": "#1d1d1d"
        },
        "keyword2": {
          "value": param.result,
          "color": "#1d1d1d"
        },
        "keyword3": {
          "value": param.time,
          "color": "#1d1d1d"
        }
      }

4 表達(dá)提交場(chǎng)景下的form_id

小程序界面組件使用form時(shí),添加report-submit='true'屬性泳梆,在bindsubmit回調(diào)里會(huì)出現(xiàn)form_id鳖悠,所以你需要將form_id上傳到后臺(tái)發(fā)送模板消息的地方來使用,注意一個(gè)用戶對(duì)應(yīng)的form_id只能為該用戶推送模板消息鸭丛,不能為其他用戶使用竞穷,也就是說form_id是和openid綁定使用的,并且有效期是7天鳞溉。下面是一個(gè)簡(jiǎn)單的登錄界面瘾带。

<view class="login-body">
  <form class="form" bindsubmit="formSubmit" report-submit='true'>
    <view class="section">
      <text class='title-text1'>歡迎使用</text>
    </view>
    <view class="section">
      <text class='title-text2'>{{title}}</text>
    </view>
    <view class="section">
      <text class='content-text'>帳號(hào) : </text>
      <input class='input' name="username" type="text" />
    </view>
    <view class="section">
      <text class='content-text'>密碼 : </text>
      <input class='input' name="password" password type="text" />
    </view>
    <view class='section'>
      <button type='primary' form-type='submit'>登錄</button>
    </view>
  </form>
  <form class='section' bindsubmit="toRegister" report-submit='true'>
    <button type='default' form-type='submit'>注冊(cè)</button>
  </form>
</view>
formSubmit: function (e) {
// 顯示當(dāng)前formId
  console.log(e.detail.formId)
}

再次注意,在實(shí)際使用中熟菲,模擬器的formId: "the formId is a mock one"看政,只有真機(jī)下才會(huì)得到正確的formId

5 無限次推送抄罕,打破微信接口限制

由于模板消息必須得到用戶的formId才可以為用戶推送消息允蚣,所以限制了為用戶推送的次數(shù)。所以我們可以預(yù)先收集用戶提交表單的formId呆贿,在需要推送表單的地方使用嚷兔。
前端提交用戶formId和openid數(shù)據(jù),后臺(tái)保存到服務(wù)器中做入,注意formId的有效期是7天冒晰,這樣就可以達(dá)到偽無限次推送,打破微信接口的限制竟块。

formSubmit: function (e) {
    util.unloadFormId(e.detail.formId, app.globalData.openId)
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末壶运,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子浪秘,更是在濱河造成了極大的恐慌蒋情,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耸携,死亡現(xiàn)場(chǎng)離奇詭異棵癣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)违帆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門浙巫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刷后,你說我怎么就攤上這事的畴。” “怎么了尝胆?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵丧裁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我含衔,道長(zhǎng)煎娇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任贪染,我火速辦了婚禮缓呛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杭隙。我一直安慰自己哟绊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布痰憎。 她就那樣靜靜地躺著票髓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铣耘。 梳的紋絲不亂的頭發(fā)上洽沟,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音蜗细,去河邊找鬼裆操。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炉媒,可吹牛的內(nèi)容都是我干的踪区。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼橱野,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼朽缴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起水援,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤密强,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蜗元,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體或渤,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年奕扣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了薪鹦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖池磁,靈堂內(nèi)的尸體忽然破棺而出奔害,到底是詐尸還是另有隱情,我是刑警寧澤地熄,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布华临,位于F島的核電站,受9級(jí)特大地震影響端考,放射性物質(zhì)發(fā)生泄漏雅潭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一却特、第九天 我趴在偏房一處隱蔽的房頂上張望扶供。 院中可真熱鬧,春花似錦裂明、人聲如沸椿浓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轰绵。三九已至,卻和暖如春尼荆,著一層夾襖步出監(jiān)牢的瞬間左腔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工捅儒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留液样,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓巧还,卻偏偏與公主長(zhǎng)得像鞭莽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子麸祷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容