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

快速入门:创建和管理通信服务资源

通过预配第一个通信服务资源来开始使用 Azure 通信服务。 可以通过 Azure 门户或 .NET 管理 SDK 预配通信服务资源。 利用管理 SDK 和 Azure 门户,可以通过 Azure 资源管理器(Azure 的部署和管理服务)创建、配置、更新和删除资源和接口。 该 SDK 中提供的所有功能都可在 Azure 门户中使用。

警告

请注意,不能同时创建一个资源组作为 Azure 通信服务的资源。 创建资源时,必须使用已创建的资源组。

先决条件

请注意,如果计划使用电话号码,则不能使用免费试用帐户。 如果计划在创建资源之前购买电话号码,请检查你的订阅是否符合所有要求

创建 Azure 通信服务资源

若要创建 Azure 通信服务资源,请先登录到 Azure 门户。 在页面的左上角,选择“+ 创建资源”

突出显示 Azure 门户中“创建资源”按钮的屏幕截图。

在“搜索市场”输入字段中或门户顶部的搜索栏中输入“通信” 。

屏幕截图显示搜索栏中的通信服务搜索内容。

在结果中选择“通信服务”,然后选择“添加”。

显示“通信服务”面板的屏幕截图,突出显示“创建”按钮。

现在可以配置通信服务资源。 在创建进程的第一页上,系统将要求你指定:

  • 订阅
  • 资源组(可以新建或选择现有的资源组)
  • Azure 通信服务资源的名称
  • 将要与资源关联的地理位置

在下一步中,可以为资源分配标记。 使用标记组织 Azure 资源。 有关标记的详细信息,请参阅资源标记文档

最后,你可以查看配置并“创建”资源。 请注意部署将需要几分钟时间才能完成。

管理通信服务资源

若要管理通信服务资源,请转到 Azure 门户,然后搜索并选择“Azure 通信服务”。

在“通信服务”页上,选择资源的名称。

资源的“概述”页包含用于基本管理(例如浏览、停止、启动、重启和删除)的选项。 你可以在资源页的左侧菜单中找到更多配置选项。

先决条件

如果你打算使用电话号码,则不能使用免费试用帐户。 如果计划在创建资源之前购买电话号码,请检查你的订阅是否符合所有要求

创建 Azure 通信服务资源

若要创建 Azure 通信服务资源,请先登录 Azure CLI。 可以从终端运行 az login 命令并提供凭据进行登录。 运行以下命令以创建资源:

az communication create --name "<acsResourceName>" --location "Global" --data-location "United States" --resource-group "<resourceGroup>"

如果要选择特定订阅,你还可以指定 --subscription 标志并提供订阅 ID。

az communication create --name "<acsResourceName>" --location "Global" --data-location "United States" --resource-group "<resourceGroup> --subscription "<subscriptionId>"

可使用以下选项来配置通信服务资源:

  • 资源组
  • Azure 通信服务资源的名称
  • 将要与资源关联的地理位置

在下一步中,可以为资源分配标记。 使用标记组织 Azure 资源。 有关标记的详细信息,请参阅资源标记文档

管理通信服务资源

若要向通信服务资源添加标记,请运行以下命令: 你也可以指向特定的订阅。

az communication update --name "<communicationName>" --tags newTag="newVal1" --resource-group "<resourceGroup>"

az communication update --name "<communicationName>" --tags newTag="newVal2" --resource-group "<resourceGroup>" --subscription "<subscriptionId>"

az communication show --name "<communicationName>" --resource-group "<resourceGroup>"

az communication show --name "<communicationName>" --resource-group "<resourceGroup>" --subscription "<subscriptionId>"

有关其他命令的信息,请参阅 Azure 通信 CLI

先决条件

请注意,如果计划使用电话号码,则不能使用免费试用帐户。 如果计划在创建资源之前购买电话号码,请检查你的订阅是否符合所有要求

安装 SDK

首先,在 C# 项目中加入通信服务管理 SDK:

using Azure.ResourceManager.Communication;

订阅 ID

你需要知道 Azure 订阅的 ID。 可以从门户获取此内容:

  1. 登录到 Azure 帐户
  2. 选择左侧边栏中的“订阅”
  3. 选择所需的任何订阅
  4. 单击“概览”
  5. 选择订阅 ID

在本快速入门中,我们假设你已将订阅 ID 存储在名为 AZURE_SUBSCRIPTION_ID 的环境变量中。

身份验证

若要与 Azure 通信服务进行通信,你必须首先向 Azure 验证自己的身份。 通常使用服务主体标识执行此操作。

选项 1:托管标识

如果你的代码在 Azure 中作为服务运行,则进行身份验证的最简单方法是从 Azure 获取托管标识。 详细了解托管标识

支持托管标识的 Azure 服务

如何使用应用服务和 Azure Functions 的托管标识

系统分配的托管标识

using Azure.Identity;
using Azure.ResourceManager.Communication;
using Azure.ResourceManager.Communication.Models;
using System;
...
var subscriptionId = "AZURE_SUBSCRIPTION_ID";
var acsClient = new CommunicationManagementClient(subscriptionId, new ManagedIdentityCredential());

