你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 Java 的 Azure 通信短信服务客户端库 - 版本 1.1.18
Azure 通信短信用于发送简单的短信。
源代码 | 包 (Maven) | API 参考文档 | 产品文档
入门
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- Java 开发工具包 (JDK) 8 或更高版本。
- Apache Maven。
- 已部署的通信服务资源。 可以使用 Azure 门户或Azure PowerShell对其进行设置。
添加包
包括 BOM 文件
请将 azure-sdk-bom 包含在项目中,以依赖于库的正式发布 (GA) 版本。 在以下代码段中,将 {bom_version_to_target} 占位符替换为版本号。 若要详细了解 BOM,请参阅 AZURE SDK BOM 自述文件。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然后在没有版本标记的依赖项部分中包含直接依赖项。
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-sms</artifactId>
</dependency>
</dependencies>
包括直接依赖项
如果要依赖于 BOM 中不存在的特定库版本,请将直接依赖项添加到项目,如下所示。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-sms</artifactId>
<version>1.1.18</version>
</dependency>
验证客户端
Azure Active Directory 令牌身份验证
DefaultAzureCredential
对象必须通过 credential () 函数传递到 SmsClientBuilder
。 还必须分别通过 endpoint () 和 httpClient () 函数设置终结点和 httpClient。
AZURE_CLIENT_SECRET
创建 AZURE_CLIENT_ID
DefaultAzureCredential 对象需要 和 AZURE_TENANT_ID
环境变量。
// You can find your endpoint and access key from your resource in the Azure Portal
String endpoint = "https://<RESOURCE_NAME>.communication.azure.com";
SmsClient smsClient = new SmsClientBuilder()
.endpoint(endpoint)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
访问密钥身份验证
SMS 使用具有资源访问密钥的 HMAC 身份验证。
必须通过 credential () 函数将 SmsClientBuilder
访问密钥提供给 。 还必须分别通过 endpoint () 和 httpClient () 函数设置终结点和 httpClient。
// You can find your endpoint and access key from your resource in the Azure Portal
String endpoint = "https://<resource-name>.communication.azure.com";
AzureKeyCredential azureKeyCredential = new AzureKeyCredential("<access-key>");
SmsClient smsClient = new SmsClientBuilder()
.endpoint(endpoint)
.credential(azureKeyCredential)
.buildClient();
或者,可以使用 connectionString () 函数提供整个连接字符串,而不是提供终结点和访问密钥。
// You can find your connection string from your resource in the Azure Portal
String connectionString = "https://<resource-name>.communication.azure.com/;<access-key>";
SmsClient smsClient = new SmsClientBuilder()
.connectionString(connectionString)
.buildClient();
关键概念
有两种不同形式的身份验证可以使用 Azure 通信短信服务。
示例
发送 1:1 短信
send
使用 或 sendWithResponse
函数将短信发送到单个电话号码。
SmsSendResult sendResult = smsClient.send(
"<from-phone-number>",
"<to-phone-number>",
"Weekly Promotion");
System.out.println("Message Id: " + sendResult.getMessageId());
System.out.println("Recipient Number: " + sendResult.getTo());
System.out.println("Send Result Successful:" + sendResult.isSuccessful());
发送 1:N 短信
若要向收件人列表发送短信,请使用收件人电话号码列表调用 send
或 sendWithResponse
函数。 还可以在 options 对象中添加 pass,以指定是否应启用送达报告并设置自定义标记。
SmsSendOptions options = new SmsSendOptions();
options.setDeliveryReportEnabled(true);
options.setTag("Marketing");
Iterable<SmsSendResult> sendResults = smsClient.sendWithResponse(
"<from-phone-number>",
Arrays.asList("<to-phone-number1>", "<to-phone-number2>"),
"Weekly Promotion",
options /* Optional */,
Context.NONE).getValue();
for (SmsSendResult result : sendResults) {
System.out.println("Message Id: " + result.getMessageId());
System.out.println("Recipient Number: " + result.getTo());
System.out.println("Send Result Successful:" + result.isSuccessful());
}
疑难解答
如果对服务器的请求失败,SMS 操作将引发异常。
如果错误是由单个消息引起的,则仅当整体请求失败时,才会引发异常。
请使用 标志 isSuccessful()
来验证每个结果,以验证消息是否已发送。
try {
SmsSendOptions options = new SmsSendOptions();
options.setDeliveryReportEnabled(true);
options.setTag("Marketing");
Response<Iterable<SmsSendResult>> sendResults = smsClient.sendWithResponse(
"<from-phone-number>",
Arrays.asList("<to-phone-number1>", "<to-phone-number2>"),
"Weekly Promotion",
options /* Optional */,
Context.NONE);
Iterable<SmsSendResult> smsSendResults = sendResults.getValue();
for (SmsSendResult result : smsSendResults) {
if (result.isSuccessful()) {
System.out.println("Successfully sent this message: " + result.getMessageId() + " to " + result.getTo());
} else {
System.out.println("Something went wrong when trying to send this message " + result.getMessageId() + " to " + result.getTo());
System.out.println("Status code " + result.getHttpStatusCode() + " and error message " + result.getErrorMessage());
}
}
} catch (RuntimeException ex) {
System.out.println(ex.getMessage());
}
后续步骤
- 在 Azure 通信服务 中阅读有关短信的详细信息
- 有关如何为短信配置传递报告的基本指南,请参阅 处理短信事件快速入门。
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。
提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。