1. 程式人生 > >微信公眾號如何無限制的定向推送訊息--模板訊息的應用

微信公眾號如何無限制的定向推送訊息--模板訊息的應用

微信公眾號如何無限制的定向推送訊息–模板訊息的應用

最近開發的OA平臺有一個需求:將待辦訊息推送到微信公眾號的指定使用者。但是為了避免使用者受到垃圾訊息的騷擾,微信對相關的介面做了非常嚴格的限制。
查閱開發文件,公眾號主動推送訊息有三種介面:

  • 群發訊息
  • 客服訊息
  • 模板訊息

群發訊息

存在條數限制,不適合推送待辦訊息;

客服訊息

雖然沒有條數限制,但是確需要48小時內使用者主動傳送過訊息,這也無法滿足要求。

模板訊息

而唯一能符合推送待辦訊息要求的只剩下模板訊息這一種。
其實大家對模板訊息並不陌生。

招商銀行公眾號推送的消費資訊屬於模板訊息

那麼如何實現模板訊息的推送呢!
首先 申請:微信公眾平臺–>功能–>新增功能外掛–>模板訊息,選擇行業,填寫申請理由,等待稽核通過
第二步

選擇適合的模板,獲取模板ID
這是我選擇的模板

第三步 後臺邏輯實現
檢視開發文件,具體分兩步

ONE:獲取模板ID

剛剛已經獲取

TWO:請求介面

POST請求 https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
其中,獲取ACCESS_TOKEN是關鍵
POST請求的json的格式如下
{
“touser”:”OPENID”,
“template_id”:”ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY”,
“url”:”http://weixin.qq.com/download

“,
“topcolor”:”#FF0000”,
“data”:{
“User”: {
“value”:”黃先生”,
“color”:”#173177”
},
“Date”:{
“value”:”06月07日 19時24分”,
“color”:”#173177”
},
“CardNumber”:{
“value”:”0426”,
“color”:”#173177”
},
“Type”:{
“value”:”消費”,
“color”:”#173177”
},
“Money”:{
“value”:”人民幣260.00元”,
“color”:”#173177”
},
“DeadTime”:{
“value”:”06月07日19時24分”,
“color”:”#173177”
},
“Left”:{
“value”:”6504.09”,
“color”:”#173177”
}
}
}

我的程式碼實現

package com.weixin.handler;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
import org.weixin4j.Configuration;
import org.weixin4j.Weixin;
import org.weixin4j.WeixinException;
import org.weixin4j.WeixinSupport;
import org.weixin4j.http.HttpClient;
import org.weixin4j.http.HttpsClient;
import org.weixin4j.http.OAuthToken;
import org.weixin4j.http.Response;
import org.weixin4j.message.Articles;

import com.alibaba.fastjson.JSONObject;
public class WeixinMessagePush extends WeixinSupport {

    Weixin weixin=new Weixin();
    OAuthToken oAuthToken=null;
    public WeixinMessagePush(){

    }

    public WeixinMessagePush(String appId,String secret){

        try {
            oAuthToken = weixin.login(appId, secret);
        } catch (WeixinException e) 
            e.printStackTrace();
        }
    }
    public void templateMessagePush(String openId,String title,String description) throws WeixinException{
        JSONObject json=new JSONObject();
        JSONObject text=new JSONObject();
        JSONObject keyword1=new JSONObject();
        JSONObject keyword2=new JSONObject();
        JSONObject first=new JSONObject();
        JSONObject remark=new JSONObject();
        json.put("touser",openId);
        json.put("template_id","vrnaSzdFCyCZOuRtGLbbx-zysOF14mNGlIduURC335w");
        json.put("url", "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx22c699fe80c91471&redirect_uri=http%3A%2F%2Fwewill9014.s1.natapp.cc%2FPTCOA%2Fservlet%2FOAuthAPIServlet&response_type=code&scope=snsapi_userinfo&state=state#wechat_redirect");
        json.put("topcolor","#ff1a75");
        first.put("value",title);
//      first.put("color","#007f80");
        keyword1.put("value",description );
//      keyword1.put("color", "#007f80");
        keyword2.put("value","籤批" );
//      keyword2.put("color","#007f80");
        remark.put("value", "點選可進行處理");
        remark.put("color", "#007f80");
        text.put("keyword1", keyword1);
        text.put("keyword2", keyword2);
        text.put("first", first);
        text.put("remark",remark);
        json.put("data", text);

        //建立請求物件
        HttpsClient http=new HttpsClient();
        Response res = http.post("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+oAuthToken.getAccess_token(), json);
         //根據請求結果判定,是否驗證成功
        JSONObject jsonObj = res.asJSONObject();
        if (jsonObj != null) {
            if (Configuration.isDebug()) {
                System.out.println("模板訊息返回json:" + jsonObj.toString());
            }
            Object errcode = jsonObj.get("errcode");
            if (errcode != null && !errcode.toString().equals("0")) {
                //返回異常資訊
                throw new WeixinException(getCause(Integer.parseInt(errcode.toString())));
            }
        }   
    }   
}

