Partilhar via


Exemplo de código do Modelo de Ações Universais – Aprovação de Despesas

Este exemplo ilustra a implementação do Modelo de Ação Universal disponível para cartões adaptáveis versão 1.4 ou superior.

Pré-requisitos

  • O cliente Outlook/OWA está disponível e você tem uma conta.
  • Uma subscipção válida do Azure.
  • Compreensão do Azure Bot Framework.

Configuração para bot

Etapa 1: verifique se as cargas de cartão adaptáveis estão prontas

Para o cenário de aprovações, você pode encontrar o conteúdo JSON aqui. Abaixo, você pode ver a renderização de carga em telas móveis e de área de trabalho.

Para Ações Universais, você precisa usar Action.Execute o que reúne campos de entrada e enviar uma Invoke atividade do tipo adaptiveCard/action para o bot de destino. O bot de destino pode identificar a Ação feita usando o verb campo. Qualquer entrada adicional pode ser enviada usando o data campo.

Carga JSON

Aqui está um snippet do cenário Ações para Aprovação.

{
  "type": "ActionSet",
  "actions": [
    {
      "type": "Action.Execute",
      "title": "Accept",
      "verb": "approvalAccept",
      "data": {},
      "isPrimary": true,
      "style": "positive"
    },
    {
      "type": "Action.ShowCard",
      "id": "e1487cbc-66b0-037e-cdc4-045fb7d8d0b8",
      "title": "Reject",
      "card": {
        "type": "AdaptiveCard",
        "body": [
          {
            "type": "Input.Text",
            "id": "Comment",
            "placeholder": "Add a comment",
            "isMultiline": true
          },
          {
            "type": "ActionSet",
            "actions": [
              {
                "type": "Action.Execute",
                "title": "Submit",
                "verb": "approvalReject",
                "data": {
                  "comment": "${Comment.value}"
                }
              }
            ]
          }
        ],
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
        "fallbackText": "Unable to render the card",
        "padding": "None"
      }
    }
  ],
  "spacing": "None"
}

Para obter mais informações, consulte Action.Execute schema and properties

Etapa 2: escrever lógica de negócios personalizada no bot para aprovação

No bot do Azure, você pode usar o método OnAdaptiveCardInvokeAsync para capturar a ação usando o verb campo, adicionar sua lógica de negócios e enviar a atualização cartão de volta ao Outlook.

protected override async Task<AdaptiveCardInvokeResponse> OnAdaptiveCardInvokeAsync(
    ITurnContext<IInvokeActivity> turnContext,
    AdaptiveCardInvokeValue invokeValue,
    CancellationToken cancellationToken)
{
    try
    {
        // Approval Scenario
        if (invokeValue.Action.Verb == "approvalAccept")
        {
            // This function can contain your business logic
            // to capture the approval and show the refresh card
            return await ProcessApprovalAccepted();
        }
        else if (invokeValue.Action.Verb == "approvalReject")
        {
            // This function can contain you business logic
            // to capture the rejection and show the refresh card
            return await ProcessApprovalRejected();
        }
        else
        {
            throw new InvokeResponseException(HttpStatusCode.NotImplemented);
        }
    }
    catch (AdaptiveCardActionException e)
    {
        throw new InvokeResponseException(HttpStatusCode.NotImplemented, e.Response);
    }
}

Você pode testar seu bot localmente ou implantar seu bot no Azure.

Etapa 3: Enviar a Mensagem Acionável

Você pode enviar a Mensagem Acionável apoiada por Ações Universais semelhante a qualquer outra Mensagem Acionável. Para obter mais informações, consulte Enviar uma mensagem acionável por email.