用户分配的托管标识

你创建的托管标识的 ClientId 必须显式传递到 ManagedIdentityCredential

using Azure.Identity;
using Azure.ResourceManager.Communication;
using Azure.ResourceManager.Communication.Models;
using System;
...
var subscriptionId = "AZURE_SUBSCRIPTION_ID";
var managedIdentityCredential = new ManagedIdentityCredential("AZURE_CLIENT_ID");
var acsClient = new CommunicationManagementClient(subscriptionId, managedIdentityCredential);

选项 2:Service Principal

你可能希望使用自己管理的服务主体向 Azure 进行身份验证,而不是使用托管标识。 若要了解详细信息,请参阅在 Microsoft Entra ID 中创建和管理服务主体的文档。

创建服务主体之后,需要从 Azure 门户收集有关该主体的以下信息:

  • 客户端 ID
  • 客户端机密
  • 租户 ID

分别将这些值存储在名为 AZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_TENANT_ID 的环境变量中。 随后可以创建类似于下面这样的通信服务管理客户端:

using Azure.Identity;
using Azure.ResourceManager.Communication;
using Azure.ResourceManager.Communication.Models;
using System;
...
var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
var acsClient = new CommunicationManagementClient(subscriptionId, new EnvironmentCredential());

选项 3:用户标识

如果要代表交互用户调用 Azure,而不是使用服务标识,则可以使用以下代码创建 Azure 通信服务管理客户端。 这会打开一个浏览器窗口,它提示用户输入其 MSA 或 Microsoft Entra 凭据。

using Azure.Identity;
using Azure.ResourceManager.Communication;
using Azure.ResourceManager.Communication.Models;
using System;
...
var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
var communicationServiceClient = new CommunicationManagementClient(subscriptionId, new InteractiveBrowserCredential());

管理通信服务资源

与 Azure 资源交互

现在你已进行了身份验证,可以使用管理客户端进行 API 调用。

对于以下每个示例,我们会将通信服务资源分配给现有资源组。

如需创建资源组,你可以使用 Azure 门户Azure 资源管理器 SDK 完成此操作。

创建和管理通信服务资源

我们的通信服务管理 SDK 客户端实例 (Azure.ResourceManager.Communication.CommunicationManagementClient) 可以用于对通信服务资源执行操作。

创建通信服务资源

创建通信服务资源时,会指定资源组名称和资源名称。 请注意,Location 属性始终是 global,并且在公共预览版期间,DataLocation 值必须是 UnitedStates

var resourceGroupName = "myResourceGroupName";
var resourceName = "myResource";
var resource = new CommunicationServiceResource { Location = "Global", DataLocation = "UnitedStates"  };
var operation = await acsClient.CommunicationService.StartCreateOrUpdateAsync(resourceGroupName, resourceName, resource);
await operation.WaitForCompletionAsync();

更新通信服务资源

...
var resourceGroupName = "myResourceGroupName";
var resourceName = "myResource";
var resource = new CommunicationServiceResource { Location = "Global", DataLocation = "UnitedStates" };
resource.Tags.Add("environment","test");
resource.Tags.Add("department","tech");
// Use existing resource name and new resource object
var operation = await acsClient.CommunicationService.StartCreateOrUpdateAsync(resourceGroupName, resourceName, resource);
await operation.WaitForCompletionAsync();

列出所有通信服务资源

var resources = acsClient.CommunicationService.ListBySubscription();
foreach (var resource in resources)
{
    Console.WriteLine(resource.Name);
}

删除通信服务资源

var resourceGroupName = "myResourceGroupName";
var resourceName = "myResource";
await acsClient.CommunicationService.StartDeleteAsync(resourceGroupName, resourceName);

管理密钥和连接字符串

每个通信服务资源都有一对访问密钥和对应的连接字符串。 这些密钥可以使用管理 SDK 进行访问,随后由其他通信服务 SDK 用于向 Azure 通信服务验证自己的身份。

获取通信服务资源的访问密钥

var resourceGroupName = "myResourceGroupName";
var resourceName = "myResource";
var keys = await acsClient.CommunicationService.ListKeysAsync(resourceGroupName, resourceName);

Console.WriteLine(keys.Value.PrimaryConnectionString);
Console.WriteLine(keys.Value.SecondaryConnectionString);

注册通信服务资源的访问密钥

var resourceGroupName = "myResourceGroupName";
var resourceName = "myResource";
var keyParams = new RegenerateKeyParameters { KeyType = KeyType.Primary };
var keys = await acsClient.CommunicationService.RegenerateKeyAsync(resourceGroupName, resourceName, keyParams);

Console.WriteLine(keys.Value.PrimaryKey);

先决条件

请注意,如果计划使用电话号码,则不能使用免费试用帐户。 如果计划在创建资源之前购买电话号码,请检查你的订阅是否符合所有要求

创建 Azure 通信服务资源

