Microsoft Bot Framework REST API — не удается получить идентификатор действия после отправки сообщения, содержащего вложения в беседу

#microsoft-teams #botframework

#microsoft-команды #botframework

Вопрос:

Используя Microsoft Bot Framework REST API, для командной беседы с ботом мы отправляем пользователю действие. Обратите внимание, что ожидаемое возвращаемое значение является объектом ResourceResponse, содержащим id созданное действие.

POST https://smba.trafficmanager.net/emea/v3/conversations/<conversation_id>/activities
Заголовки: Bearer <token>
Тело:

 {
    "type": "message",
    "text": "hello",
    "textFormat": "xml"
}
 

Ответ имеет статус 201 и содержит идентификатор действия, как и ожидалось:

 {
    "id": "1610124975523"
}
 

Отлично! Теперь давайте отправим сообщение, содержащее кнопку.

 {
    "type": "message",
    "text": "hello",
    "textFormat": "xml",
    "attachments": [
        {
        "contentType": "application/vnd.microsoft.card.adaptive",
        "content": {
            "type": "AdaptiveCard",
            "version": "1.0",
            "body": [],
            "actions": [{
                "type": "Action.Submit",
                "title": "SUBMIT",
                "data": {
                    "payload": "derp"
                }
                }]
      }}
    ]
}
 

На этот раз мы получаем пустой ответ 202 и нет прикрепленного идентификатора действия.

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

Как мы можем получить идентификатор действия при отправке действия, содержащего вложения, такие как кнопки? Почему это не соответствует спецификациям REST API?

Комментарии:

1. Мы расследуем эту проблему, я сообщу вам о наших результатах.

Ответ №1:

Я создал проблему на Github SDK Bot framework здесь

По-видимому, действие, которое включает в себя как текстовые, так и карточные вложения, отправляется как два отдельных действия (текст, затем прикрепленная карточка), поэтому получен пустой ответ 202. Это, по-видимому, «по замыслу».

Таким образом, (не очень хорошее) решение состоит в том, чтобы создать оба действия отдельно и сохранить оба идентификатора действий.