Compartilhar via


equipa: sendActivityNotification

Namespace: microsoft.graph

Enviar uma notificação do feed de atividades no âmbito de uma equipa. Para obter mais informações sobre o envio de notificações e os requisitos para o fazer, veja Enviar notificações de atividade do Teams.

Esta API está disponível nas seguintes implementações de cloud nacionais.

Serviço global US Government L4 US Government L5 (DOD) China operada pela 21Vianet

Permissões

Escolha a permissão ou permissões marcadas como menos privilegiadas para esta API. Utilize uma permissão ou permissões com privilégios mais elevados apenas se a sua aplicação o exigir. Para obter detalhes sobre as permissões delegadas e de aplicação, veja Tipos de permissão. Para saber mais sobre estas permissões, veja a referência de permissões.

Tipo de permissão Permissões com menos privilégios Permissões com privilégios superiores
Delegado (conta corporativa ou de estudante) TeamsActivity.Send Indisponível.
Delegado (conta pessoal da Microsoft) Sem suporte. Sem suporte.
Application TeamsActivity.Send.Group TeamsActivity.Send

Observação

A permissão TeamsActivity.Send.Group utiliza o consentimento específico do recurso.

Solicitação HTTP

POST /teams/{teamId}/sendActivityNotification

Cabeçalhos de solicitação

Nome Descrição
Autorização {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização.
Content-Type application/json. Obrigatório.

Corpo da solicitação

No corpo da solicitação, forneça uma representação JSON dos parâmetros.

A tabela a seguir mostra os parâmetros que podem ser usados com esta ação.

Parâmetro Tipo Descrição
topic teamworkActivityTopic O tópico da notificação. Especifica o recurso que está a ser falado.
activityType Cadeia de caracteres O tipo de atividade tem de ser declarado no manifesto da aplicação Teams, exceto no systemDefaulttipo de atividade Reservada, que fornece texto de forma livre na Actor+Reason linha da notificação.
chainId Int64 Opcional. O ID da cadeia da notificação. Utilizado para substituir uma notificação anterior. Utilize o mesmo chainId nos pedidos subsequentes para substituir a notificação anterior.
previewText itemBody O texto de pré-visualização da notificação. O Microsoft Teams mostra os primeiros 150 carateres.
templateParameters Coleção keyValuePair Os valores das variáveis de modelo definidas na entrada do feed de atividades correspondente ao activityType no manifesto da aplicação Teams.
destinatário teamworkNotificationRecipient O destinatário da notificação. Para obter mais informações, veja aadUserNotificationRecipient, channelMembersNotificationRecipient e teamMembersNotificationRecipient.
teamsAppId String Opcional. O ID da aplicação Teams da aplicação Teams associada à notificação. Utilizado para desambiguar aplicações instaladas quando são instaladas várias aplicações com o mesmo ID da aplicação Microsoft Entra ID para o mesmo utilizador destinatário. Evite partilhar IDs da aplicação Microsoft Entra ID entre aplicações do Teams.

Os seguintes recursos são suportados ao definir o source valor da propriedade do tópico como entityUrl:

Nota: O URL da entidade tem de ser o mesmo recurso subordinado ou da equipa no URL. Além disso, a aplicação Teams tem de ser instalada na equipa.

Resposta

Se tiver êxito, esta ação retornará um código de resposta 204 No Content.

Exemplos

Exemplo 1: Notificar um utilizador sobre pedidos de aprovação financeira pendentes

Este exemplo mostra como pode enviar uma notificação de feed de atividades para uma equipa. Este exemplo notifica o proprietário da equipa sobre pedidos de aprovação de finanças pendentes.

Solicitação

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": "pendingFinanceApprovalRequests",
    "previewText": {
        "content": "Internal spending team has a pending finance approval requests"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "569363e2-4e49-4661-87f2-16f245c5d66a"
    },
    "templateParameters": [
        {
            "name": "pendingRequestCount",
            "value": "5"
        }
    ] 
}

Resposta

HTTP/1.1 204 No Content

Exemplo 2: Notificar um utilizador sobre um separador de canal

Semelhante ao exemplo anterior, este exemplo utiliza entityUrl para o topic. No entanto, este exemplo liga a um separador num canal. O separador aloja uma página que mostra ao utilizador o estado da reserva do hotel. Selecionar a notificação direciona o utilizador para o separador, onde pode verificar a reserva.

Solicitação

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}/channels/{channelId}/tabs/{tabId}"
    },
    "activityType": "reservationUpdated",
    "previewText": {
        "content": "You have moved up the queue"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "569363e2-4e49-4661-87f2-16f245c5d66a"
    },
    "templateParameters": [
        {
            "name": "reservationId",
            "value": "TREEE433"
        },
        {
            "name": "currentSlot",
            "value": "23"
        }
    ]
}

Resposta

HTTP/1.1 204 No Content

Exemplo 3: Notificar um utilizador sobre um separador de canal com o nome principal de utilizador

Semelhante ao exemplo anterior, este exemplo utiliza entityUrl para o topic. No entanto, este exemplo liga a um separador num canal. O separador aloja uma página que mostra ao utilizador o estado da reserva do hotel. Selecionar a notificação direciona o utilizador para o separador, onde pode verificar a reserva.

