Бот Microsoft Teams: карточка, включающая действие.openURL с глубокой ссылкой на задачу

#botframework #microsoft-teams #adaptive-cards

#botframework #microsoft-teams #адаптивные карточки

Вопрос:

Для нашего бота в командах, использующего Microsoft Bot Framework, я хочу, чтобы бот отправил карточку с кнопкой, при нажатии на которую откроется модуль задачи через глубокую ссылку

Глубокая ссылка:

 https://teams.microsoft.com/l/task/<BOT_ID>?fallbackUrl=https://google.comamp;completionBotId=<BOT_ID>amp;height=largeamp;width=largeamp;title=Titleamp;card=<card>
 

Откуда <card> берется пример в документах:

 {
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "Here is a ninja cat:"
        },
        {
            "type": "Image",
            "url": "http://adaptivecards.io/content/cats/1.png",
            "size": "Medium"
        }
    ],
    "version": "1.0"
}
 

URL кодирует JSON в: {
"type": "AdaptiveCard",
"body": [
{
"type": "TextBlock",
"text": "Here is a ninja cat:"
},
{
"type": "Image",
"url": "http://adaptivecards.io/content/cats/1.png",
"size": "Medium"
}
],
"version": "1.0"
}

Затем у нас есть глубокая ссылка:

 https://teams.microsoft.com/l/task/<BOT_ID>?fallbackUrl=https://google.comamp;completionBotId=<BOT_ID>amp;height=largeamp;width=largeamp;title=Titleamp;card={
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "Here is a ninja cat:"
        },
        {
            "type": "Image",
            "url": "http://adaptivecards.io/content/cats/1.png",
            "size": "Medium"
        }
    ],
    "version": "1.0"
}
 

Наконец, отправьте сообщение через API Bot Framework:

СООБЩЕНИЕ https://smba.trafficmanager.net/emea/v3/conversations /<conv_id>/
тело действия:

 {
    "recipient": {
        "id": "29:1uuzUvFTkcseXZ1Q2wOva1inGkpH1SqbHwqdXjG8MhUa8mkFsdUnvrgn4FnPbX8CwBl_GwDHSQGIlRSPKczwUFg"
    },
    "type": "message",
    "text": "Hi 👋<br/><br/>What do you need?",
    "textFormat": "xml",
    "attachments": [
    {
        "contentType": "application/vnd.microsoft.card.adaptive",
        "content" : {
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.0",
    "actions": [{
                    "type": "Action.OpenUrl",
                    "title": "Display task",
                    "url": "https://teams.microsoft.com/l/task/<BOT_ID>?fallbackUrl=https://google.comamp;completionBotId=<BOT_ID>amp;height=largeamp;width=largeamp;title=Titleamp;card={
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "Here is a ninja cat:"
        },
        {
            "type": "Image",
            "url": "http://adaptivecards.io/content/cats/1.png",
            "size": "Medium"
        }
    ],
    "version": "1.0"
}"
                }],
    "body": []}}]}
 

Сообщение появляется в командах, как и ожидалось, но при нажатии на кнопку ничего не происходит. Что я делаю не так?

Ответ №1:

Проблема заключалась в том, что я отправлял свой идентификатор бота вместо своего идентификатора приложения для параметра APP_ID. Я не понимаю этого в документах, хотя:

Обратите внимание, что допустимо, чтобы APP_ID и BOT_APP_ID были одинаковыми, и во многих случаях так и будет, если в приложении есть бот, поскольку рекомендуется использовать его в качестве идентификатора приложения, если он есть.

Как предполагается этого добиться?

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

1. Когда вы создаете своего бота в Azure, у вас есть возможность создать его, указав свой собственный идентификатор. В качестве альтернативы вы можете просто использовать предоставленный идентификатор. После этого, когда вы создаете свое приложение Teams, у вас снова есть возможность указать идентификатор для самого приложения Teams. Опять же, вы можете указать свое собственное значение, так что вы можете просто использовать то же значение снова. Лично я бы избегал этого, поскольку это приводит к путанице — заставляет думать, что это одно и то ЖЕ, хотя это определенно не так.