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

В этом примере показана реализация модели универсального действия, доступная для адаптивных карточек версии 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": "Mark complete",
      "verb": "markComplete",
      "data": {},
      "isPrimary": true,
      "style": "positive"
    },
    {
      "type": "Action.ShowCard",
      "title": "Add a comment",
      "card": {
        "type": "AdaptiveCard",
        "body": [
          {
            "type": "Input.Text",
            "id": "AddComment",
            "placeholder": "Add a comment",
            "isMultiline": true
          },
          {
            "type": "ActionSet",
            "actions": [
              {
                "type": "Action.Execute",
                "title": "Submit",
                "verb": "projectSubmitComment",
                "data": "{Reason: {{AddComment.value}}}"
              }
            ]
          }
        ],
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
        "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
    {
        if (invokeValue.Action.Verb == "markComplete")
        {
            // This function can contain your business logic
            // to capture the complete action and show the refresh card
            return await ProcessProjectMarkComplete();
        }
        else if (invokeValue.Action.Verb == "projectSubmitComment")
        {
            // This function can contain your business logic
            // to submit the comment and show the refresh car
            return await ProcessProjectSubmitComment();
        }
        else
        {
            throw new InvokeResponseException(HttpStatusCode.NotImplemented);
        }
    }
    catch (AdaptiveCardActionException e)
    {
        throw new InvokeResponseException(HttpStatusCode.NotImplemented, e.Response);
    }
}

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

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

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