若要创建 Azure 通信服务资源,请先登录 Azure CLI。 你可以通过使用命令 Connect-AzAccount 和提供凭据在终端完成此操作。

首先,请确保使用以下命令安装 Azure 通信服务模块 Az.Communication

PS C:\> Install-Module Az.Communication

运行以下命令以创建资源:

PS C:\> New-AzCommunicationService -ResourceGroupName ContosoResourceProvider1 -Name ContosoAcsResource1 -DataLocation UnitedStates -Location Global

如果要选择特定订阅,你还可以指定 --subscription 标志并提供订阅 ID。

PS C:\> New-AzCommunicationService -ResourceGroupName ContosoResourceProvider1 -Name ContosoAcsResource1 -DataLocation UnitedStates -Location Global -SubscriptionId SubscriptionID

可使用以下选项来配置通信服务资源:

  • 资源组
  • Azure 通信服务资源的名称
  • 将要与资源关联的地理位置

在下一步中,可以为资源分配标记。 使用标记组织 Azure 资源。 有关标记的详细信息,请参阅资源标记文档

管理通信服务资源

若要向通信服务资源添加标记,请运行以下命令: 你也可以指向特定的订阅。

PS C:\> Update-AzCommunicationService -Name ContosoAcsResource1 -ResourceGroupName ContosoResourceProvider1 -Tag @{ExampleKey1="ExampleValue1"}

PS C:\> Update-AzCommunicationService -Name ContosoAcsResource1 -ResourceGroupName ContosoResourceProvider1 -Tag @{ExampleKey1="ExampleValue1"} -SubscriptionId SubscriptionID

若要列出给定订阅中的所有 Azure 通信服务资源,请使用以下命令:

PS C:\> Get-AzCommunicationService -SubscriptionId SubscriptionID

若要列出给定资源的所有信息,请使用以下命令:

PS C:\> Get-AzCommunicationService -Name ContosoAcsResource1 -ResourceGroupName ContosoResourceProvider1

访问连接字符串和服务终结点

通信服务 SDK 可以使用连接字符串连接到 Azure 并向其进行身份验证。 你可以从 Azure 门户或使用 Azure 资源管理器 API 以编程方式访问通信服务连接字符串和服务终结点。

导航到通信服务资源之后,请从导航菜单中选择“密钥”并复制“连接字符串”或“终结点”值供通信服务 SDK 使用 。 你可以访问主密钥和辅助密钥。 在你希望向第三方或过渡环境提供对通信服务资源的临时访问权限时,这可能会十分有用。

通信服务密钥页的屏幕截图。

使用 Azure CLI 访问连接字符串和服务终结点

还可以使用 Azure CLI 访问密钥信息(例如,资源组或特定资源的密钥)。

安装 Azure CLI 并使用以下命令登录。 需要提供凭据才能连接到 Azure 帐户。

az login

现在,你可以访问有关资源的重要信息了。

az communication list --resource-group "<resourceGroup>"

az communication list-key --name "<acsResourceName>" --resource-group "<resourceGroup>"

如果要选择特定订阅,你还可以指定 --subscription 标志并提供订阅 ID。

az communication list --resource-group  "<resourceGroup>"  --subscription "<subscriptionId>"

az communication list-key --name "<acsResourceName>" --resource-group "<resourceGroup>" --subscription "<subscriptionId>"

存储连接字符串

通信服务 SDK 使用连接字符串对向通信服务发出的请求进行授权。 可使用多个选项来存储连接字符串:

  • 在桌面或设备上运行的应用程序可在 app.configweb.config 文件中存储连接字符串。 将连接字符串添加到这些文件中的 AppSettings 节。
  • 在 Azure 应用服务中运行的应用程序可以将连接字符串存储在应用服务应用程序设置中。 在门户中将连接字符串添加到“应用程序设置”选项卡的“连接字符串”部分。
  • 可以将连接字符串存储在 Azure Key Vault 中。
  • 如果在本地运行应用程序,则可能要将连接字符串存储在环境变量中。

将连接字符串存储在环境变量中

若要配置环境变量,请打开控制台窗口,然后从以下选项卡中选择操作系统。 将 <yourconnectionstring> 替换为实际的连接字符串。

打开控制台窗口并输入以下命令:

setx COMMUNICATION_SERVICES_CONNECTION_STRING "<yourConnectionString>"

添加环境变量后,可能需要重启任何正在运行的用于读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

清理资源

如果想要清理并删除通信服务订阅,可以删除资源或资源组。 可以通过运行以下命令来删除通信资源。

az communication delete --name "acsResourceName" --resource-group "resourceGroup"

删除资源组时也会删除与之关联的任何其他资源。

如果在删除资源时已为资源分配了任何电话号码,则会同时自动从资源释放电话号码。

注意

资源删除是永久性的。如果删除资源,则无法恢复任何数据,包括事件网格筛选器、电话号码或与资源相关的其他数据。

后续步骤

在此快速入门中,你学习了如何:

  • 创建通信服务资源
  • 配置资源地理位置和标记
  • 访问该资源的密钥
  • 删除资源