1. 程式人生 > >阿里大於傳送簡訊(java)

阿里大於傳送簡訊(java)

一、簡訊簽名設定

  1、簡訊簽名是什麼?

  簽名是在簡訊內容開始或者末尾跟的品牌或者應用名稱,設定簽名有一下幾個好處:增加品牌的曝光度,增強使用者的記憶讓使用者能更清楚的知道正在使用的應用。

  2、簽名可不可以不設定?

  如果您不設定簽名,您通過介面傳送的簡訊將很可能會進入簡訊稽核流程(注:進入該流程需要簡訊傳送平臺的客服人工稽核,將會影響簡訊的傳送和到達時間)或者可能直接被閘道器駁回,所以,為了您平臺使用者使用簡訊的穩定性,設定簡訊簽名是十分必要的。

  3、簡訊簽名怎麼設定?

  一般簽名設定為您的品牌名、應用名、公司名等有代表性的資訊,三到八個字即可。如【信信客】、【淘寶網】。

二、簡訊模板設定

  1、什麼是簡訊模板?

  簡訊模板是對您將要傳送的簡訊進行相似性提取後的內容。舉個例子:

  A使用者在您平臺註冊會員,需要傳送一條簡訊,內容如下:

  您好,您的驗證碼是:111111

  同時,B使用者也在您的平臺註冊會員,傳送瞭如下簡訊:

  您好,您的驗證碼是:222222

  我們提取相似度以後,可以製作以下簡訊模板:

  您好,您的驗證碼是:${code}

  其中,${code}這種使用大括號包圍起來的形式,我們稱之為變數。您可以按照所在場景定義變數。

  簡訊模板中的變數可以是數字,英文或漢字等

  1.例項一:需要傳遞變數值:${code}=“123456”

  

  2.例項二:需要傳遞變數值:${nanme}=“李先生”,${order}=“20160506168”,${amount}=“588”。

  

  2、為什麼要設定簡訊模板?

  如果不設定簡訊模板,通過介面傳送的簡訊將很可能會進入簡訊稽核流程(注:進入該流程需要簡訊傳送平臺的客服人工稽核,將會影響簡訊的傳送和到達時間),或者直接被閘道器駁回,所以,為了您平臺使用者使用簡訊的穩定性,設定模板也是十分必要的。

三、如果不設定簡訊簽名和模板,可以不可以傳送簡訊?

  可以傳送,但是該簡訊將會進入人工稽核流程,可能會影響您的簡訊到達時間。所以,我們強烈建議您報備簡訊簽名和模板。

 

四:關於開發

     官方程式碼樣例:

複製程式碼
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
req.setExtend( "" );
req.setSmsType( "normal" );
req.setSmsFreeSignName( "" );
req.setSmsParamString( "" );
req.setRecNum( "13000000000" );
req.setSmsTemplateCode( "" );
AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
System.out.println(rsp.getBody());
複製程式碼

 

  專案實際程式碼:

複製程式碼
//service中傳送驗證碼的邏輯

@Override public Map<String, String> sendSMSMsg(String phone, String msg) throws ApiException { Map<String, String> map = new HashMap<String, String>();
//開發過程中,設定不傳送簡訊 if (!StringUtils.equals("1", smsSettings.getOpen())) { map.put("resultCode", "0"); map.put("smsPhone", phone + ""); map.put("smsTime", (new Date()).getTime() + ""); map.put("smsCode", "1234"); return map; } TaobaoClient client = new DefaultTaobaoClient(smsSettings.getUrl(), smsSettings.getAppkey(), smsSettings.getSecret()); AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest(); Random rnd = new Random(); int code = rnd.nextInt(8999) + 1000;(0到9999四位數驗證碼) req.setSmsType(smsSettings.getType()); req.setSmsFreeSignName(smsSettings.getSignName()); req.setSmsParamString("{\"code\":\"" + code + "\",\"product\":\"" + "" + "\"}");//套用模板 req.setRecNum(phone); req.setSmsTemplateCode(smsSettings.getTplCode()); AlibabaAliqinFcSmsNumSendResponse response = client.execute(req); logger.info("sendMsm,body: {}", response.getBody()); if (response.getBody().contains("error_response")) {// true map.put("resultCode", "1"); map.put("resultMsg", "簡訊傳送次數超出限制,請稍後再試。");// 對同一個手機號可傳送1條/分鐘,7條/小時,50條/天 } else if (response.getResult().getSuccess()) { map.put("resultCode", "0"); map.put("smsPhone", phone + ""); map.put("smsTime", (new Date()).getTime() + ""); map.put("smsCode", code + ""); } return map; }