其中

JSONObject keyword1=new JSONObject();
JSONObject keyword2=new JSONObject();
JSONObject first=new JSONObject();
JSONObject remark=new JSONObject();

keyword1、keyword2等分別對應模板中的關鍵字,參考下圖
這裡寫圖片描述

而相關jar包如下

import org.weixin4j.Configuration;
import org.weixin4j.Weixin;
import org.weixin4j.WeixinException;
import org.weixin4j.WeixinSupport;
import org.weixin4j.http.HttpClient;
import org.weixin4j.http.HttpsClient;
import org.weixin4j.http.OAuthToken;
import org.weixin4j.http.Response;
import org.weixin4j.message.Articles;

這是開源平臺weixin4j提供的jar包
這裡寫圖片描述
點選可前往下載

還有一個非常方便的jar包

com.alibaba.fastjson

這個相信許多人都知道,百度你就能找到你想要的答案!

相關推薦

JAVA公眾開發第10篇傳送模板訊息

簡介 模板訊息僅用於公眾號向用戶傳送重要的服務通知,只能用於符合其要求的服務場景中,如信用卡刷卡通知,商品購買成功通知等。不支援廣告等營銷類訊息以及其它所有可能對使用者造成騷擾的訊息。 關於使用規則,請注意: 1、所有服務號都可以在功能-&g

公眾助手如何不受限制群發訊息

我們大boss經常叫我們群發訊息給客戶,微信公眾服務號只能一個月群發4次還限額,你想想平均一個星期1次,還天天叫我們發,根本就不夠啊。 跟大boss反應一下,還說我們這麼不早說,我們特麼BB了,第二天來,直接丟過來一個軟體,群體懵逼,大boss就跟我們簡單了說了是幹嘛用的。 原來微信公眾號可

公眾開發(Java) ---- 客服訊息傳送

最近用java語言開發的公眾號是在柳峰老師的《微信公眾平臺應用開發++方法、技巧與案例》的基礎上完成的,在次特別感謝,建議微信開發新手可以多看看,柳峰老師的這個例項挺好的,而且在開發的過程中,我個人是感覺到公眾號的對應微信介面開發越來越順手。下面說說這次部落格主題: 我開發

公眾開發整理(二)--圖文訊息回覆

1.由於個人公眾號許多介面許可權用不了,這裡方便測試,我們採用測試賬號進行開發:2.找到回覆圖文訊息相關API文件首先查看回復圖文訊息文字格式如下:3.上一篇建立了一個公用的實體類,這次建立圖文訊息的回覆,我們只需要繼承公用的父類,具體實體類如下:public class N

公眾如何無限制定向訊息--模板訊息應用

微信公眾號如何無限制的定向推送訊息–模板訊息的應用 最近開發的OA平臺有一個需求:將待辦訊息推送到微信公眾號的指定使用者。但是為了避免使用者受到垃圾訊息的騷擾,微信對相關的介面做了非常嚴格的限制。 查閱開發文件,公眾號主動推送訊息有三種介面: 群發訊息

公眾

empty 提交數據 顯示 數據 tmpl 數據包 agen 文件 ati $data[‘template_id‘] = D(‘Weixintmpl‘)->getFieldBySerial($serial,‘template_id‘);//支付成功模板$data[‘

公眾消息

修改 weixin 功能 .com 類型 問題 mage 分享 .cn 首先進入網站: 微信公眾號    2.輸入賬號密碼(微信或QQ皆可) 沒有註冊的先註冊,OK 註意一個問題,選好任意一種類型以後,不能修改,千萬註意 3.群發功能以

C#公眾開發之接收事件與消息排重的方法

