Поделиться через


Краткое руководство. Подписка на события Службы коммуникации Azure

В этой статье объясняется, как подписаться на события из Службы коммуникации Azure с помощью портала, Azure CLI, PowerShell и пакета SDK для .NET.

Вы можете настроить подписки на события для ресурсов Служб коммуникации с помощью портал Azure, Azure CLI, PowerShell или пакета SDK для управления сеткой событий Azure.

В этом кратком руководстве описывается процесс настройки веб-перехватчика в качестве подписчика для событий SMS из Службы коммуникации Azure. Полный список событий см. в Службы коммуникации Azure в качестве источника Сетка событий Azure.

Необходимые компоненты

Регистрация поставщика ресурсов Сетки событий

В этой статье описывается регистрация поставщика ресурсов Сетки событий. Если вы использовали сетку событий раньше в той же подписке, перейдите к следующему разделу.

На портале Azure сделайте следующее:

  1. В меню слева выберите Подписки.

  2. Выберите подписку, которую вы хотите использовать для сетки событий из списка подписок.

  3. На странице Подписка выберите Поставщики ресурсов в разделе Параметры в меню слева.

  4. Найдите Microsoft.EventGrid и убедитесь, что состояние не зарегистрировано.

  5. Выберите Microsoft.EventGrid в списке поставщиков.

  6. Выберите Зарегистрировать на панели команд.

    Изображение процесса регистрации поставщика Microsoft.EventGrid с помощью подписки Azure.

  7. Обновите страницу, чтобы убедиться, что состояние Microsoft.EventGrid изменено на Зарегистрировано.

    Изображение успешного процесса регистрации поставщика Microsoft.EventGrid с помощью подписки Azure.

Создание подписки на события

Чтобы создать подписку на событие для ресурса Службы коммуникации Azure, сначала войдите в портал Azure. В левом верхнем углу страницы выберите ресурс Служб коммуникации.

  1. Выберите вкладку "События " в меню слева.
  2. Выберите + Event Subscription (+ Подписка на события).

Снимок экрана: кнопка создания подписки на события в портал Azure.

  1. На странице "Создание подписки на события" выполните следующие действия.
    1. Укажите имя для подписки на событие.

    2. Введите имя для имени раздела системы.

    3. Выберите типы событий, которые необходимо получить в подписке на события.

      Снимок экрана: выбор типов событий.

      Дополнительные сведения см. в разделе "События служб коммуникации".

    4. Выберите тип конечной точки в качестве веб-перехватчика.

      Снимок экрана: выбор типа конечной точки.

    5. Выберите " Настроить конечную точку"

      Снимок экрана: страница создания события в портал Azure.

    6. Введите ссылку на веб-перехватчик и нажмите кнопку "Подтвердить выбор".

      Снимок экрана: страница выбора конечной точки веб-перехватчика в портал Azure.

    7. На вкладке "Фильтры" добавьте имена типов событий, которые необходимо отфильтровать в подписке. Добавьте все фильтры атрибутов контекста, которые вы хотите использовать в подписке. Затем нажмите кнопку Далее: Дополнительные функции в нижней части страницы.

      Снимок экрана: страница создания фильтров сетки событий в портал Azure.

    8. Чтобы включить сохранение недоставленых событий и настроить политики повтора, выберите Дополнительные функции.

      Снимок экрана: вкладка

    9. Затем выберите Создать.

Обновление подписки на события

В этом разделе показано, как обновить подписку на события для Службы коммуникации Azure, чтобы обновить события, которые вы хотите получить через веб-перехватчик.

Чтобы обновить подписку на событие для ресурса Службы коммуникации Azure, сначала войдите в портал Azure. В левом верхнем углу страницы выберите ресурс Служб коммуникации.

  1. Выберите вкладку "События " в меню слева.

  2. Выберите подписки на события и выберите подписку на события, которую вы хотите обновить.

    Снимок экрана: кнопка подписки на событие в портал Azure.

  3. На странице "Подписка на события" выберите вкладку "Фильтры". Выберите типы событий, которые необходимо получить в подписке на события.

    Снимок экрана: выбор типов событий для обновления.

  4. Чтобы включить сохранение недоставленых событий и настроить политики повтора, выберите Дополнительные функции.

    Снимок экрана: вкладка

  5. Чтобы обновить веб-перехватчик для получения событий, нажмите кнопку "Изменить рядом с ссылкой веб-перехватчика" и введите новую конечную точку веб-перехватчика.

    Снимок экрана: ссылка

  6. Затем нажмите кнопку Сохранить.

    Снимок экрана: кнопка сохранения в портал Azure.

