Пример кода модели универсальных действий — утверждение расходов

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

Требования

  • Клиент Outlook/OWA доступен, и у вас есть учетная запись.
  • Допустимое подчинение Azure.
  • Общие сведения об Azure Bot Framework.

Настройка бота

Шаг 1. Убедитесь, что полезные данные адаптивных карта готовы

Для сценария утверждения полезные данные JSON можно найти здесь. Ниже показана отрисовка полезных данных на экранах мобильных устройств и компьютеров.

Для универсальных действий необходимо использовать Action.Execute метод , который собирает поля ввода и отправляет Invoke действие типа adaptiveCard/action целевому боту. Целевой бот может определить действие, выполненное verb с помощью поля. Любые дополнительные входные данные можно отправить с помощью data поля .

Полезные данные JSON

Ниже приведен фрагмент сценария Действий для утверждения.

{
  "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"
}

Дополнительные сведения см. в разделе Схема и свойства Action.Execute

Шаг 2. Написание пользовательской бизнес-логики в боте для утверждения

В боте Azure можно использовать метод OnAdaptiveCardInvokeAsync, чтобы записать действие с помощью verb поля, добавить бизнес-логику и отправить карта обновления обратно в 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);
    }
}

Бот можно протестировать локально или развернуть в Azure.

Шаг 3. Отправка сообщения с действиями

Вы можете отправить сообщение с действиями, поддерживаемое универсальными действиями, как и любое другое сообщение с действиями. Дополнительные сведения см. в статье Отправка сообщения с действиями по электронной почте.