您可以通过SDK快速集成,调用API从而使用短信服务。
本文以发送短信(SendSms)接口为例,引导您完成短信服务API调用。您将了解到:
如何创建RAM用户并授权。
如何安装SDK。
如何调用短信服务API。
如果您已经熟悉如何调用API,可直接查阅API目录,调用所需接口。
推荐使用SDK集成的方法对API进行调用。如果您希望自定义封装请求对API进行调用,请参见V3版本请求体&签名机制。
准备工作
准备事项 | 说明 | 相关文档 |
准备事项 | 说明 | 相关文档 |
资质申请 | 您可以在控制台资质管理页面查看资质信息。若无可用资质,请申请并等待审核通过。 | |
短信签名 | 您可以在控制台签名管理页面获取签名名称。若无可用签名,请申请并等待审核通过。 | |
短信模板 | 您可以在控制台模板管理页面获取模板CODE。若无可用模板,请申请并等待审核通过。 | |
用户权限 | 您可以通过RAM控制台,单击RAM用户名称查看用户权限。请确保您需要调用API的RAM用户已有短信服务相关权限:
| |
| 您可以通过RAM控制台,单击RAM用户名称查看AccessKey ID。 | |
| 创建后不支持二次查看,若本地无备份,建议重新创建一对AccessKey使用。 |
配置凭证
创建有短信服务管理权限的RAM用户,并创建AccessKey。
阿里云主账号拥有较高权限,强烈建议您通过RAM用户进行API调用和日常运维。
使用RAM用户AccessKey配置环境变量。本文以环境变量名
ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
为例,进行后续操作。为避免在代码中硬编码AccessKey而造成泄露,强烈建议您通过配置环境变量的方式获取AccessKey。
修改系统环境变量后,请重启或刷新您的编译运行环境,包括IDE、命令行界面、其他桌面应用程序及后台服务,以确保最新的系统环境变量成功加载。
安装SDK
本文以Java语言为例,进行后续操作。如果您需要使用其他编程语言,请参见SDK参考。
已安装Java 8或以上版本。
您可以通过配置Maven依赖来安装SDK。请配置以下信息并将
the-latest-version
替换为最新版本号。<dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20170525</artifactId> <!-- 请将 'the-latest-version' 替换为最新版本号:https://mvnrepository.com/artifact/com.aliyun/dysmsapi20170525 --> <version>the-latest-version</version> </dependency>
使用SDK
1. 初始化客户端
阿里云SDK支持多种访问凭据用于初始化客户端,例如AccessKey和STS Token等,更多方式请参见管理访问凭据。本文以AccessKey初始化客户端为例,进行后续操作。
package com.aliyun.sample;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.dysmsapi20170525.Client;
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"));
// System.getenv()方法表示获取系统环境变量,不要直接在getenv()中填入AccessKey信息。
// 配置 Endpoint。中国站请使用dysmsapi.aliyuncs.com
config.endpoint = "dysmsapi.aliyuncs.com";
return new Client(config);
}
}
2. 构建请求对象
构造API请求并根据您的业务需要传入参数。
请求对象命名规则:{API名称}Request
,例如SendSms
接口的请求对象为SendSmsRequest
。
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers("1390000****")
.setSignName("阿里云")
.setTemplateCode("SMS_15305****")
// TemplateParam为序列化后的JSON字符串。其中\"表示转义后的双引号。
.setTemplateParam("{\"name\":\"张三\",\"number\":\"1390000****\"}");
3. 发起请求
使用SendSms接口完成API请求。
返回对象命名规则:{API名称}Response
,例如SendSms
接口的返回对象为SendSmsResponse
。
SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
运行后您将会看到对应的输出结果:
{
"headers": {
"access-control-allow-origin": "*",
"date": "Mon, 17 Jul 2023 16:21:50 GMT",
"content-length": "110",
"keep-alive": "timeout=25",
"x-acs-request-id": "F59B3F78-D9CD-5D01-A9CC-AE5C921ED9C0",
"connection": "keep-alive",
"content-type": "application/json;charset=utf-8",
"etag": "1MzEw7RSXKXTkIJ1thYGmCw0",
"access-control-expose-headers": "*",
"x-acs-trace-id": "5ecfe30b412fb6e09a86d651ccbe13db"
},
"statusCode": 200,
"body": {
"bizId": "695425589610909881^0",
"code": "OK",
"message": "OK",
"requestId": "F59B3F78-D9CD-5D01-A9CC-AE5C921ED9C0"
}
}
常见问题
如何查看AccessKey ID和AccessKey Secret?
AccessKey Secret创建后不支持查看,若本地无备份,建议重新创建一对AccessKey ID和AccessKey Secret使用。
如何自定义封装HTTP请求,然后使用curl
命令或Postman等工具进行API调用?
阿里云SDK已经封装了签名、超时、重试等机制,我们建议您使用SDK进行集成,降低开发成本。如果您需要自行封装请求来进行API测试,请参见V3版签名机制和SendSms请求示例。
短信服务API调用阿里云的IP服务器地址是固定的吗?
短信服务接口对外只提供域名地址形式,没有提供固定的调用IP地址。中国站请使用域名dysmsapi.aliyuncs.com
,HTTP调用使用端口80,HTTPS调用使用端口443。您的网络IP不必报备至阿里云侧,只要能ping通上述地址即可,其对应的IP段不固定且不定期变更。若您的网络环境特殊,建议您安全策略方面调整为放行该域名。
视频介绍
首次调用API
下一步
通过OpenAPI门户进行在线调试,请访问短信服务在线调试入口。
批量发送短信,请使用SendBatchSms接口。
了解短信服务其他应用场景,请参见SDK示例。
发送富媒体短信,请了解什么是多媒体短信。
获取短信发送量等统计数据,请访问业务统计。
获取短信发送状态结果或用户回复的短信内容,请配置回执消息。
- 本页导读 (1)
- 准备工作
- 配置凭证
- 安装SDK
- 配置Java环境
- 使用SDK
- 1. 初始化客户端
- 2. 构建请求对象
- 3. 发起请求
- 代码示例
- 常见问题
- 如何查看AccessKey ID和AccessKey Secret?
- 如何自定义封装HTTP请求,然后使用curl命令或Postman等工具进行API调用?
- 短信服务API调用阿里云的IP服务器地址是固定的吗?
- 视频介绍
- 下一步