#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. Опять же, вы можете указать свое собственное значение, так что вы можете просто использовать то же значение снова. Лично я бы избегал этого, поскольку это приводит к путанице — заставляет думать, что это одно и то ЖЕ, хотя это определенно не так.