你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Important
短信功能取决于所使用的电话号码和所在的国家/地区,具体取决于 Azure 帐单邮寄地址。 有关详细信息,请参阅 订阅资格。
通过使用 Azure CLI 中的通信模块发送短信,开始使用 Azure 通信服务。
完成本文需要从你的 Azure 帐户中扣取最多几美分的费用。
Prerequisites
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 活动的通信服务资源和连接字符串。 创建通信服务资源。
- 支持短信的电话号码、短代码或字母数字发送者 ID。 获取电话号码。
- 适用于您的操作系统的最新 Azure CLI 版本。
先决条件检查
- 在终端或命令窗口中,运行
az --version检查是否安装了 Azure CLI。
设置
安装通信模块
若要安装通信模块,请在终端或命令窗口中运行以下命令。
az extension add --name communication
登录 Azure CLI
你需要登录到 Azure CLI。 可以从终端运行 az login 命令并提供凭据进行登录。
确保使用正确的订阅
如果帐户中有多个订阅,请确保使用本教程的正确订阅。
在终端或命令窗口中,运行以下命令来检查当前订阅。
az account show
如果需要更改订阅,可以通过运行以下命令来进行更改。
az account set --subscription "<yourSubscriptionId>"
需要将 <yourSubscriptionId> 替换为实际订阅 ID,可在 Azure 门户的“订阅”部分找到该 ID。
(可选)使用 Azure CLI sms 操作而无需传入连接字符串
可以配置 AZURE_COMMUNICATION_CONNECTION_STRING 环境变量来使用 Azure CLI sms 操作,而无需使用 --connection_string 来传入连接字符串。 若要配置环境变量,请打开控制台窗口,然后从以下选项卡中选择操作系统。 将 <yourConnectionString> 替换为实际的连接字符串。
打开控制台窗口并输入以下命令:
setx AZURE_COMMUNICATION_CONNECTION_STRING "<yourConnectionString>"
添加环境变量后,可能需要重启任何正在运行的、需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。
Operations
发送 1:1 短信
要将短信发送给单个收件人,请使用单个收件人电话号码从 sms 模块调用 send 方法。
az communication sms send --sender "<fromPhoneNumber>" --recipient "<toPhoneNumber>" --message "Hello world via SMS for Azure CLI!" --connection-string "<yourConnectionString>"
在代码中进行下述替换:
- 将
<fromPhoneNumber>替换为与通信服务资源关联的已启用短信的电话号码。 - 将
<toPhoneNumber>替换为要向其发送消息的电话号码。 - 将
<yourConnectionString>替换为你的连接字符串。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。
<fromPhoneNumber> 的值也可以是短代码(例如 23456)或字母数字发送者 ID(例如 CONTOSO)。
发送 1:N 短信
要将短信发送给一组收件人,请使用多个收件人电话号码从 sms 模块调用 send 方法。
az communication sms send --sender "<fromPhoneNumber>" --recipient "<toPhoneNumber1>" "<toPhoneNumber2>" "<toPhoneNumber3>" --message "Hello world via SMS for Azure CLI!" --connection-string "<yourConnectionString>"
在代码中进行下述替换:
- 将
<fromPhoneNumber>替换为与通信服务资源关联的已启用短信的电话号码。 - 将
<toPhoneNumberN>替换为要向其发送消息的第 N 个电话号码。 - 将
<yourConnectionString>替换为你的连接字符串。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。 该值 <fromPhoneNumber> 也可以是短代码,例如 23456 或字母数字发送方 ID,例如 CONTOSO。
使用 DeliveryReport 和 Tag 发送短信
az communication sms send --sender "<fromPhoneNumber>" --recipient "<toPhoneNumber>" --message "Hello world via SMS for Azure CLI!" --connection-string "<yourConnectionString>" --deliveryReport --tag "<yourCustomTag>"
该 deliveryReport 参数是可用于配置传递报告的可选参数。 如果要在传递短信时发出事件,请使用此函数。 请参阅 “处理短信事件” 以配置您的短信的传递报告。
tag 参数是一个可选参数,可用于将标记应用于传送报告。
在代码中进行下述替换:
- 将
<fromPhoneNumber>替换为与通信服务资源关联的已启用短信的电话号码。 - 将
<toPhoneNumber>替换为要向其发送消息的电话号码。 - 将
<yourConnectionString>替换为你的连接字符串。 - 将
<yourCustomTag>替换为您的自定义标记。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。
<fromPhoneNumber> 的值也可以是短代码(例如 23456)或字母数字发送者 ID(例如 CONTOSO)。
通过使用通信服务 C# 短信 SDK 发送短信,开始使用 Azure 通信服务。
完成本文需要从你的 Azure 帐户中扣取最多几美分的费用。
Note
请参阅 Azure 示例 GitHub 上的最终代码 ,使用 .NET 发送短信。
Prerequisites
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 适用于你的操作系统的最新版 .NET Core SDK。
- 活动的通信服务资源和连接字符串。 创建通信服务资源。
- 支持短信的电话号码、短代码或字母数字发送者 ID。 获取电话号码。
先决条件检查
- 在终端或命令窗口中,运行
dotnet命令查看是否安装 .NET SDK。 - 若要查看与通信服务资源关联的电话号码,请登录到 Azure 门户 并找到通信服务资源。 在左侧导航窗格中,选择 “电话号码”。
设置应用程序环境
若要设置用于发送消息的环境,请执行以下部分中所述的步骤。
新建 C# 应用程序
在控制台窗口(例如 cmd、PowerShell 或 Bash)中,使用
dotnet new命令创建名为SmsQuickstart的新控制台应用。 此命令使用单个源文件创建一个简单的“Hello World”C# 项目, Program.cs。dotnet new console -o SmsQuickstart将目录更改为新创建的应用文件夹,并使用
dotnet build命令编译应用程序。cd SmsQuickstart dotnet build
安装包
仍在应用程序目录中操作,使用以下命令安装适用于 .NET 的 Azure 通信服务短信 SDK 包。
dotnet add package Azure.Communication.Sms --version 1.0.0将
using指令添加到 Program.cs 顶部以包含Azure.Communication命名空间。using System; using System.Collections.Generic; using Azure; using Azure.Communication; using Azure.Communication.Sms;
对象模型
以下类和接口用于处理适用于 C# 的 Azure 通信服务短信 SDK 的某些主要功能。
| Name | Description |
|---|---|
| SmsClient | 所有短信功能都需要此类。 使用订阅信息对其进行实例化,然后使用它发送短信。 |
| SmsSendOptions | 此类提供用于配置传送报告的选项。 如果 enable_delivery_report 设置为 True,则在传送成功时将发出一个事件。 |
| SmsSendResult | 此类包含来自短信服务的结果。 |
验证客户端
在文本编辑器中打开 Program.cs,并将 方法的主体替换为使用连接字符串初始化 Main 的代码SmsClient。 以下代码从名为 COMMUNICATION_SERVICES_CONNECTION_STRING 的环境变量中检索资源的连接字符串。 了解如何管理资源的连接字符串。
// This code retrieves your connection string
// from an environment variable.
string connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
SmsClient smsClient = new SmsClient(connectionString);
发送 1:1 短信
若要将短信发送给单个收件人,请从 SmsClient 调用 Send 或 SendAsync 函数。 将此代码添加到Main中方法的末尾:
SmsSendResult sendResult = smsClient.Send(
from: "<from-phone-number>",
to: "<to-phone-number>",
message: "Hello World via SMS"
);
Console.WriteLine($"Sms id: {sendResult.MessageId}");
在代码中进行下述替换:
- 将
<from-phone-number>替换为与通信服务资源关联的已启用短信的电话号码。 - 将
<to-phone-number>替换为要向其发送消息的电话号码。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。 该值 <from-phone-number> 也可以是短代码,例如 23456 或字母数字发送方 ID,例如 CONTOSO。
发送包含选项的 1: N 短信
若要将短信发送到接收者列表,请从 SmsClient 调用 Send 或 SendAsync 函数并提供接收者电话号码列表。 还可以提供可选参数,以指定是否应启用传送报告,以及设置自定义标记。
Response<IReadOnlyList<SmsSendResult>> response = smsClient.Send(
from: "<from-phone-number>",
to: new string[] { "<to-phone-number-1>", "<to-phone-number-2>" },
message: "Weekly Promotion!",
options: new SmsSendOptions(enableDeliveryReport: true) // OPTIONAL
{
Tag = "marketing", // custom tags
});
IEnumerable<SmsSendResult> results = response.Value;
foreach (SmsSendResult result in results)
{
Console.WriteLine($"Sms id: {result.MessageId}");
Console.WriteLine($"Send Result Successful: {result.Successful}");
}
在代码中进行下述替换:
- 将
<from-phone-number>替换为与通信服务资源关联的已启用短信的电话号码。 - 将
<to-phone-number-1>和<to-phone-number-2>替换为要向其发送消息的电话号码。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。 该值 <from-phone-number> 也可以是短代码,例如 23456 或字母数字发送方 ID,例如 CONTOSO。
enableDeliveryReport 参数是一个可选参数,可用于配置传送报告。 如果你想要在传送短信后发出事件,则此功能很有用。 请参阅处理短信事件快速入门,了解如何为短信配置传送报告。
可以使用 Tag 参数将标记应用于传送报告。
使用消息连接全局发送短信
Important
Azure 通信服务的这一功能目前以预览版提供。 预览版中的功能已公开发布,可供所有新客户和现有Microsoft客户使用。
预览版 API 和 SDK 在没有服务级别协议的情况下提供。 建议不要将它们用于生产工作负荷。 某些功能可能不受支持,或者功能可能受到限制。
有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
如果使用通过消息连接预配的电话号码,则可以使用标准 Azure 通信服务 SDK 发送短信。 唯一的区别是必须包含 MessagingConnect 对象来指定合作伙伴名称和 API 密钥。
Response<IReadOnlyList<SmsSendResult>> response = smsClient.Send(
from: "<from-messaging-connect-number>",
to: new string[] { "<to-phone-number-1>", "<to-phone-number-2>" },
message: "Weekly Promotion!",
options: new SmsSendOptions(enableDeliveryReport: true) // OPTIONAL
{
Tag = "marketing", // custom tags
MessagingConnect = new MessagingConnectOptions("<partner-api-key>", "infobip")
});
IEnumerable<SmsSendResult> results = response.Value;
foreach (SmsSendResult result in results)
{
Console.WriteLine($"Sms id: {result.MessageId}");
Console.WriteLine($"Send Result Successful: {result.Successful}");
}
替换以下值:
-
<from-messaging-connect-number>:通过 Messaging Connect 获取并链接到 ACS 资源的电话号码。 -
<to-phone-number-1>和<to-phone-number-2>:收件人电话号码。 -
<partner-api-key>:来自消息连接合作伙伴(例如 Infobip)的 API 密钥。
Tip
想要了解有关全局消息传递的详细信息? 查看 “消息连接”页
Warning
电话号码必须遵循 E.164 国际标准格式(例如 +14255550123)。
<rom-messaging-connect-number> 必须是已预配并同步到 ACS 资源的 Messaging Connect 号码或动态 Alpha 发送方 ID(例如 CONTOSO)。
enableDeliveryReport 参数是一个可选参数,可用于配置传送报告。 如果你想要在传送短信后发出事件,则此功能很有用。 请参阅处理短信事件快速入门,了解如何为短信配置传送报告。 可以使用 Tag 参数将标记应用于传送报告。
运行代码
从应用程序目录使用 dotnet run 命令运行应用程序。
dotnet run
代码示例
从 Azure 示例 GitHub 下载示例应用 ,使用 .NET 发送短信。
开始使用 Azure 通信服务,使用通信服务 JavaScript SMS SDK 发送短信。
完成本文需要从你的 Azure 帐户中扣取最多几美分的费用。
Note
请参阅最终的代码 Azure 示例 GitHub 使用 JavaScript 发送短信。
Prerequisites
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- Node.js 建议使用活动 LTS 和维护 LTS 版本(8.11.1 和 10.14.1)。
- 活动的通信服务资源和连接字符串。 创建通信服务资源。
- 支持短信的电话号码、短代码或字母数字发送者 ID。 获取电话号码。
先决条件检查
- 在终端或命令窗口中,运行
node --version以查看是否安装了 Node.js。 - 若要查看与通信服务资源关联的电话号码,请登录到 Azure 门户 并找到通信服务资源。 在左侧导航窗格中,选择 “电话号码”。
设置应用程序环境
若要设置用于发送消息的环境,请执行以下部分中所述的步骤。
创建新的 Node.js 应用程序
打开终端或命令窗口,运行以下命令以便为应用创建新目录,然后导航到该目录。
mkdir sms-quickstart && cd sms-quickstart运行以下命令,创建具有默认设置 的package.json 文件。
npm init -y使用文本编辑器在项目根目录中创建名为 send-sms.js 的文件。
在以下部分中,将本快速入门的所有源代码添加到所创建的 send-sms.js 文件。
安装包
使用 npm install 命令安装适用于 JavaScript 的 Azure 通信服务短信 SDK。
npm install @azure/communication-sms --save
--save 选项将该库作为 package.json 文件中的依赖项列出。
对象模型
以下类和接口用于处理适用于 Node.js 的 Azure 通信服务短信 SDK 的某些主要功能。
| Name | Description |
|---|---|
| SmsClient | 所有短信功能都需要此类。 使用订阅信息对其进行实例化,然后使用它发送短信。 |
| SmsSendRequest | 此接口是用于生成短信请求的模型。 你将使用它来配置接收者和发送者电话号码以及短信内容。 |
| SmsSendOptions | 此接口提供用于配置传送报告的选项。 如果 enableDeliveryReport 设置为 true,当传送成功时会发出一个事件。 |
| SmsSendResult | 此类包含来自短信服务的结果。 |
验证客户端
若要对客户端进行身份验证,请从 SDK 导入 SmsClient ,并使用连接字符串对其进行实例化。 可以从环境变量中检索资源的连接字符串。 例如,本部分中的代码从 COMMUNICATION_SERVICES_CONNECTION_STRING 环境变量中检索连接字符串。 了解如何管理资源的连接字符串。
若要导入客户端并将其实例化,请执行以下操作:
创建名为 send-sms.js的文件。
将以下代码添加到 send-sms.js。
const { SmsClient } = require('@azure/communication-sms');
// This code retrieves your connection string
// from an environment variable.
const connectionString = process.env['COMMUNICATION_SERVICES_CONNECTION_STRING'];
// Instantiate the SMS client.
const smsClient = new SmsClient(connectionString);
发送 1:N 短信
若要将短信发送到接收者列表,请从 SmsClient 调用 send 函数并提供接收者电话号码列表。 如果要向单个接收者发送消息,请仅在列表中包含一个号码。 将此代码添加到 send-sms.js末尾:
async function main() {
const sendResults = await smsClient.send({
from: "<from-phone-number>",
to: ["<to-phone-number-1>", "<to-phone-number-2>"],
message: "Hello World 👋🏻 via SMS"
});
// Individual messages can encounter errors during sending.
// Use the "successful" property to verify the status.
for (const sendResult of sendResults) {
if (sendResult.successful) {
console.log("Success: ", sendResult);
} else {
console.error("Something went wrong when trying to send this message: ", sendResult);
}
}
}
main();
在代码中进行下述替换:
- 将
<from-phone-number>替换为与通信服务资源关联的已启用短信的电话号码。 - 将
<to-phone-number-1>和<to-phone-number-2>替换为要向其发送消息的电话号码。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。
<from-phone-number> 的值也可以是短代码(例如 23456)或字母数字发送者 ID(例如 CONTOSO)。
发送包含选项的 1: N 短信
还可以提供一个选项对象,以指定是否应启用传送报告,以及设置自定义标记。
async function main() {
const sendResults = await smsClient.send({
from: "<from-phone-number>",
to: ["<to-phone-number-1>", "<to-phone-number-2>"],
message: "Weekly Promotion!"
}, {
// Optional parameters
enableDeliveryReport: true,
tag: "marketing"
});
// Individual messages can encounter errors during sending.
// Use the "successful" property to verify the status.
for (const sendResult of sendResults) {
if (sendResult.successful) {
console.log("Success: ", sendResult);
} else {
console.error("Something went wrong when trying to send this message: ", sendResult);
}
}
}
main();
在代码中进行下述替换:
- 将
<from-phone-number>替换为与通信服务资源关联的已启用短信的电话号码。 - 将
<to-phone-number-1>和<to-phone-number-2>替换为要向其发送消息的电话号码。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。
<from-phone-number> 的值也可以是短代码(例如 23456)或字母数字发送者 ID(例如 CONTOSO)。
enableDeliveryReport 参数是一个可选参数,可用于配置传送报告。 如果你想要在传送短信后发出事件,则此功能很有用。 请参阅处理短信事件快速入门,了解如何为短信配置传送报告。
tag 参数是可选的。 可以使用该参数将标记应用于传送报告。
使用消息连接全局发送短信
Important
Azure 通信服务的这一功能目前以预览版提供。 预览版中的功能已公开发布,可供所有新客户和现有Microsoft客户使用。
预览版 API 和 SDK 在没有服务级别协议的情况下提供。 建议不要将它们用于生产工作负荷。 某些功能可能不受支持,或者功能可能受到限制。
有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
如果使用通过消息连接预配的电话号码,则可以使用标准 Azure 通信服务 JavaScript SDK 发送短信。 唯一的区别是必须包含 messagingConnect 对象来指定合作伙伴名称和 API 密钥。
async function main() {
const sendResults = await smsClient.send({
from: "<from-messaging-connect-number>",
to: ["<to-phone-number-1>", "<to-phone-number-2>"],
message: "Weekly Promotion!"
}, {
// Optional parameters
enableDeliveryReport: true,
tag: "marketing", // custom tag
messagingConnect: {
apiKey: "<partner-api-key>",
partner: "infobip"
}
});
for (const sendResult of sendResults) {
if (sendResult.successful) {
console.log("Success:", sendResult);
} else {
console.error("Failed to send message:", sendResult);
}
}
}
main();
替换以下值:
-
<from-messaging-connect-number>:通过 Messaging Connect 获取并链接到 ACS 资源的电话号码。 -
<to-phone-number-1>和<to-phone-number-2>:收件人电话号码。 -
<partner-api-key>:来自消息连接合作伙伴的 API 密钥(例如 Infobip)。
Tip
想要了解有关全局消息传递的详细信息? 查看 “消息连接”页
Warning
电话号码必须遵循 E.164 国际标准格式(例如 +14255550123)。
<from-messaging-connect-number> 必须是已预配并同步到 ACS 资源的 Messaging Connect 号码或动态 Alpha 发送方 ID(例如 CONTOSO)。
该 enableDeliveryReport 参数允许配置传递报告。 该 tag 参数是可选的,可用于向传递报表应用自定义标记。 若要配置短信传递报告,请参阅 “处理 SMS 事件 ”快速入门。
运行代码
使用node命令来运行你添加到send-sms.js文件中的代码。
node ./send-sms.js
通过使用通信服务 Python 短信 SDK 发送短信,开始使用 Azure 通信服务。
完成本快速入门会从你的 Azure 帐户中扣取最多几美分的费用。
Note
有关本文的最终代码,请参阅 GitHub Azure 示例 使用 Python 管理电话号码。
Prerequisites
先决条件检查
- 在终端或命令窗口中,运行
python --version命令来查看是否安装了 Python。 - 若要查看与通信服务资源关联的电话号码,请登录到 Azure 门户 并找到通信服务资源。 在左侧导航窗格中,选择 “电话号码”。
设置应用程序环境
若要设置用于发送消息的环境,请完成以下部分。
创建新的 Python 应用程序
打开终端或命令窗口。 使用以下命令为应用创建新目录并导航到该目录。
mkdir sms-quickstart && cd sms-quickstart使用文本编辑器在项目根目录中创建名为 send-sms.py 的文件,并添加程序的结构,包括基本异常处理。
import os from azure.communication.sms import SmsClient try: # Quickstart code goes here. except Exception as ex: print('Exception:') print(ex)
在以下部分中,将本快速入门的所有源代码添加到所创建的 send-sms.py 文件。
安装包
仍在应用程序目录中操作,使用以下命令安装适用于 Python 的 Azure 通信服务短信 SDK 包。
pip install azure-communication-sms
对象模型
以下类和接口用于处理适用于 Python 的 Azure 通信服务短信 SDK 的某些主要功能。
| Name | Description |
|---|---|
| SmsClient | 所有短信功能都需要此类。 使用订阅信息对其进行实例化,并使用它发送短信。 |
| SmsSendResult | 此类包含来自短信服务的结果。 |
验证客户端
使用连接字符串实例化 SmsClient 。 了解如何管理资源的连接字符串。
# Create the SmsClient object that you use to send SMS messages.
sms_client = SmsClient.from_connection_string(<connection_string>)
为简单起见,本快速入门使用了连接字符串,但在生产环境中,我们建议使用服务主体。
发送 1:1 短信
若要向单个收件人发送短信,请使用单个收件人电话号码从 send 调用该方法。 还可以提供可选参数,以指定是否应启用传送报告,以及设置自定义标记。 将此代码添加到 try 块的末尾:
# Call send() with SMS values.
sms_responses = sms_client.send(
from_="<from-phone-number>",
to="<to-phone-number>",
message="Hello World via SMS",
enable_delivery_report=True, # optional property
tag="custom-tag") # optional property
在代码中进行下述替换:
- 将
<from-phone-number>替换为与通信服务关联并启用了短信功能的电话号码。 - 将
<to-phone-number>替换为要向其发送消息的电话号码。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。
<from-phone-number> 的值也可以是短代码(例如 23456)或字母数字发送者 ID(例如 CONTOSO)。
发送 1:N 短信
若要向收件人列表发送短信,请使用收件人电话号码列表从 send 调用该方法。 还可以提供可选参数,以指定是否应启用传送报告,以及设置自定义标记。 将此代码添加到 try 块的末尾:
# Call send() with SMS values.
sms_responses = sms_client.send(
from_="<from-phone-number>",
to=["<to-phone-number-1>", "<to-phone-number-2>"],
message="Hello World via SMS",
enable_delivery_report=True, # optional property
tag="custom-tag") # optional property
在代码中进行下述替换:
- 将
<from-phone-number>替换为与通信服务关联并启用了短信功能的电话号码。 - 将
<to-phone-number-1>和<to-phone-number-2>替换为要向其发送消息的电话号码。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。 该值 <from-phone-number> 也可以是短代码,例如 23456 或字母数字发送方 ID,例如 CONTOSO。
可选参数
该 enable_delivery_report 参数是可用于配置传递报告的可选参数。 如果要在传递短信时发出事件,请使用此函数。 请参阅 “处理短信事件” 以配置您的短信的传递报告。
tag 参数是一个可选参数,可用于将标记应用于传送报告。
运行代码
从应用程序目录使用 python 命令运行应用程序。
python send-sms.py
完整的 Python 脚本如下代码所示:
import os
from azure.communication.sms import SmsClient
try:
# Create the SmsClient object that you use to send SMS messages.
sms_client = SmsClient.from_connection_string("<connection string>")
# Call send() with SMS values.
sms_responses = sms_client.send(
from_="<from-phone-number>",
to="<to-phone-number>",
message="Hello World via SMS",
enable_delivery_report=True, # optional property
tag="custom-tag") # optional property
except Exception as ex:
print('Exception:')
print(ex)
通过使用通信服务 Java 短信 SDK 发送短信,开始使用 Azure 通信服务。
完成本文需要从你的 Azure 帐户中扣取最多几美分的费用。
Note
请参阅最终的代码 Azure 示例 GitHub 使用 Java 发送短信。
Prerequisites
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- Java 开发工具包 (JDK) 版本 8 或更高版本。
- Apache Maven。
- 活动的通信服务资源和连接字符串。 创建通信服务资源。
- 支持短信的电话号码、短代码或字母数字发送者 ID。 获取电话号码。
先决条件检查
- 在终端或命令窗口中,运行
mvn -v检查是否安装了 Maven。 - 若要查看与通信服务资源关联的电话号码,请登录到 Azure 门户 并找到通信服务资源。 在左侧导航窗格中,选择 “电话号码”。
设置应用程序环境
若要设置用于发送消息的环境,请完成以下部分。
创建新的 Java 应用程序
打开终端或命令窗口,并导航到要在其中创建 Java 应用程序的目录。 若要从 maven-archetype-quickstart 模板生成 Java 项目,请运行以下命令。
- 命令提示符
mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
- PowerShell
mvn archetype:generate "-DgroupId=com.communication.quickstart" "-DartifactId=communication-quickstart" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DarchetypeVersion=1.4" "-DinteractiveMode=false"
generate 目标将创建一个名称与 artifactId 值相同的目录。 在此目录下,src/main/java 目录包含项目源代码,src/test/java 目录包含测试源,pom.xml 文件是项目的项目对象模型 (POM)。
安装包
在文本编辑器中打开 pom.xml 文件。 将以下依赖项元素添加到依赖项组。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-communication-sms</artifactId>
<version>1.0.1</version>
</dependency>
设置应用框架
在文本编辑器中打开 /src/main/java/com/communication/quickstart/App.java,添加 import 指令并删除 语句:
package com.communication.quickstart;
import com.azure.communication.sms.models.*;
import com.azure.core.credential.AzureKeyCredential;
import com.azure.communication.sms.*;
import com.azure.core.util.Context;
import java.util.Arrays;
public class App
{
public static void main( String[] args )
{
// Quickstart code goes here.
}
}
对象模型
以下类和接口用于处理适用于 Java 的 Azure 通信服务短信 SDK 的某些主要功能。
| Name | Description |
|---|---|
| SmsClientBuilder | 此类创建 SmsClient。 为此类提供终结点、凭据和 HTTP 客户端。 |
| SmsClient | 所有短信功能都需要此类。 用其发送短信。 |
| SmsSendOptions | 此类提供用于添加自定义标记和配置传送报告的选项。 如果 deliveryReportEnabled 设置为 true,则在传送成功时将发出一个事件。 |
| SmsSendResult | 此类包含来自短信服务的结果。 |
验证客户端
若要对客户端进行身份验证,请使用连接字符串实例化 SmsClient。 对于凭据,请使用 Azure 门户中的 Key。 了解如何管理资源的连接字符串。 还可以使用任何实现 com.azure.core.http.HttpClient 接口的自定义 HTTP 客户端来初始化此客户端。
若要实例化客户端,请将以下代码添加到 main 方法:
// You can get 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-credential>");
SmsClient smsClient = new SmsClientBuilder()
.endpoint(endpoint)
.credential(azureKeyCredential)
.buildClient();
还可以使用 connectionString 函数提供整个连接字符串,而不是提供终结点和访问密钥。
// You can get your connection string from your resource in the Azure portal.
String connectionString = "endpoint=https://<resource-name>.communication.azure.com/;accesskey=<access-key>";
SmsClient smsClient = new SmsClientBuilder()
.connectionString(connectionString)
.buildClient();
发送 1:1 短信
若要将短信发送给单个收件人,请使用单个收件人的电话号码从 SmsClient 调用 send 方法。 还可以提供可选参数,以指定是否应启用传送报告,以及设置自定义标记。
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());
在代码中进行下述替换:
- 将
<from-phone-number>替换为与通信服务资源关联的已启用短信的电话号码。 - 将
<to-phone-number>替换为要向其发送消息的电话号码。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。 该值 <from-phone-number> 也可以是短代码,例如 23456 或字母数字发送方 ID,例如 CONTOSO。
发送包含选项的 1: N 短信
若要将短信发送到收件人列表,请使用收件人电话号码列表调用 send 方法。 还可以提供可选参数,以指定是否应启用传送报告,以及设置自定义标记。
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());
}
在代码中进行下述替换:
- 请将
<from-phone-number>替换为与您的通信服务资源关联的支持短信功能的电话号码 - 将
<to-phone-number-1>和<to-phone-number-2>替换为要向其发送消息的电话号码。
Warning
以 E.164 国际标准格式提供电话号码,例如 +14255550123。
<from-phone-number> 的值也可以是短代码(例如 23456)或字母数字发送者 ID(例如 CONTOSO)。
setDeliveryReportEnabled 方法用于配置传送报告。 如果你想要在传送短信后发出事件,则此功能很有用。 请参阅处理短信事件快速入门,了解如何为短信配置传送报告。
若要将标记应用于传递报表,请使用 setTag 该方法。
运行代码
导航到包含 pom.xml 文件的目录,并使用
mvn命令编译项目。mvn compile生成包。
mvn package运行以下
mvn命令以执行应用。- 命令提示符
mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false- PowerShell
mvn exec:java "-Dexec.mainClass=com.communication.quickstart.App" "-Dexec.cleanupDaemonThreads=false"
使用 Azure 通信服务短信 连接器和 Azure 逻辑应用 创建可发送短信的自动化工作流。
本文介绍如何自动发送短信以响应触发器事件,这是逻辑应用工作流中的第一步。 触发器事件可以是传入的电子邮件、定期计划、 Azure 事件网格 资源事件或 Azure 逻辑应用支持的任何其他触发器。
尽管本文重点介绍如何使用连接器响应触发器,但也可以使用连接器来响应其他动作,这些动作是工作流中接续触发器的步骤。 如果不熟悉逻辑应用,请参阅“ 什么是 Azure 逻辑应用 ”,然后再开始。
Note
完成本文需要从你的 Azure 帐户中扣取最多几美分的费用。
Prerequisites
具备有效订阅的 Azure 帐户,或免费创建一个 Azure 帐户。
有效的 Azure 通信服务资源,或创建一个通信服务资源。
有效的逻辑应用资源(逻辑应用),或创建一个空白逻辑应用,但具有你要使用的触发器。 目前,Azure 通信服务短信连接器仅提供操作,因此逻辑应用至少需要一个触发器。
支持短信的电话号码、短代码或字母数字发送者 ID。 获取电话号码。
Important
短信和 PSTN 功能取决于所使用的电话号码和所在的国家/地区,具体取决于 Azure 帐单邮寄地址。 有关详细信息,请访问 订阅资格 文档。
“添加短信”操作
若要使用 Azure 通信服务 SMS 连接器将 “发送短信 ”作添加为工作流中的新步骤,请在 Azure 门户中 执行以下步骤,并在逻辑应用设计器中打开逻辑应用工作流:
在设计器中,在要添加新动作的步骤中,选择“新建步骤”。 或者,若要在步骤之间添加新操作,请将指针移到这些步骤之间的箭头上方,选择加号 (+),然后选择“添加操作”。
在“选择操作”搜索框中,输入
Azure Communication Services。 从作列表中,选择“ 发送短信”。
现在,创建与通信服务资源的连接。
在同一订阅中:
为连接提供一个名称。
选择 Azure 通信服务资源。
选择 创建。
使用来自通信服务资源的连接字符串:
为连接提供一个名称。
从下拉选项中选择 ConnectionString 身份验证。
输入来自通信服务资源的连接字符串。
选择 创建。
使用服务主体(请参考“创建服务主体”):
为连接提供一个名称。
从下拉选项中选择“服务主体(Microsoft Entra 应用程序)身份验证”。
输入服务主体的租户 ID、客户端 ID 和客户端密码。
输入通信服务资源的通信服务终结点 URL 值。
选择 创建。
在 “发送短信 ”作中,提供以下信息:
源电话号码和目标电话号码。 为了进行测试,你可以使用自己的电话号码作为目标电话号码。
你要发送的短信内容,例如“Hello from Logic Apps!”。
下面是包含示例信息的 “发送短信 ”作:
完成后,请在设计器工具栏上选择“保存”。
接下来,运行工作流来进行测试。
测试工作流
若要手动启动工作流,请在设计器工具栏上选择“ 运行”。 或者,可等待触发器触发。 无论哪种情况,工作流都应将短信发送到指定的目标电话号码。 有关详细信息,请查看如何运行工作流。
清理工作流资源
若要清理逻辑应用工作流和相关资源,请参阅如何清理逻辑应用资源。
Troubleshooting
若要对与短信发送相关的问题进行故障排除,可以使用事件网格启用短信发送报告,捕获有关发送的详细信息。
清理资源
如果想要清理并删除通信服务订阅,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。 了解有关清理资源的详细信息。
免费电话验证
若要使用新的免费电话号码发送短信,必须完成免费验证过程。 有关如何完成免费电话号码验证的指导,请参阅有关如何提交免费验证的快速入门。 只有已经过完全验证的免费电话号码才有权发送短信流量。 系统会阻止从非验证免费电话号码定向到美国和加拿大的电话号码的任何短信流量。
后续步骤
本文介绍如何使用 Azure 通信服务发送短信。