Отправка уведомлений веб-канала действий пользователям в Microsoft Teams

Веб-канал действий Microsoft Teams позволяет пользователям рассматривать элементы, требующие внимания, уведомляя их об изменениях. Вы можете использовать API-интерфейсы уведомлений веб-канала действий в Microsoft Graph, чтобы расширить эту функцию для приложений. Это позволяет вашим приложениям предоставлять более широкие возможности и лучше привлекать пользователей, помогая поддерживать их в курсе изменений в используемых ими средствах и рабочих процессах.

Основные сведения об уведомлении веб-канала действий

Уведомления веб-канала действий в Microsoft Teams состоят из нескольких битов информации, отображаемой вместе, как показано на следующем рисунке.

Изображение, показывающее компоненты уведомления веб-канала действий

К компонентам относятся:

  • Субъект, инициировавший действие
  • Значок, представляющий тип действия
  • Причина, по которой субъект выполнил действие
  • Предварительный просмотр текста
  • Метка времени
  • Место действия

В следующем примере показано, как эти компоненты вместе предоставляют сведения об уведомлении. В этом примере показано уведомление о пользователе, упомянутом в сообществе Yammer.

Пример уведомления о действии Yammer

Требования к использованию API уведомлений канала действий

API веб-канала действий работают с приложением Teams. Ниже приведены требования к отправке уведомлений веб-канала действий.

  • Манифест приложения Teams должен содержать Azure AD идентификатор приложения, добавленный в webApplicationInfo раздел. Дополнительные сведения см. в разделе Схема манифеста.
  • Типы действий должны быть объявлены activities в разделе . Дополнительные сведения см. в разделе Схема манифеста.
  • Приложение Teams должно быть установлено для получателя лично, в команде или чате , в котором он участвует. Дополнительные сведения см. в разделе Установка приложения Teams.

Изменения манифеста приложения Teams

В этом разделе описываются изменения, которые необходимо добавить в манифест приложения Teams. Обратите внимание, что вы должны использовать версию манифеста приложения Teams или более позднюю.1.7

"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.7/MicrosoftTeams.schema.json",
"manifestVersion": "1.7",

Изменения раздела webApplicationInfo

"webApplicationInfo":
{
    "id": "a3111f15-658e-457c-9689-fd20fe907330",
    "resource": "https://contosoapp.com"
}
Параметр Тип Описание
id string Azure AD идентификатор приложения (идентификатор клиента).
resource string Ресурс, связанный с приложением Azure AD. Также называется URL-адресом ответа или перенаправления на портале Azure.

Примечание.

Если несколько приложений Teams в одной область (команда, чат или пользователь) используют одно и то же приложение Azure AD, может возникнуть ошибка. Убедитесь, что вы используете уникальные приложения Azure AD.

изменения раздела действий

"activities":
{
  "activityTypes": [
    {
      "type": "taskCreated",
      "description": "Task Created Activity",
      "templateText": "{actor} created task {taskId} for you"
    },
    {
      "type": "approvalRequired",
      "description": "Deployment requires your approval",
      "templateText": "{actor} created a new deployment {deploymentId}"
    }
  ]
}
Параметр Тип Описание
type string Тип действия. Он должен быть уникальным в определенном манифесте.
description string Понятное краткое описание. Это будет отображаться в клиенте Microsoft Teams.
templateText string Текст шаблона для уведомления о действии. Параметры можно объявить, инкапсулировав параметры в {}.

Примечание.

actor — это специальный параметр, который всегда принимает имя вызывающего объекта. В делегированных вызовах actor — имя пользователя. В вызовах только для приложений оно принимает имя приложения Teams.

Установка приложения Teams

Приложения Teams можно установить в команде, чате или лично для пользователя, а также распространять их несколькими способами. Дополнительные сведения см. в разделе Методы распространения приложений Teams. Как правило, загрузка неопубликованных приложений предпочтительна для целей разработки. После разработки вы можете выбрать правильный метод распространения в зависимости от того, хотите ли вы распространить на один клиент или на всех клиентов.

Вы также можете использовать API установки приложений Teams для управления установкой приложений Teams.

Отправка уведомлений о веб-канале действий пользователям

Так как приложение Teams можно установить для пользователя, в команде или в чате, уведомления также можно отправлять в следующих трех контекстах:

Кроме того, уведомления могут отправляться массово до 100 пользователей одновременно:

Дополнительные сведения о том, какие разделы поддерживаются для каждого сценария, см. в конкретных API. Пользовательские текстовые разделы поддерживаются во всех сценариях.

Примечание.

Значок действия основан на контексте, в который выполняется запрос. Если запрос выполняется с делегированными разрешениями, фотография пользователя отображается в качестве аватара, а значок приложения Teams — как значок действия. В контексте только приложения в качестве аватара используется значок приложения Teams, а значок действия опущен.

Пример 1. Уведомление пользователя о задаче, созданной в чате

В этом примере показано, как отправить уведомление веб-канала действий для новой задачи, созданной в чате. В этом случае приложение Teams должно быть установлено в чате с идентификатором chatId , а пользователь 569363e2-4e49-4661-87f2-16f245c5d66a также должен быть частью чата.

Запрос

POST https://graph.microsoft.com/v1.0/chats/{chatId}/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/v1.0/chats/{chatId}"
    },
    "activityType": "taskCreated",
    "previewText": {
        "content": "New Task Created"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "569363e2-4e49-4661-87f2-16f245c5d66a"
    },
    "templateParameters": [
        {
            "name": "taskId",
            "value": "12322"
        }
    ]
}

Отклик

HTTP/1.1 204 No Content

Пример 2. Уведомление пользователя о задаче, созданной в команде

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

Запрос

POST https://graph.microsoft.com/v1.0/teams/{teamId}/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/v1.0/teams/{teamId}"
    },
    "activityType": "taskCreated",
    "previewText": {
    	"content": "New Task Created"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "569363e2-4e49-4661-87f2-16f245c5d66a"
    },
    "templateParameters": [
        {
            "name": "taskId",
            "value": "12322"
        }
    ]
}

Отклик

HTTP/1.1 204 No Content

Пример 3. Уведомление пользователя о событии с помощью пользовательского раздела

Как показано в предыдущих примерах, можно связать с различными аспектами команды или чата. Однако если вы хотите связать с аспектом, который не является частью команды или не представлен Microsoft Graph, или вы хотите настроить имя, можно задать источник topictext объекта в и передать для него настраиваемое значение. Кроме того, требуется при webUrl использовании topic источника в качестве text.

В приведенном выше примере уведомления Yammer используется пользовательский раздел, так как ресурсы Yammer не поддерживаются Microsoft Graph.

Примечание.

webUrl должен начинаться с домена Microsoft Teams (например, teams.microsoft.com).

Запрос

POST https://graph.microsoft.com/v1.0/teams/{teamId}/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "text",
        "value": "Deployment Approvals Channel",
        "webUrl": "https://teams.microsoft.com/l/message/19:448cfd2ac2a7490a9084a9ed14cttr78c@thread.skype/1605223780000?tenantId=c8b1bf45-3834-4ecf-971a-b4c755ee677d&groupId=d4c2a937-f097-435a-bc91-5c1683ca7245&parentMessageId=1605223771864&teamName=Approvals&channelName=Azure%20DevOps&createdTime=1605223780000"
    },
    "activityType": "approvalRequired",
    "previewText": {
        "content": "New deployment requires your approval"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "569363e2-4e49-4661-87f2-16f245c5d66a"
    },
    "templateParameters": [
        {
            "name": "deploymentId",
            "value": "6788662"
        }
    ]
}

Отклик

HTTP/1.1 204 No Content

Пример 4. Уведомление участников команды о событии

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

Запрос

POST https://graph.microsoft.com/v1.0/teams/7155e3c8-175e-4311-97ef-572edc3aa3db/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "text",
        "value": "Weekly Virtual Social",
        "webUrl": "Teams webUrl"
    },
    "previewText": {
        "content": "It will be fun!"
    },
    "activityType": "eventCreated",
    "recipient": {
        "@odata.type": "microsoft.graph.teamMembersNotificationRecipient",
        "teamId": "7155e3c8-175e-4311-97ef-572edc3aa3db"
    }
}

Отклик

HTTP/1.1 204 No Content

Пример 5. Уведомление участников канала о событии

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

Запрос

