你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 JavaScript 的 Azure 通信短信客户端库 - 版本 1.1.0

Azure 通信短信服务使开发人员能够从可通过通信服务购买的电话号码发送短信。

入门

先决条件

安装

npm install @azure/communication-sms

如何获取电话号码

可以从 Azure 门户获取电话号码并将其分配给通信服务资源。 有关如何使用 Azure 门户 获取电话号码的说明,可 在此处找到。

还可以使用 @azure/communication-phone-numbers 程序包获取电话号码。 有关如何使用该包的说明,请参阅 包的自述文件

浏览器支持

JavaScript 捆绑包

若要在浏览器中使用此客户端库,首先需要使用捆绑程序。 有关如何执行此操作的详细信息,请参阅捆绑 文档

关键概念

SmsClient

SmsClient 是使用此客户端库的开发人员的主要接口。 它提供发送短信的异步方法。

示例

身份验证

可以从 Azure 门户中的通信服务资源获取密钥和/或连接字符串。 获得密钥后,可以使用以下任一方法进行身份验证:

使用连接字符串

import { SmsClient } from "@azure/communication-sms";

const connectionString = `endpoint=https://<resource-name>.communication.azure.com/;accessKey=<Base64-Encoded-Key>`;
const client = new SmsClient(connectionString);

使用 创建凭据 AzureKeyCredential

import { AzureKeyCredential } from "@azure/core-auth";
import { SmsClient } from "@azure/communication-sms";

const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new AzureKeyCredential("<Base64-Encoded-Key>");
const client = new SmsClient(endpoint, credential);

使用 Azure Active Directory 托管标识

大多数示例中都使用客户端 API 密钥身份验证,但也可以使用 Azure 标识库通过 Azure Active Directory 进行身份验证。 若要使用如下所示的 DefaultAzureCredential 提供程序或 Azure SDK 随附的其他凭据提供程序,请安装 @azure/identity 包:

npm install @azure/identity

@azure/identity 包提供应用程序可用于执行此操作的各种凭据类型。 @azure/identity 的自述文件提供了更多详细信息和示例来帮助你入门。 AZURE_CLIENT_SECRET,需要AZURE_CLIENT_ID和AZURE_TENANT_ID环境变量来创建 DefaultAzureCredential 对象。

import { DefaultAzureCredential } from "@azure/identity";
import { SmsClient } from "@azure/communication-sms";

const endpoint = "https://<resource-name>.communication.azure.com";
let credential = new DefaultAzureCredential();
const client = new SmsClient(endpoint, credential);

发送 1:N 短信

若要发送短信,请从 SmsClient调用 send 函数。 需要传入 SmsSendRequest 对象。 还可以在 options 对象中添加传递,以指定是否应启用传递报表并为报表设置自定义标记。 返回 的 SmsSendResult 数组。 标志 successful 用于验证是否成功发送了每条消息。

const sendResults = await client.send(
  {
    from: "<from-phone-number>", // Your E.164 formatted phone number used to send SMS
    to: ["<to-phone-number-1>", "<to-phone-number-2>"], // The list of E.164 formatted phone numbers to which message is being sent
    message: "Weekly Promotion!" // The message being sent
  },
  {
    enableDeliveryReport: true,
    tag: "marketing"
  }
);

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);
  }
}

疑难解答

如果对服务器的请求失败,SMS 操作将引发异常。 如果错误是由单个消息引起的,则不会引发异常,仅当总体请求失败时。 请使用 successful 标志验证每个结果,以验证消息是否已发送。

try {
  const sendResults = await client.send({
    from: "<from-phone-number>", // Your E.164 formatted phone number used to send SMS
    to: ["<to-phone-number-1>", "<to-phone-number-2>"], // The list of E.164 formatted phone numbers to which message is being sent
    message: "Hello World via SMS!" // The message being sent
  });
  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);
    }
  }
} catch (e) {
  console.error(e.message);
}

后续步骤

贡献

若要为此库做出贡献,请阅读贡献指南,详细了解如何生成和测试代码。

曝光数