data push con 這樣的 etime ali 推薦 系列 是否 本文實例講述了C#微信公眾號開發之接收事件推送與消息排重的方法。分享給大家供大家參考。具體分析如下: 微信服務器在5秒內收不到響應會斷掉連接,並且重新發起請求,總共重試三次。這樣的話,問題就來了。有

PHP 公眾開發 - 消息

function mic req ade appid encode enc pub cnblogs 項目微信公眾號開發,需要做用戶消息推送,記錄下來以便日後使用 1,接上一篇文章,可以查看如何獲取用戶openid   PHP 微信公眾號開發 - 獲取用戶信息 2,添加模板消

多線程發公眾消息

fin 使用 access req red object mss 超時 locks 多線程設置 package cloud.app.prod.home.utils; import java.util.ArrayList; import java.util.

公眾 模板消息 定時 java

quest 微信 cat 2個 使用權 output 行業 交流 set 前提:業務需要,要做一個關於月報的微信消息推送。即每個月定時自動發送一條消息 給關註 公眾號的人 用的是 公眾號的測試賬號(實際開發需要認證的公眾號) 微信官網的 模板消息接口規則: 1、所有服務號

公眾模板消息

sage 字體顏色 信息 program 數據包 alt 2014年 rms 情況 一、到公眾號平臺(https://mp.weixin.qq.com)開通模板功能並申請你需要的對應模板 二、獲取access_token   地址:https://api.weixin.q

C#公眾模版訊息

1. 需要在微信公眾號申請模版訊息,選擇你的行業範圍 2.【模版訊息】—— 【模版庫】     可以搜尋你想要的模版,也可以申請需要的模版。 3. 點選詳情:新增到我的模板 4. 我的模板 :複製模板ID   5.  C#後

php三方網站使用公眾文章

//獲取accesstoken 的方法public function index(){ $appId = 'wxd0e50fe967dccccc'; $appSecret = 'd7f6be12ce41b60ss0f45054';//虛擬的,不要用 $url = "htt

公眾頁面授權+訊息

一、微信端配置 1、微信公眾號進行微信認證。 2、配置微信呼叫介面、按照微信要求需要進行頁面授權獲取使用者的Openid,(這裡注意一下、他會提示有個微信檔案要放在專案的根目錄下面,如:wx.qq.com/mp/MP_verify_7aS4leptvrYzJEsn.txt

公眾測試賬號-訊息管理/事件

記錄一下微信公眾號開發的時候的一些過程。。。 首先註冊一個微信公眾測試賬號,雖然個人註冊的訂閱號也有此功能,但是卻沒有使用者管理功能,所以這裡就先拿測試賬號開發微信公眾號。。。 申請微信測試號在這裡http://mp.weixin.qq.com/debug/cgi-bin/sandb

公眾開發訊息以及圖文

今天給大家分享的關注公眾號自動推送圖文訊息,以及做一個超牛逼的機器人。 先看看效果。 發錯圖了。。。這是我昨天開發的一款機器人chu了會罵人啥都不會了。 我今天將它詞庫進行了更新和升級,接入了http://www.itpk.cn/ 機器人第三詞庫 先給你截圖

公眾助手如何設定模板訊息

說到運營微信服務號,其目的自然是廣告推廣,通過微信關注粉絲獲取商業價值,而廣告推廣的主要途徑是模組連結實現價值的核心在於模板訊息。 你想想如果看到一條關於“投資策略,訊息提醒,預約通知”的訊息,引起了客戶的注意,點選量就高,而且紛紛留言服務很周到! A君:這是什麼訊息提醒? B君:服務號具有模板訊息功能

公眾助手如何設置模板消息

註意 各類 投資策略 行業 客戶 後臺 自己 使用 選擇 說到運營微信服務號,其目的自然是廣告推廣,通過微信關註粉絲獲取商業價值,而廣告推廣的主要途徑是模塊鏈接實現價值的核心在於模板消息。 你想想如果看到一條關於“投資策略,消息提醒,預約通知”的消息,引起了客戶的註意,點擊

公眾開發-選單事件

選單事件推送在微信公眾號開發中也是屬於比較常用的一個功能,就是使用者點選選單之後,微信會將事件推送給介面程式。 不過微信開發到現在也是老生常談的的東西了,我就簡單寫一下選單事件推送的這個過程。 注意:點選選單彈出子選單,不會產生請求互動。 1.先來看下相應的介面