Создание и отправка сообщений

Для создания и отправки сообщений с действиями используйте входящий веб-перехватчик или соединитель Microsoft 365. Однако интерактивные сообщения доступны только пользователям с лицензией на Exchange Online.

Создание сообщений с действиями

Сообщения с действиями включают шесть видимых кнопок на карточке. Каждая кнопка определяется в свойстве potentialAction сообщения с помощью ActionCard действий, каждая из которых имеет тип ввода, текстовое поле, средство выбора даты или список с несколькими вариантами выбора. С каждым ActionCard связано действие, например HttpPOST.

Карточки соединителя поддерживают следующие действия.

  • ActionCard: представляет один или несколько типов входных данных и соответствующие действия.
  • HttpPOST: отправляет запрос POST на URL-адрес.
  • OpenUri: открывает URI в отдельном браузере или приложении. При необходимости предназначен для различных URI в зависимости от операционных систем.

Действие ActionCard поддерживает три типа входных данных:

  • TextInput: однострочное или многострочное текстовое поле с необязательным ограничением длины.
  • DateInput: средство выбора даты с необязательным выбором времени.
  • MultichoiceInput: нумерованный список вариантов с возможностью выбора одного или нескольких пунктов.

MultichoiceInput поддерживает свойство style, указывающее, отображается ли список изначально полностью развернутым. Значение style по умолчанию зависит от значения isMultiSelect.

isMultiSelect По умолчанию style
false или не задано compact
true expanded

Чтобы отобразить список с несколькими вариантами выбора в компактном стиле, укажите "isMultiSelect": true и "style": true.

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

Примечание.

  • Значение compact для свойства style в Microsoft Teams равноценно значению normal для свойства style в Microsoft Outlook.
  • Для действия HttpPOST маркер носителя включается в запросы. Этот маркер включает Microsoft Entra удостоверение пользователя Microsoft 365, который выполнил действие.

Отправка сообщения через входящий веб-перехватчик или соединитель для Группы Microsoft 365

Чтобы отправить сообщение через входящий веб-перехватчик или соединитель для Группы Microsoft 365, опубликуйте полезные данные JSON на URL-адрес веб-перехватчика. Эти полезные данные должны быть в виде карта соединителя для Группы Microsoft 365.

С помощью этого кода JSON также можно создавать карточки с различными элементами для ввода данных, например текстовыми полями, переключателями множественного выбора или средствами выбора даты и времени. Код, генерирующий карточку и отправляющий ее на URL-адрес веб-перехватчика, может выполняться в любой размещенной службе. Эти карточки определяются как часть сообщений с действиями, а также поддерживаются в карточках , используемых в ботах Teams и расширениях сообщений.

Пример сообщения соединителя

Пример сообщения соединителя выглядит следующим образом.