Удалить подписку на события

Чтобы удалить подписку на событие для Службы коммуникации Azure, выполните следующие действия.

Чтобы удалить подписку на событие для ресурса Службы коммуникации Azure, сначала войдите в портал Azure. В левом верхнем углу страницы выберите ресурс Служб коммуникации.

  1. Выберите вкладку "События " в меню слева.

  2. Выберите подписки на события и выберите подписку на события, которую вы хотите удалить.

    Снимок экрана: кнопка подписки на события для доступа к подписке на события для удаления в портал Azure.

  3. На странице "Подписка на события" выберите "Удалить" в верхней части страницы.

    Снимок экрана: кнопка удаления в портал Azure.

Следующие шаги

Необходимые компоненты

Регистрация поставщика ресурсов Сетки событий

В этой статье описывается регистрация поставщика ресурсов Сетки событий. Если вы использовали сетку событий раньше в той же подписке, перейдите к следующему разделу.

  1. Выполните следующую команду для регистрации поставщика:

    az provider register --namespace Microsoft.EventGrid
    
  2. Регистрация может занять некоторое время. Чтобы проверить состояние, выполните следующую команду:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Когда состояние registrationState изменится на Registered, вы сможете продолжить работу.

Создание подписки на события

Чтобы создать подписки на события для ресурса Службы коммуникации Azure, войдите в Azure CLI. Вы можете войти в систему, выполнив az login команду из терминала, а затем указать свои учетные данные.

Чтобы создать подписку на события с помощью Azure CLI, используйте az eventgrid event-subscription create команду:

az eventgrid event-subscription create 
    --name EventsWebhookSubscription
    --source-resource-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>
    --included-event-types Microsoft.Communication.SMSReceived Microsoft.Communication.SMSDeliveryReportReceived
    --endpoint-type webhook 
    --endpoint https://azureeventgridviewer.azurewebsites.net/api/updates  

Список событий служб коммуникации см. в разделе "События служб коммуникации".

Вывод списка подписок на события

Чтобы перечислить все существующие подписки на события, настроенные для ресурса Службы коммуникации Azure с помощью Azure CLI, используйте az eventgrid event-subscription list команду.

az eventgrid event-subscription list 
    --source-resource-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>    

Обновление подписки на события

Чтобы обновить существующую подписку на события с помощью Azure CLI, используйте az eventgrid event-subscription update команду.

az eventgrid event-subscription update 
    --name EventsWebhookSubscription
    --source-resource-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>
    --included-event-types Microsoft.Communication.SMSReceived Microsoft.Communication.SMSDeliveryReportReceived Microsoft.Communication.ChatMessageReceived
    --endpoint-type webhook 
    --endpoint https://azureeventgridviewer.azurewebsites.net/api/updates

Удалить подписку на события

Чтобы удалить существующую подписку на события с помощью Azure CLI, используйте az eventgrid event-subscription delete команду.

az eventgrid event-subscription delete 
    --name EventsWebhookSubscription 
    --source-resource-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>

Следующие шаги

  • Сведения о других командах см. в Сетка событий Azure CLI.

Необходимые компоненты

Регистрация поставщика ресурсов Сетки событий

В этой статье описывается регистрация поставщика ресурсов Сетки событий. Если вы использовали сетку событий раньше в той же подписке, перейдите к следующему разделу.

На портале Azure сделайте следующее:

  1. В меню слева выберите Подписки.

  2. Выберите подписку, которую вы хотите использовать для сетки событий из списка подписок.

  3. На странице Подписка выберите Поставщики ресурсов в разделе Параметры в меню слева.

  4. Найдите Microsoft.EventGrid и убедитесь, что состояние не зарегистрировано.

  5. Выберите Microsoft.EventGrid в списке поставщиков.

  6. Выберите Зарегистрировать на панели команд.

    Изображение процесса регистрации поставщика Microsoft.EventGrid с помощью подписки Azure.

  7. Обновите страницу, чтобы убедиться, что состояние Microsoft.EventGrid изменено на Зарегистрировано.

    Изображение успешного процесса регистрации поставщика Microsoft.EventGrid с помощью подписки Azure.

Установка пакета SDK

Сначала установите библиотеку управления Microsoft Сетка событий Azure для .NET с помощью NuGet:

dotnet add package Azure.ResourceManager.EventGrid;

Включите пакет SDK для управления сеткой событий в проект C#:

using Microsoft.Azure.Management.EventGrid;
using Microsoft.Azure.Management.EventGrid.Models;

Проверка подлинности с помощью библиотеки удостоверений Azure

