1. 程式人生 > >短信通道——阿裏大魚(java)

短信通道——阿裏大魚(java)

其中 poi 價格 request exc 限制 ram 失敗 java程序

綜述

註:本文寫於2017年6月22日升級之後。

使用阿裏大魚發送短信已經成為一種趨勢,因為權威,而且價格也比較適中,被越來越多的公司所采用。在介紹阿裏大魚發送短信之前,首先得擁有阿裏雲的賬號,這個賬號可以使用支付寶賬號進行登錄。筆者是Java程序猿,本篇也只介紹Java的方式,其他方式參考阿裏雲的幫助文檔。

步驟

第一步:註冊阿裏雲賬號,獲取app access key 和 app access secret。點擊個人頭像------>管理控制臺-------->個人賬號名稱(一般是手機號)----->accesskeys,進入到Access key 管理界面,在發送短信時需要這兩個值。

技術分享

(圖1)

第二步:申請短信簽名,短信簽名是商戶的標識,短信簽名會出現在短信內容的開頭,例如支付寶的短信簽名為”支付寶”,短信開頭的內容是【支付寶】。申請短信簽名需要審核,而且有個數限制,一般不會超過5個。管理控制臺----->展開雲計算基礎服務----->短信服務------> 短信簽名------> 添加短信簽名

技術分享

(圖2)

第三步:申請短信模板,阿裏大魚將短信分為三種,驗證碼,短信通知和推廣短信。申請短信模板也需要審核,但是沒有個數限制。

第四步:下載SDK及Demo,將aliyun-java-sdk-core-version.jar及aliyun-java-sdk-dysmsapi-version.jar導入到項目中,其中version為版本號。如果是Maven項目,解壓文件,搜索pom.properties,將groupId,artifactId,version寫入到pom.xml中。

#Generated by Maven
#Wed Jun 14 21:12:41 CST 2017
version=1.0.0-SNAPSHOT
groupId=com.aliyun
artifactId=aliyun-java-sdk-dysmsapi
替換為
<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
   <version>1.0.0-SNAPSHOT</version>
</dependency>

第五步:編寫程序,編寫程序分為三部分。

第一部分,獲取IAcsClient對象,該對象用戶發送請求。創建IAcsClient對象的過程需要app access key 和 secret。

/**
 * 獲取IAcsClient對象
 * 
 * @return
 * @throws ClientException
 */
private static IAcsClient initClient() throws ClientException {
    System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
    System.setProperty("sun.net.client.defaultReadTimeout", "10000");
    // 初始化ascClient需要的幾個參數
    final String product = "Dysmsapi";// 短信API產品名稱
    final String domain = "dysmsapi.aliyuncs.com";// 短信API產品域名
    // 秘鑰key和secret
    final String appkey = "yourappKey";
    final String appSecret = "yourappsecret";
    // 初始化ascClient,暫時不支持多region
    IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", appkey, appSecret);
    DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
    IAcsClient acsClient = new DefaultAcsClient(profile);
    return acsClient;
}

第二部分:根據短信模板,創建SendSmsRequest請求對象。

/**
 * 獲取SMS_72780019短信模板對應的請求
 * 
 * @return
 */
private static SendSmsRequest getSMS_72780019Message() {
     //組裝請求對象
     SendSmsRequest request = new SendSmsRequest();
     //必填:待發送手機號。支持以逗號分隔的形式進行批量調用,批量上限為20個手機號碼,批量調用相對於單條調用及時性稍有延遲,驗證碼類型的短信推薦使用單條調用的方式
     request.setPhoneNumbers("1500000000");
     //必填:短信簽名-可在短信控制臺中找到
     request.setSignName("雲通信");
     //必填:短信模板-可在短信控制臺中找到
     request.setTemplateCode("SMS_1000000");
     //可選:模板中的變量替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為
     request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}");
     //可選:outId為提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者
     request.setOutId("yourOutId");
 }

第三部分:發送短信,獲取響應對象,

/**
 * @param templateCode 短信模板code
 * @throws ClientException
 * 
 */
public static void sendMessage(String templateCode) throws ClientException {
    // 初始化client對象
    IAcsClient client = initClient();
    // 短信模板請求對象
    SendSmsRequest request = null;
    // 根據短信模板code來獲取不同的短信模板請求對象
    switch(templateCode)
    {
        case "SMS_72780019": 
            request = getSMS_72780019Message();
            break;
    }
    // 發送短信
    SendSmsResponse response = client.getAcsResponse(request);
    // 打印短信的消息
    System.out.println("_____________發送SMS_72780019短信收到的響應信息_______________");
    System.out.println("請求的ID:" + response.getRequestId());
    System.out.println("請求的狀態碼:" + response.getCode());
    System.out.println("請求的狀態碼描述:" + response.getMessage());
    System.out.println("請求的回執ID:" + response.getBizId());
}

點擊短信服務統計,可以看到每天發送多少條短信,如果發送短信失敗,可以點擊”失敗詳情”查看原因,也可以根據請求的狀態碼,去查閱錯誤碼列表。

至此本篇內容結束。

短信通道——阿裏大魚(java)