全部產品
Search
文件中心

Short Message Service:首次調用API

更新時間:Dec 11, 2024

您可以通過SDK快速整合,調用API從而使用簡訊服務。

本文以傳送簡訊(SendMessageToGlobe)介面為例,引導您完成簡訊服務API調用。您將瞭解到:

說明
  • 如果您已經熟悉如何調用API,可直接查閱API目錄,調用所需介面。

  • 推薦使用SDK整合的方法對API進行調用。如果您希望自訂封裝請求對API進行調用,請參見V3版本請求體&簽名機制

準備工作

準備事項

說明

相關文檔

簡訊簽名

完成簽名申請並審核通過後,擷取簽名名稱

簽名規範

簡訊模板

完成模板申請並審核通過後,擷取模板Code

模板規範

使用者權限

說明

阿里雲主帳號擁有較高許可權,建議您通過RAM使用者進行API調用和日常營運。

請確保您所調用API的RAM使用者已有簡訊服務相關許可權:

  • AliyunDysmsFullAccess:管理簡訊服務的許可權。

  • AliyunDysmsReadOnlyAccess:唯讀訪問簡訊服務的許可權。

如果您需要建立自訂許可權,請參見授權資訊

建立RAM使用者

為RAM使用者授權

AccessKey ID

您可以通過RAM控制台,單擊RAM使用者名稱稱查看。

建立AccessKey

AccessKey Secret

建立後不支援查看,若本地無備份,建議重新建立一對AccessKey使用。

建立RAM使用者並授權

  1. 建立RAM使用者並建立存取金鑰(AccessKey)

    訪問建立RAM使用者,完成相關名稱設定,並選擇訪問方式使用永久 AccessKey 訪問,單擊確定,通過安全驗證後即可完成RAM使用者的建立。RAM使用者建立成功後會顯示AccessKey IDAccessKey Secret,請及時保管。

  2. 為RAM使用者授權

    訪問RAM使用者列表,找到您所建立的RAM使用者,單擊操作列的添加許可權。通過文字框搜尋,選擇AliyunDysmsFullAccess,單擊確認新增授權,完成授權操作。

配置開發環境

本文以Java語言為例,進行後續操作。如果您需要使用其他程式設計語言,請參見SDK參考

配置Java環境

為使用SDK進行簡訊服務API的調用,您的Java版本需高於Java 8。您可以通過在終端運行以下命令,來檢查您的Java環境:

java -version

若您尚未完成Java環境的配置或Java版本低於Java 8,請參見在Windows搭建Java開發環境

配置SDK

您可以通過配置Maven依賴來安裝SDK。

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>dysmsapi20180501</artifactId>
  <version>1.0.10</version>
</dependency>

初始化請求用戶端

阿里雲SDK支援多種訪問憑據用於初始化用戶端,例如AccessKey和STS Token等,更多方式請參見管理訪問憑據。本文以AccessKey初始化用戶端為例,進行後續操作。

配置AccessKey

為避免在代碼中寫入程式碼AccessKey而造成泄露,請通過配置環境變數的方式擷取AccessKey。環境變數配置方法,請參見在Linux、macOS和Windows系統配置環境變數

本文以環境變數名ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET為例,進行後續操作。通過環境變數擷取AccessKey的程式碼範例如下:

Config config = new Config()
        // 請確保代碼運行環境配置了相應環境變數
        .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
        .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
說明

System.getenv()方法表示擷取系統內容變數,請配置環境變數後,在此填入環境變數名稱。請不要直接填入AccessKey資訊。

佈建服務存取點

佈建服務存取點程式碼範例如下,請根據您的地區填入相應地址,參見服務存取點

config.endpoint = "dysmsapi.ap-southeast-1.aliyuncs.com";

調用API

構建API請求

構造API請求並根據您的業務需要傳入參數。

說明

API請求對象命名規則為{API名稱}Request ,例如SendSms介面的請求對象為SendSmsRequest

SendMessageToGlobeRequest sendSmsRequest = new SendMessageToGlobeRequest()
            .setTo("<YOUR_VALUE>")
            .setMessage("<YOUR_VALUE>");

發送API請求

使用SendMessageToGlobe介面完成API請求。

說明

API返回對象命名規則為{API名稱}Response ,例如SendSms介面的返回對象為SendSmsResponse

SendMessageToGlobeResponse sendSmsResponse = client.sendMessageToGlobe(sendSmsRequest);

程式碼範例

完整程式碼範例如下:

package com.aliyun.sample;

import com.aliyun.teaopenapi.models.Config;
import com.aliyun.dysmsapi20180501.Client;
import com.aliyun.dysmsapi20180501.models.SendMessageToGlobeRequest;
import com.aliyun.dysmsapi20180501.models.SendMessageToGlobeResponse;
import static com.aliyun.teautil.Common.toJSONString;

public class Sample {
    public static Client createClient() throws Exception {
        Config config = new Config()
                // 配置 AccessKey ID,請確保代碼運行環境配置了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 配置 AccessKey Secret,請確保代碼運行環境配置了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));

        // 配置 Endpoint
        config.endpoint = "dysmsapi.ap-southeast-1.aliyuncs.com";

        return new Client(config);
    }

    public static void main(String[] args) throws Exception {
        // 初始化請求用戶端
        Client client = Sample.createClient();

        // 構造請求對象,請填入請求參數值
        SendMessageToGlobeRequest sendSmsRequest = new SendMessageToGlobeRequest()
                .setTo("<YOUR_VALUE>")
                .setMessage("<YOUR_VALUE>");

        // 擷取響應對象
        SendMessageToGlobeResponse sendSmsResponse = client.sendMessageToGlobe(sendSmsRequest);

        // 響應包含服務端響應的 body 和 headers
        System.out.println(toJSONString(sendSmsResponse));
    }
}

常見問題

如何查看AccessKey ID和AccessKey Secret?

AccessKey Secret建立後不支援查看,若本地無備份,建議重新建立一對AccessKey ID和AccessKey Secret使用。

如何自訂封裝HTTP請求,然後使用curl命令或Postman等工具進行API調用?

阿里雲SDK已經封裝了簽名、逾時、重試等機制,我們建議您使用SDK進行整合,降低開發成本。如果您需要自行封裝請求來進行API測試,請參見V3版本請求體&簽名機制

下一步