POST https://graph.microsoft.com/v1.0/teams/7155e3c8-175e-4311-97ef-572edc3aa3db/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "text",
        "value": "Weekly Virtual Social",
        "webUrl": "Teams webUrl"
    },
    "previewText": {
        "content": "It will be fun!"
    },
    "activityType": "eventCreated",
    "recipient": {
        "@odata.type": "microsoft.graph.channelMembersNotificationRecipient",
        "teamId": "7155e3c8-175e-4311-97ef-572edc3aa3db",
        "channelId": "19:0ea5de04de4743bcb4cd20cb99235d99@thread.tacv2"
    }
}

Отклик

HTTP/1.1 204 No Content

Пример 6. Уведомление участников чата о событии

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

Запрос

POST https://graph.microsoft.com/v1.0/chats/19:d65713bc498c4a428c71ef9353e6ce20@thread.v2/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "text",
        "value": "Weekly Virtual Social",
        "webUrl": "Teams webUrl"
    },
    "previewText": {
        "content": "It will be fun!"
    },
    "activityType": "eventCreated",
    "recipient": {
        "@odata.type": "microsoft.graph.chatMembersNotificationRecipient",
        "chatId": "19:d65713bc498c4a428c71ef9353e6ce20@thread.v2"
    }
}

Отклик

HTTP/1.1 204 No Content

Пример 7. Уведомление нескольких пользователей об ожидающих запросах на утверждение финансов

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

Запрос

POST https://graph.microsoft.com/v1.0/teamwork/sendActivityNotificationToRecipients
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/{teamsAppId}"
    },
    "activityType": "pendingFinanceApprovalRequests",
    "previewText": {
        "content": "Internal spending team has a pending finance approval requests"
    },
    "recipients": [
    	{
        	"@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        	"userId": "569363e2-4e49-4661-87f2-16f245c5d66a"
    	},
    	{
        	"@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        	"userId": "ab88234e-0874-477c-9638-d144296ed04f"
    	},
    	{
        	"@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        	"userId": "01c64f53-69aa-42c7-9b7f-9f75195d6bfc"
    	}
    ],
    "templateParameters": [
        {
            "name": "pendingRequestCount",
            "value": "5"
        }
    ] 
}

Отклик

HTTP/1.1 202 Accepted

Настройка оповещений о том, как уведомления оповещают вас

Пользователи Microsoft Teams могут настраивать уведомления, которые они видят в веб-канале, в виде баннера и т. д. Уведомления, созданные с помощью API веб-канала действий, также можно настроить. Пользователи могут выбирать способ уведомления с помощью параметров в Microsoft Teams. Приложения Teams будут отображаться в списке для выбора пользователем, как показано на следующем снимке экрана.

Снимок экрана: параметры уведомлений в Teams с выделенным параметром Custom

Пользователи могут нажать кнопку Изменить рядом с приложением и настроить уведомления, как показано в следующем примере. Отображается description поле в манифесте приложения Teams.

Снимок экрана: уведомления, настроенные для баннера и веб-канала для приложения Teams

Вопросы и ответы

Кому нужно установить приложение Teams?

У целевого пользователя должно быть установлено приложение Teams, которое отправляет уведомления.

Может ли пользователь отправлять уведомления себе?

Нет, пользователь не может отправлять уведомления себе. В этом сценарии используйте разрешения приложения.

Может ли приложение Teams управлять отображением уведомлений для пользователя?

Нет, изменять параметры уведомлений могут только пользователи.

Я установил свое приложение; Почему в учетной записи пользователя не отображаются параметры уведомлений?

Параметры появятся после отправки первого уведомления приложением Teams. Это сокращает количество параметров, которые видят пользователи.

Я начал получать ошибку 409 (конфликт); как ее устранить?

ConflictОшибки в основном возникают, когда несколько приложений Teams, установленных в одной область (команда, чат, пользователь и т. д.), имеют одинаковый Azure AD appId в webApplicationInfo разделе манифеста. В этом случае вы получите сообщение об ошибке, Found multiple applications with the same Azure AD App ID 'Your AzureAD AppId'.например . Убедитесь, что вы используете уникальные приложения Azure AD для уникальных приложений Teams. Обратите внимание, что одно и то же приложение Teams можно установить в нескольких областях (например, команда и пользователь).

См. также