Необходимые компоненты

  1. Создайте приложение Microsoft Entra и субъект-службу и настройте секрет клиента или доверенный сертификат, выданный центром сертификации. Следуйте инструкциям по регистрации приложения Microsoft Entra и создайте субъект-службу.
  2. Сохраните секрет или сертификат в Azure Keyvault.
  3. Предоставьте участнику или владельцу доступ к подписке для этого приложения, следуя инструкциям, приведенным в статье "Предоставление пользователю доступа к ресурсам Azure с помощью портал Azure".
  4. Дополнительные сведения об авторизации доступа к ресурсам Сетки событий.

Библиотека удостоверений Azure предоставляет поддержку проверки подлинности маркера Microsoft Entra ID (ранее Azure Active Directory) в пакете SDK Azure. Он предоставляет набор реализаций TokenCredential, которые можно использовать для создания клиентов пакета SDK Azure, поддерживающих проверку подлинности маркера Microsoft Entra. Дополнительные сведения см. в клиентской библиотеке удостоверений Azure для .NET.

  1. Включите клиентную библиотеку удостоверений Azure для .NET с NuGet.
dotnet add package Azure.Identity;
dotnet add package Azure.Security.KeyVault.Secrets
  1. Включите библиотеку удостоверений Azure в проект C#.
using Microsoft.Azure.Identity;
using Azure.Security.KeyVault.Secrets
  1. Вы можете передать секретные учетные данные или учетные данные сертификата для получения маркера доступа на основе настройки субъекта-службы.

    • Получение маркера доступа с помощью секретных учетных данных

      Чтобы получить учетные данные секрета, необходимо прочитать его из keyvault, созданного в предварительных требованиях 2 с помощью SecretClient.

      // Authenticate the Keyvault client with DefaultAzureCredential and get the secret.
      SecretClient secretClient = new SecretClient(new Uri("https://myvault.vault.azure.net/"), new DefaultAzureCredential());
      string clientSecret = await secretClient.GetSecretAsync(secretName).Value;
      
      // Get access token using secret credentials
      string[] scopes = { "https://management.azure.com/.default" };
      var application = ConfidentialClientApplicationBuilder
                          .Create('your-servicePrincipal-appId')
                          .WithAuthority(authorityUri: new Uri(authority), validateAuthority: true)
                          .WithTenantId('your-tenant_id')
                          .WithClientSecret(clientSecret)
                          .Build();
      
      var token = await application
                      .AcquireTokenForClient(scopes)
                      .ExecuteAsync();
      
    • Получение маркера доступа с помощью учетных данных сертификата.

      Чтобы получить учетные данные сертификата, необходимо прочитать его из keyvault, созданного в предварительных требованиях 2 с помощью CertificateClient.

      Дополнительные сведения о центре конфигурации приложений Microsoft Entra см. в параметрах конфигурации приложений.

      // Authenticate the certificate client with DefaultAzureCredential and get the certificate.
      CertificateClient certificateClient = new SecretClient(new Uri("https://myvault.vault.azure.net/"), new DefaultAzureCredential());
      X509Certificat2 cert = await certificateClient.DownloadCertificateAsync(certificateName);
      
      // Get access token using certificate credentials
      string[] scopes = { "https://management.azure.com/.default" };
      string authority = "https://login.microsoftonline.com/<tenant>/";
      var application = ConfidentialClientApplicationBuilder
                          .Create('<servicePrincipal-appId>')
                          .WithAuthority(authorityUri: new Uri(authority), validateAuthority: true)
                          .WithTenantId("<tenantId>")
                          .WithCertificate(cert)
                          .Build();
      
      var token = await application
                      .AcquireTokenForClient(scopes)
                      .WithSendX5C(true)
                      .ExecuteAsync();
      
  2. Проверка подлинности EventGridManagementClient с помощью маркера доступа с помощью секретных или учетных данных сертификата.

// Authenticate EventGridManagementClient with Microsoft Entra ID access token credential
eventGridClient = new EventGridManagementClient(new Uri("https://management.azure.com/"),
    new TokenCredentials(token.AccessToken));

eventGridClient.SubscriptionId = 'your_subscription_id';

Создание подписки на события

В этом примере кода показано, как создать подписку на события для конечной точки подписчика веб-перехватчика.

string webhookUri = $"<webhookUri>";
string resourceId="/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>";
string[] includedEventTypes = new string[]{ "Microsoft.Communication.SMSReceived", 
                                            "Microsoft.Communication.SMSDeliveryReportReceived"
                                            };

