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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Image showing the registration of Microsoft.EventGrid provider with the Azure subscription.

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

    Image showing the successful registration of Microsoft.EventGrid provider with the Azure subscription.

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

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

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

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

Screenshot highlighting the create event subscription button in the Azure portal.

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

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

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

    Screenshot that shows the selection of event types.

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

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

    Screenshot that shows the selection of endpoint type.

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

    Screenshot highlighting the create event page in the Azure portal.

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

    Screenshot highlighting the select webhook endpoint page in the Azure portal.

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

    Screenshot highlighting Event Grid create filters page in the Azure portal.

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

    Screenshot that shows the Additional features tab of the Create Event Subscription page.

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

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

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

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

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

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

    Screenshot highlighting the event subscription button in the Azure portal.

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

    Screenshot that shows the selection of event types to update.

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

    Screenshot that shows the Additional features tab of the Update Event Subscription page.

  5. Чтобы обновить веб-перехватчик для получения событий, нажмите кнопку "Изменить рядом с ссылкой веб-перехватчика" и введите новую конечную точку веб-перехватчика. Screenshot that shows the Change the webhook endpoint link in the Event Subscription page.

  6. По завершении нажмите кнопку "Сохранить", Screenshot that shows the save button in the Azure portal.

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

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

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

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

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

    Screenshot highlighting the event subscriptions button to access event subscription to be deleted in the Azure portal.

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

    Screenshot highlighting the delete button in the Azure portal.

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

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

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

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

  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. Выберите Зарегистрировать на панели команд.

    Image showing the registration of Microsoft.EventGrid provider with the Azure subscription.

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

    Image showing the successful registration of Microsoft.EventGrid provider with the Azure subscription.

Установка пакета 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 и субъект-службу и настройте секрет клиента или доверенный сертификат, выданный центром сертификации, следуя инструкциям ниже.
  2. Сохраните секрет или сертификат в Azure Keyvault.
  3. Предоставьте участник или владельцу доступ к подписке в этом приложении, следуя инструкциям ниже.
  4. Дополнительные сведения о авторизации доступа к ресурсам Сетки событий см. здесь.

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

  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_subscripiton_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, вы сможете продолжить работу.

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

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

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

    Connect-AzAccount
    
  • Если удостоверение связано с несколькими подписками, установите активную подписку на подписку ресурса 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".