首页 短信服务 快速入门 通过API/SDK使用短信服务

通过API/SDK使用短信服务

更新时间: 2023-08-17 16:48:47

短信服务(Short Message Service)是广大企业客户快速触达手机用户所优先使用的通信能力,分为国内短信和国际/港澳台短信服务。本文介绍如何快速使用阿里云OpenAPI开发者门户或阿里云SDK完成常见操作,例如添加短信签名、添加短信模板、发送短信服务和查询短信发送详情等。

背景信息

调用API时,您可以根据API文档了解使用说明,并查询必选的请求参数。发送请求后报错时,您可以在相应API文档中获取错误码说明。

调用方式

使用须知

使用短信服务前,请了解以下注意事项:
  • 仅当短信签名的适用场景为通用时,国内短信和国际/港澳台短信可以共用此签名,无需分别添加。
  • 国内短信模板与国际/港澳台短信模板不通用,请根据实际业务情况分别添加、使用。
  • 填写签名、模板申请信息时,请正确选择签名适用场景、模板类型,详细描述已上线业务的使用场景,并提供可以验证这些业务的网站链接、已备案域名地址、应用市场下载链接、公众号或小程序全称等信息。对于登录场景,还需提供测试账号密码。信息完善的申请说明会提高签名、模板的审核效率。
  • 短信签名和短信模板均需审核通过后方可使用。

准备工作

  1. 注册账号与实名认证。
    说明
    • 实名认证的类型包括个人认证和企业认证。个人认证表示账号持有者是个人、以个人身份使用短信服务;企业认证表示账号持有者是企业或政府部门,以企业身份使用短信服务。个人认证和企业认证可使用的功能不完全相同。更多信息,请参见认证模式
    • 发送推广短信、国际/港澳台短信必须为企业实名认证用户。
    • 如果您未注册阿里云账号,请先完成账号注册实名认证
    • 如果您已有实名认证的阿里云账号,请直接进行下一步操作,开通短信服务。
  2. 开通短信服务。

    登录短信服务控制台,勾选开通协议,单击开通服务

  3. 获取AccessKey。
    阿里云访问密钥(AccessKey)是调用API访问云资源的安全口令,支持阿里云账号和RAM用户方式访问。调用API前,您需要先创建AccessKey。具体操作,请参见创建AccessKey

OpenAPI开发者门户示例

调用API发送短信的全流程如下所示:API发送短信流程图

  1. 通过AddSmsSign添加短信签名。

  2. 通过AddSmsTemplate添加短信模板。

  3. 分别通过QuerySmsSignQuerySmsTemplate查看短信签名和短信模板的审核状态。

  4. 通过SendSms发送短信,您也可以通过SendBatchSms批量发送短信。

  5. 通过QuerySendDetails查询短信发送详情。

短信发送后,通过配置MNS消息队列消费模式和HTTP批量推送模式,可以接收短信发送状态的结果和用户回复的短信内容,帮助您掌握短信的发送成功率,为其他业务提供支持。更多信息,请参见回执消息简介与配置流程

Java SDK示例

说明

调用接口前需配置环境变量,通过环境变量读取访问凭证。AccessKey ID和AccessKey Secret的环境变量名:SMS_ACCESS_KEY_ENV 、SMS_ACCESS_KEY_SECRET_ENV。配置详情请参见配置访问凭证

以AddSmsTemplate为例,演示如何通过阿里云SDK调用短信服务API。示例代码中的下列参数需要您根据实际情况自行填写。

  • AccessKeyId:您的AccessKey ID。

  • AccessKeySecret:您的AccessKey Secret。

  • TemplateType:短信模板类型。

  • TemplateName:短信模板名称。

  • TemplateContent:短信模板内容。

  • Remark:短信模板申请说明。

import com.alibaba.fastjson.JSONObject;
import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.teaopenapi.models.*;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

public class AddSmsTemplate {

  /**
   * 此处通过从环境变量中读取AccessKey,初始化云呼叫中心Client
   * @return Client
   * @throws Exception
   */
  public static com.aliyun.dysmsapi20170525.Client createCCClient()
    throws Exception {
    // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户
    // 此处以把AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里
    // 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
    com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
      .setAccessKeyId(System.getenv("SMS_ACCESS_KEY_ENV"))
      .setAccessKeySecret(System.getenv("SMS_ACCESS_KEY_SECRET_ENV"));
    // 访问的域名
    config.endpoint = "dysmsapi.aliyuncs.com";
    return new com.aliyun.dysmsapi20170525.Client(config);
  }

  public static void main(String[]args_) throws Exception {
    java.util.List<String> args = java.util.Arrays.asList(args_);
    com.aliyun.dysmsapi20170525.Client client = createCCClient();

    AddSmsTemplateRequest addSmsTemplateRequest = new AddSmsTemplateRequest()
      .setTemplateType(0)
      .setTemplateName("content3")
      .setTemplateContent("您正在申请手机注册,验证码为:${code},5分钟内有效!")
      .setRemark("用于文件下载时的验证码");
    // 复制代码运行请自行打印API的返回值
    client.addSmsTemplate(addSmsTemplateRequest);
    AddSmsTemplateResponse response = client.addSmsTemplate(
      addSmsTemplateRequest
    );
    System.out.println(JSONObject.toJSONString(response));
  }
}

更多示例,请参见OpenAPI开发者门户

原版SDK的安装流程及代码示例,请参见Java SDK

阿里云首页 短信服务 相关技术圈