Краткое руководство. Подписка на события Службы коммуникации Azure
В этой статье объясняется, как подписаться на события из Службы коммуникации Azure с помощью портала, Azure CLI, PowerShell и пакета SDK для .NET.
Вы можете настроить подписки на события для ресурсов Служб коммуникации с помощью портал Azure, Azure CLI, PowerShell или пакета SDK для управления сеткой событий Azure.
В этом кратком руководстве описывается процесс настройки веб-перехватчика в качестве подписчика для событий SMS из Службы коммуникации Azure. Полный список событий см. в Службы коммуникации Azure в качестве источника Сетка событий Azure.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Ресурс Службы коммуникации Azure.
- Создайте веб-перехватчик для получения событий. См . статью "Доставка событий веб-перехватчика".
Регистрация поставщика ресурсов Сетки событий
В этой статье описывается регистрация поставщика ресурсов Сетки событий. Если вы использовали сетку событий раньше в той же подписке, перейдите к следующему разделу.
На портале Azure сделайте следующее:
В меню слева выберите Подписки.
Выберите подписку, которую вы хотите использовать для сетки событий из списка подписок.
На странице Подписка выберите Поставщики ресурсов в разделе Параметры в меню слева.
Найдите Microsoft.EventGrid и убедитесь, что состояние не зарегистрировано.
Выберите Microsoft.EventGrid в списке поставщиков.
Выберите Зарегистрировать на панели команд.
Обновите страницу, чтобы убедиться, что состояние Microsoft.EventGrid изменено на Зарегистрировано.
Создание подписки на события
Чтобы создать подписку на событие для ресурса Службы коммуникации Azure, сначала войдите в портал Azure. В левом верхнем углу страницы выберите ресурс Служб коммуникации.
- Выберите вкладку "События " в меню слева.
- Выберите + Event Subscription (+ Подписка на события).
- На странице "Создание подписки на события" выполните следующие действия.
Укажите имя для подписки на событие.
Введите имя для имени раздела системы.
Выберите типы событий, которые необходимо получить в подписке на события.
Дополнительные сведения см. в разделе "События служб коммуникации".
Выберите тип конечной точки в качестве веб-перехватчика.
Выберите " Настроить конечную точку"
Введите ссылку на веб-перехватчик и нажмите кнопку "Подтвердить выбор".
На вкладке "Фильтры" добавьте имена типов событий, которые необходимо отфильтровать в подписке. Добавьте все фильтры атрибутов контекста, которые вы хотите использовать в подписке. Затем нажмите кнопку Далее: Дополнительные функции в нижней части страницы.
Чтобы включить сохранение недоставленых событий и настроить политики повтора, выберите Дополнительные функции.
Затем выберите Создать.
Обновление подписки на события
В этом разделе показано, как обновить подписку на события для Службы коммуникации Azure, чтобы обновить события, которые вы хотите получить через веб-перехватчик.
Чтобы обновить подписку на событие для ресурса Службы коммуникации Azure, сначала войдите в портал Azure. В левом верхнем углу страницы выберите ресурс Служб коммуникации.
Выберите вкладку "События " в меню слева.
Выберите подписки на события и выберите подписку на события, которую вы хотите обновить.
На странице "Подписка на события" выберите вкладку "Фильтры". Выберите типы событий, которые необходимо получить в подписке на события.
Чтобы включить сохранение недоставленых событий и настроить политики повтора, выберите Дополнительные функции.
Чтобы обновить веб-перехватчик для получения событий, нажмите кнопку "Изменить рядом с ссылкой веб-перехватчика" и введите новую конечную точку веб-перехватчика.
Затем нажмите кнопку Сохранить.
Удалить подписку на события
Чтобы удалить подписку на событие для Службы коммуникации Azure, выполните следующие действия.
Чтобы удалить подписку на событие для ресурса Службы коммуникации Azure, сначала войдите в портал Azure. В левом верхнем углу страницы выберите ресурс Служб коммуникации.
Выберите вкладку "События " в меню слева.
Выберите подписки на события и выберите подписку на события, которую вы хотите удалить.
На странице "Подписка на события" выберите "Удалить" в верхней части страницы.
Следующие шаги
- Список событий служб коммуникации см. в разделе "События служб коммуникации".
- Список поддерживаемых обработчиков событий см. в статье Обработчики событий.
- Сведения о доставке событий и повторных попытках см. в разделе "Доставка сообщений сетки событий" и повторные попытки.
- Общие сведения о службе "Сетка событий" см. в разделе Общие сведения о службе "Сетка событий Azure".
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Установите Azure CLI.
- Ресурс Службы коммуникации Azure.
- Создайте веб-перехватчик для получения событий. См . статью "Доставка событий веб-перехватчика".
Регистрация поставщика ресурсов Сетки событий
В этой статье описывается регистрация поставщика ресурсов Сетки событий. Если вы использовали сетку событий раньше в той же подписке, перейдите к следующему разделу.
Выполните следующую команду для регистрации поставщика:
az provider register --namespace Microsoft.EventGrid
Регистрация может занять некоторое время. Чтобы проверить состояние, выполните следующую команду:
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 с активной подпиской. Создайте учетную запись бесплатно .
- Последняя версия пакета SDK для .NET Core для вашей операционной системы.
- Последняя версия пакета SDK для управления .NET microsoft Сетка событий Azure.
- Последняя версия библиотеки удостоверений Azure.
- Ресурс Службы коммуникации Azure.
Регистрация поставщика ресурсов Сетки событий
В этой статье описывается регистрация поставщика ресурсов Сетки событий. Если вы использовали сетку событий раньше в той же подписке, перейдите к следующему разделу.
На портале Azure сделайте следующее:
В меню слева выберите Подписки.
Выберите подписку, которую вы хотите использовать для сетки событий из списка подписок.
На странице Подписка выберите Поставщики ресурсов в разделе Параметры в меню слева.
Найдите Microsoft.EventGrid и убедитесь, что состояние не зарегистрировано.
Выберите Microsoft.EventGrid в списке поставщиков.
Выберите Зарегистрировать на панели команд.
Обновите страницу, чтобы убедиться, что состояние Microsoft.EventGrid изменено на Зарегистрировано.
Установка пакета 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
Необходимые компоненты
- Создайте приложение Microsoft Entra и субъект-службу и настройте секрет клиента или доверенный сертификат, выданный центром сертификации. Следуйте инструкциям по регистрации приложения Microsoft Entra и создайте субъект-службу.
- Сохраните секрет или сертификат в Azure Keyvault.
- Предоставьте участнику или владельцу доступ к подписке для этого приложения, следуя инструкциям, приведенным в статье "Предоставление пользователю доступа к ресурсам Azure с помощью портал Azure".
- Дополнительные сведения об авторизации доступа к ресурсам Сетки событий.
Библиотека удостоверений Azure предоставляет поддержку проверки подлинности маркера Microsoft Entra ID (ранее Azure Active Directory) в пакете SDK Azure. Он предоставляет набор реализаций TokenCredential, которые можно использовать для создания клиентов пакета SDK Azure, поддерживающих проверку подлинности маркера Microsoft Entra. Дополнительные сведения см. в клиентской библиотеке удостоверений Azure для .NET.
- Включите клиентную библиотеку удостоверений Azure для .NET с NuGet.
dotnet add package Azure.Identity;
dotnet add package Azure.Security.KeyVault.Secrets
- Включите библиотеку удостоверений Azure в проект C#.
using Microsoft.Azure.Identity;
using Azure.Security.KeyVault.Secrets
Вы можете передать секретные учетные данные или учетные данные сертификата для получения маркера доступа на основе настройки субъекта-службы.
Получение маркера доступа с помощью секретных учетных данных
Чтобы получить учетные данные секрета, необходимо прочитать его из 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();
Проверка подлинности
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>");
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Установите модуль Azure Az PowerShell.
- Ресурс Службы коммуникации Azure.
- Создайте веб-перехватчик для получения событий. См . статью "Доставка событий веб-перехватчика".
Регистрация поставщика ресурсов Сетки событий
В этой статье описывается регистрация поставщика ресурсов сетки событий. Если вы использовали сетку событий раньше в той же подписке, перейдите к следующему разделу.
- Выполните следующую команду:
Register-AzResourceProvider -ProviderNamespace Microsoft.EventGrid
- Регистрация может занять некоторое время. Чтобы проверить состояние, выполните следующую команду:
Get-AzResourceProvider -ProviderNamespace Microsoft.EventGrid
Когда состояние RegistrationStatus
изменится на Registered
, вы сможете продолжить работу.
Создание подписки на события
Сначала установите модуль Az.EventGrid
Службы коммуникации Azure с помощью следующей команды.
PS C:\> Install-Module Az.EventGrid
Войдите в подписку Azure с помощью команды Connect-AzAccount и следуйте инструкциям на экране.
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".