Solicitação

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}/channels/{channelId}/tabs/{tabId}"
    },
    "activityType": "reservationUpdated",
    "previewText": {
        "content": "You have moved up the queue"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "jacob@contoso.com"
    },
    "templateParameters": [
        {
            "name": "reservationId",
            "value": "TREEE433"
        },
        {
            "name": "currentSlot",
            "value": "23"
        }
    ]
}

Resposta

HTTP/1.1 204 No Content

Exemplo 4: Notificar um utilizador sobre um evento através de um tópico personalizado

Como se pode ver nos exemplos anteriores, pode ligar a diferentes aspetos da equipa. No entanto, se quiser ligar a um aspeto que não faça parte da equipa ou não seja representado pelo Microsoft Graph ou quiser personalizar o nome, pode definir a origem do topictext para e transmitir um valor personalizado para o mesmo. webUrl é necessário ao definir topic a origem como text.

Solicitação

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": "deploymentApprovalRequired",
    "previewText": {
        "content": "New deployment requires your approval"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "569363e2-4e49-4661-87f2-16f245c5d66a"
    },
    "templateParameters": [
        {
            "name": "deploymentId",
            "value": "6788662"
        }
    ]
}

Resposta

HTTP/1.1 204 No Content

Exemplo 5: Notificar os membros da equipa sobre pedidos de aprovação de finanças pendentes

O exemplo seguinte mostra como pode enviar uma notificação do feed de atividades a todos os membros da equipa. Este exemplo é semelhante aos exemplos anteriores. No entanto, neste caso, o destinatário é um teamMembersNotificationRecipient. O teamId especificado no destinatário tem de corresponder ao teamId especificado no URL do pedido.

Nota: A capacidade de enviar notificações a todos os membros da equipa está limitada a equipas com 10 000 membros ou menos. Se a equipa exceder os 10 000 membros, nenhum dos membros da equipa receberá uma notificação.

Solicitação

O exemplo a seguir mostra a solicitação.

POST https://graph.microsoft.com/v1.0/teams/e8bece96-d393-4b9b-b8da-69cedef1a7e7/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/v1.0/teams/e8bece96-d393-4b9b-b8da-69cedef1a7e7"
    },
    "activityType": "pendingFinanceApprovalRequests",
    "previewText": {
        "content": "Internal spending team has a pending finance approval requests"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.teamMembersNotificationRecipient",
        "teamId": "e8bece96-d393-4b9b-b8da-69cedef1a7e7"
    },
    "templateParameters": [
        {
            "name": "pendingRequestCount",
            "value": "5"
        }
    ] 
}

Resposta

O exemplo a seguir mostra a resposta.

HTTP/1.1 204 No Content

Exemplo 6: Notificar os membros do canal sobre pedidos de aprovação financeira pendentes

O exemplo seguinte mostra como pode enviar uma notificação do feed de atividades a todos os membros do canal. Este exemplo é semelhante ao exemplo anterior. No entanto, neste caso, o destinatário é um channelMembersNotificationRecipient. O teamId especificado no destinatário tem de corresponder ao teamId especificado no URL do pedido.

Solicitação

O exemplo a seguir mostra a solicitação.

POST https://graph.microsoft.com/v1.0/teams/e8bece96-d393-4b9b-b8da-69cedef1a7e7/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/v1.0/teams/e8bece96-d393-4b9b-b8da-69cedef1a7e7"
    },
    "activityType": "pendingFinanceApprovalRequests",
    "previewText": {
        "content": "Internal spending team has a pending finance approval requests"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.channelMembersNotificationRecipient",
        "teamId": "e8bece96-d393-4b9b-b8da-69cedef1a7e7",
        "channelId": "19:3d61a2309f094f4a9310b20f1db37520@thread.tacv2"
    },
    "templateParameters": [
        {
            "name": "pendingRequestCount",
            "value": "5"
        }
    ] 
}

Resposta

O exemplo a seguir mostra a resposta.

HTTP/1.1 204 No Content

Exemplo 7: Notificar sobre pedidos de aprovação financeira pendentes na localização de resposta de mensagens de canal

Semelhante ao exemplo anterior, este exemplo utiliza entityUrl para o topic. No entanto, este exemplo liga-se a uma resposta de mensagem de canal. A resposta da mensagem do canal mostra o estado da reserva do hotel do utilizador. Selecionar a notificação leva o utilizador à mensagem de resposta no canal, onde pode verificar o respetivo estado de reserva.

Solicitação

O exemplo a seguir mostra a solicitação.

POST https://graph.microsoft.com/v1.0/teams/e8bece96-d393-4b9b-b8da-69cedef1a7e7/sendActivityNotification
Content-Type: application/json

{
    "topic": {
        "source": "entityUrl",
        "value": "https://graph.microsoft.com/beta/teams/{teamId}/channels/{channelId}/messages/{messageId}/replies/{replyId}"
    },
    "activityType": "reservationStatusUpdated",
    "previewText": {
        "content": "You have moved up the queue"
    },
    "recipient": {
        "@odata.type": "microsoft.graph.aadUserNotificationRecipient",
        "userId": "jacob@contoso.com"
    },
    "templateParameters": [
        {
            "name": "reservationId",
            "value": "TREEE433"
        },
        {
            "name": "currentSlot",
            "value": "23"
        }
    ]
}

Resposta

O exemplo a seguir mostra a resposta.

HTTP/1.1 204 No Content