1. 程式人生 > >阿里雲---新的簡訊服務(整合到訊息服務MNS後)

阿里雲---新的簡訊服務(整合到訊息服務MNS後)

1、阿里雲簡訊服務已經整合到訊息服務MNS中了,需要使用MNS的sdk來發送簡訊。



2、新的sdk地址

JAVA SDK:https://help.aliyun.com/document_detail/51063.html
Python SDK:https://help.aliyun.com/document_detail/51372.html
C# SDK:https://help.aliyun.com/document_detail/52016.html
PHP SDK: https://help.aliyun.com/document_detail/51929.html

3、接下來將講解新的簡訊服務demo開發,結尾有原始碼

準備工作:

/**********需要準備的引數**************/
	public static String YourAccessId="";//需要修改
	public static String YourAccessKeySecret="";//需要修改
	//Endpoint  需要修改
	public static String YourMNSEndpoint="https://14342555.mns.cn-hangzhou.aliyuncs.com/";
	public static String YourTopic="sms.topic-cn-hangzhou";//主題名稱    選擇性修改
	public static String YourSMSTemplateCode="SMS_49290109";//簡訊模板code  需要修改
	public static String YourSignName="";//簡訊簽名名稱, 需要修改
	public static String phone1="15575902020";//手機號碼需要修改
	public static String phone2="15575905959";//手機號碼需要修改
	/**********需要準備的引數**************/


4、獲取Endpoint



5、獲取主題名稱


6、

建立和檢視Access Key

https://ak-console.aliyun.com/#/accesskey/

7、YourSignName 和 YourSMSTemplateCode 獲取在前面的文章有提到

8、demo

package com.kp.test;

import com.aliyun.mns.client.CloudAccount;
import com.aliyun.mns.client.CloudTopic;
import com.aliyun.mns.client.MNSClient;
import com.aliyun.mns.common.ServiceException;
import com.aliyun.mns.model.BatchSmsAttributes;
import com.aliyun.mns.model.MessageAttributes;
import com.aliyun.mns.model.RawTopicMessage;
import com.aliyun.mns.model.TopicMessage;

/** 
 * @author: py
 * @version:2017年5月4日 下午2:57:31 
 * com.kp.test.TestNewSms.java
 * @Desc 
 */
public class TestNewSms {
	
	/**********需要準備的引數**************/
	public static String YourAccessId="";//需要修改
	public static String YourAccessKeySecret="";//需要修改
	//Endpoint  需要修改
	public static String YourMNSEndpoint="https://14342555.mns.cn-hangzhou.aliyuncs.com/";
	public static String YourTopic="sms.topic-cn-hangzhou";//主題名稱    選擇性修改
	public static String YourSMSTemplateCode="SMS_49290109";//簡訊模板code  需要修改
	public static String YourSignName="";//簡訊簽名名稱, 需要修改
	public static String phone1="15575902020";//手機號碼需要修改
	public static String phone2="15575905959";//手機號碼需要修改
	/**********需要準備的引數**************/
	
	
	public static void main(String[] args) {
        /**
         * Step 1. 獲取主題引用
         */
        CloudAccount account = new CloudAccount(YourAccessId, YourAccessKeySecret, YourMNSEndpoint);
        MNSClient client = account.getMNSClient();
        CloudTopic topic = client.getTopicRef(YourTopic);
        /**
         * Step 2. 設定SMS訊息體(必須)
         *
         * 注:目前暫時不支援訊息內容為空,需要指定訊息內容,不為空即可。
         */
        RawTopicMessage msg = new RawTopicMessage();
        msg.setMessageBody("sms-message");
        /**
         * Step 3. 生成SMS訊息屬性
         */
        MessageAttributes messageAttributes = new MessageAttributes();
        BatchSmsAttributes batchSmsAttributes = new BatchSmsAttributes();
        // 3.1 設定傳送簡訊的簽名(SMSSignName)
        batchSmsAttributes.setFreeSignName(YourSignName);
        // 3.2 設定傳送簡訊使用的模板(SMSTempateCode)
        batchSmsAttributes.setTemplateCode(YourSMSTemplateCode);
        // 3.3 設定傳送簡訊所使用的模板中引數對應的值(在簡訊模板中定義的,沒有可以不用設定)
        BatchSmsAttributes.SmsReceiverParams smsReceiverParams = new BatchSmsAttributes.SmsReceiverParams();
        smsReceiverParams.setParam("code", "2323");
        smsReceiverParams.setParam("product", getChinaDateByMM(System.currentTimeMillis()));
        // 3.4 增加接收簡訊的號碼
        batchSmsAttributes.addSmsReceiver(phone1, smsReceiverParams);
//        batchSmsAttributes.addSmsReceiver(phone2, smsReceiverParams);
        messageAttributes.setBatchSmsAttributes(batchSmsAttributes);
        try {
            /**
             * Step 4. 釋出SMS訊息
             */
            TopicMessage ret = topic.publishMessage(msg, messageAttributes);
            System.out.println("MessageId: " + ret.getMessageId());
            System.out.println("MessageMD5: " + ret.getMessageBodyMD5());
        } catch (ServiceException se) {
            System.out.println(se.getErrorCode() + se.getRequestId());
            System.out.println(se.getMessage());
            se.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        client.close();
    }
	
	
	/**
	 * 使用毫秒轉換為中文日期
	 * @param tmpDateInt
	 * @return
	 */
	public static String getChinaDateByMM(long time){
		String ret_date = "";
		java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy年MM月dd日");
		ret_date = formatter.format(time);
		return ret_date;
	}

}


9、工程結構


10、原始碼地址