{
    "@type": "MessageCard",
    "@context": "http://schema.org/extensions",
    "themeColor": "0076D7",
    "summary": "Larry Bryant created a new task",
    "sections": [{
        "activityTitle": "Larry Bryant created a new task",
        "activitySubtitle": "On Project Tango",
        "activityImage": "https://adaptivecards.io/content/cats/3.png",
        "facts": [{
            "name": "Assigned to",
            "value": "Unassigned"
        }, {
            "name": "Due date",
            "value": "Mon May 01 2017 17:07:18 GMT-0700 (Pacific Daylight Time)"
        }, {
            "name": "Status",
            "value": "Not started"
        }],
        "markdown": true
    }],
    "potentialAction": [{
        "@type": "ActionCard",
        "name": "Add a comment",
        "inputs": [{
            "@type": "TextInput",
            "id": "comment",
            "isMultiline": false,
            "title": "Add a comment here for this task"
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Add comment",
            "target": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "ActionCard",
        "name": "Set due date",
        "inputs": [{
            "@type": "DateInput",
            "id": "dueDate",
            "title": "Enter a due date for this task"
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Save",
            "target": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "OpenUri",
        "name": "Learn More",
        "targets": [{
            "os": "default",
            "uri": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "ActionCard",
        "name": "Change status",
        "inputs": [{
            "@type": "MultichoiceInput",
            "id": "list",
            "title": "Select a status",
            "isMultiSelect": "false",
            "choices": [{
                "display": "In Progress",
                "value": "1"
            }, {
                "display": "Active",
                "value": "2"
            }, {
                "display": "Closed",
                "value": "3"
            }]
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Save",
            "target": "https://learn.microsoft.com/outlook/actionable-messages"
        }]
    }]
}

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

Снимок экрана: пример карта соединителя в канале.

Отправка сообщений с помощью cURL и PowerShell

Чтобы опубликовать сообщение в веб-перехватчике с помощью cURL. выполните следующие действия.

  1. Установите cURL с сайта cURL.

  2. Введите в командной строке следующую команду cURL:

    // on macOS or Linux
    curl -H 'Content-Type: application/json' -d '{"text": "Hello World"}' <YOUR WEBHOOK URL>
    
    // on Windows
    curl.exe -H "Content-Type:application/json" -d "{'text':'Hello World'}" <YOUR WEBHOOK URL>
    

    Примечание.

    В случае успешного выполнения запроса POST команда curl должна возвращать простой отклик 1.

  3. Проверьте наличие новой опубликованной карты в клиенте Teams.

Отправка адаптивных карточек с помощью входящего веб-перехватчика

Примечание.

  • Все собственные элементы схемы адаптивных карточек, кроме Action.Submit, полностью поддерживаются.
  • Поддерживаемые действия: Action.OpenURL, Action.ShowCard и Action.ToggleVisibility.

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

  1. Настройка пользовательского веб-перехватчика в Teams.
  2. Создайте JSON-файл адаптивной карточки, используя следующий код:
    {
       "type":"message",
       "attachments":[
          {
             "contentType":"application/vnd.microsoft.card.adaptive",
             "contentUrl":null,
             "content":{
                "$schema":"http://adaptivecards.io/schemas/adaptive-card.json",
                "type":"AdaptiveCard",
                "version":"1.2",
                "body":[
                    {
                    "type": "TextBlock",
                    "text": "For Samples and Templates, see [https://adaptivecards.io/samples](https://adaptivecards.io/samples)"
                    }
                ]
             }
          }
       ]
    }

Имеются следующие свойства JSON-файла адаптивной карточки.

  • Поле "type" должно иметь значение "message".
  • Массив "attachments" содержит набор объектов card.
  • В поле "contentType" следует задать тип "Адаптивная карточка".
  • Объект "content" — это карточка, отформатированная в JSON.
  1. Проверьте адаптивную карточку с помощью Postman.

    1. Протестируйте адаптивную карточку с помощью Postman для отправки запроса POST на URL-адрес, созданный для настройки входящих веб-перехватчиков.
    2. Вставьте файл JSON в текст запроса и просмотрите сообщение адаптивной карточки в Teams.

Совет

Используйте примеры кода и шаблоны адаптивной карточки для проверки основной части запроса POST.

Ограничение скорости для соединителей

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

Пороговые значения количества транзакций в секунду

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

Время в секундах Максимальное разрешенное количество запросов
1 4
30 60
3600 100
7200 150
86400 1800

Примечание.

Логика повторных попыток с экспоненциальной задержкой поможет избежать ограничения скорости в тех случаях, когда число запросов за секунду превышает пределы. См. за откликами HTTP 429, чтобы не достигать ограничений по скорости.

// Please note that response body needs to be extracted and read 
// as Connectors do not throw 429s
try
{
    // Perform Connector POST operation     
    var httpResponseMessage = await _client.PostAsync(IncomingWebhookUrl, new StringContent(content));
    // Read response content
    var responseContent = await httpResponseMessage.Content.ReadAsStringAsync();
    if (responseContent.Contains("Microsoft Teams endpoint returned HTTP error 429")) 
    {
        // initiate retry logic
    }
}

Эти ограничения установлены с целью предотвратить перегрузку канала запросами от соединителя и обеспечивают удобство работы пользователей.

См. также