EventSubscription eventSubscription = new EventSubscription(
    name: "<eventSubscriptionName>",
    eventDeliverySchema: "EventGridSchema",
    filter: new EventSubscriptionFilter(
    includedEventTypes: includedEventTypes),
    destination: new WebHookEventSubscriptionDestination(webhookUri));

await eventGridClient.EventSubscriptions.CreateOrUpdateAsync(
    scope: resourceId,
    eventSubscriptionName: "<eventSubscriptionName>",
    eventSubscriptionInfo: eventSubscription);

Обновление подписки на события

В этом примере кода показано, как обновить подписку на события, чтобы добавить дополнительные события, которые вы хотите получить в конечной точке подписчика веб-перехватчика.

string webhookUri = $"<webhookUri>";
string resourceId="/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>";
string[] additionalEventTypes = new string[]{ 
                                            "Microsoft.Communication.ChatMessageReceived"
                                        };

await eventGridClient.EventSubscriptions.UpdateAsync(
    scope: resourceId,
    eventSubscriptionName: "<eventSubscriptionName>",
    eventSubscriptionUpdateParameters: new EventSubscriptionUpdateParameters(
            filter: new EventSubscriptionFilter(includedEventTypes: additionalEventTypes)));

Удаление подписки на события

В этом примере кода показано, как удалить подписку на события для конечной точки подписчика веб-перехватчика.

string webhookUri = $"<webhookUri>";
string resourceId="/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>";

await eventGridClient.EventSubscriptions.DeleteAsync(
    scope: resourceId,
    eventSubscriptionName: "<eventSubscriptionName>");

Необходимые компоненты

Регистрация поставщика ресурсов Сетки событий

В этой статье описывается регистрация поставщика ресурсов сетки событий. Если вы использовали сетку событий раньше в той же подписке, перейдите к следующему разделу.

  1. Выполните следующую команду:
Register-AzResourceProvider -ProviderNamespace Microsoft.EventGrid
  1. Регистрация может занять некоторое время. Чтобы проверить состояние, выполните следующую команду:
Get-AzResourceProvider -ProviderNamespace Microsoft.EventGrid

Когда состояние RegistrationStatus изменится на Registered, вы сможете продолжить работу.

Создание подписки на события

Сначала установите модуль Az.EventGrid Службы коммуникации Azure с помощью следующей команды.

PS C:\> Install-Module Az.EventGrid
  1. Войдите в подписку Azure с помощью команды Connect-AzAccount и следуйте инструкциям на экране.

    Connect-AzAccount
    
  2. Если удостоверение связано с несколькими подписками, установите активную подписку на подписку ресурса Web PubSub , который вы хотите переместить.

    $context = Get-AzSubscription -SubscriptionId <subscription-id>
    Set-AzContext $context
    

Чтобы создать подписку на события с помощью Azure PowerShell, используйте New-AzEventGridSubscription команду.

$includedEventTypes = "Microsoft.Communication.SMSReceived", "Microsoft.Communication.SMSDeliveryReportReceived"
New-AzEventGridSubscription 
    -EndpointType webhook
    -Endpoint https://azureeventgridviewer.azurewebsites.net/api/updates
    -EventSubscriptionName EventsWebhookSubscription 
    -IncludedEventType $includedEventTypes
    -ResourceId "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>"

Список событий служб коммуникации см. в разделе "События служб коммуникации".

Вывод списка подписок на события

Чтобы перечислить все существующие подписки на события, настроенные для ресурса Службы коммуникации Azure с помощью Azure PowerShell, используйте Get-AzEventGridSubscription команду.

Get-AzEventGridSubscription 
    -ResourceId "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>"

Обновление подписки на события

Чтобы обновить существующую подписку на события с помощью Azure PowerShell, используйте Update-AzEventGridSubscription команду.

$includedEventTypes = "Microsoft.Communication.SMSReceived", "Microsoft.Communication.SMSDeliveryReportReceived", "Microsoft.Communication.ChatMessageReceived"
Update-AzEventGridSubscription 
    -EventSubscriptionName ES2 
    -IncludedEventType $includedEventTypes
    -ResourceId "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>" 
    -Endpoint https://azureeventgridviewer2.azurewebsites.net/api/updates
    -SubjectEndsWith "phoneNumber"
 

Удалить подписку на события

Чтобы удалить существующую подписку на события с помощью Azure PowerShell, используйте Remove-AzEventGridSubscription команду.

Get-AzResource 
    -ResourceId "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>" | Remove-AzEventGridSubscription -EventSubscriptionName ES2

Следующие шаги

  • Дополнительные сведения о других командах см. в разделе "Модуль PowerShell Az.EventGrid".