Развернуть ссылкуLink unfurling

Важно!

Примеры кода, приведенные в этом разделе, основаны на 4,6 и более поздних версиях пакета SDK Bot.The code samples in this section are based on 4.6 and later versions of the Bot Framework SDK. Если вы ищете документацию по более ранним версиям, ознакомьтесь с разделом Messaging Extensions – v3 SDK в папке resources этой документации.If you're looking for documentation for earlier versions, see the Messaging Extensions - v3 SDK section in the Resources folder of the documentation.

Примечание

В настоящее время ссылки унфурлинг не поддерживаются на мобильных клиентах.Currently, Link unfurling is not supported on Mobile clients.

С помощью Link унфурлинг приложение может зарегистрироваться для получения invoke действия при вставке URL-адресов с определенным доменом в область "Создание сообщения".With link unfurling your app can register to receive an invoke activity when URLs with a particular domain are pasted into the compose message area. В нем invoke будет содержаться полный URL-адрес, который был вставлен в область сообщений, и вы можете ответить на карточку, которая может унфурлпользователь, предоставляя дополнительные сведения или действия.The invoke will contain the full URL that was pasted into the compose message area, and you can respond with a card the user can unfurl, providing additional information or actions. Это аналогично команде поискас URL-адресом в качестве условия поиска.This works very similarly to a search command, with the URL serving as the search term.

Модуль обмена сообщениями Azure DevOps использует Link унфурлинг для поиска URL-адресов, вставленных в область сообщений, указывающую на рабочий элемент.The Azure DevOps messaging extension uses link unfurling to look for URLs pasted into the compose message area pointing to a work item. На снимке экрана ниже пользователь вставил в URL-адрес рабочего элемента в Azure DevOps, который разрешал расширение обмена сообщениями в карточке.In the screenshot below, a user has pasted in a URL for a work item in Azure DevOps which the messaging extension has resolved into a card.

Пример ссылки унфурлинг

Для этого мы добавим новый messageHandlers массив в composeExtensions раздел JSON манифеста приложения.To do this you'll add a new messageHandlers array to the composeExtensions section of your app manifest JSON. Это можно сделать с помощью App Studio или вручную.You can either do so with the help of App Studio, or manually. Примеры доменов могут включать подстановочные знаки *.example.com .Domain listings can include wildcards, for example *.example.com. Это соответствует только одному сегменту домена; Если вам нужно использовать этот параметр a.b.example.com *.*.example.com .This matches exactly one segment of the domain; if you need to match a.b.example.com then use *.*.example.com.

Использование App StudioUsing App Studio

  1. В App Studio на вкладке редактор манифеста Загрузите манифест приложения.In App Studio, on the Manifest editor tab, load your app manifest.
  2. На странице расширение системы обмена сообщениями добавьте домен, который вы хотите найти, в раздел обработчики сообщений , как показано на снимке экрана ниже.On the Messaging Extension page, add the domain you want to look for in the Message handlers section as in the screenshot below.

раздел обработчиков сообщений в App Studio

ВручнуюManually

Чтобы разрешить своему расширению обмена сообщениями взаимодействовать с ссылками таким способом, сначала необходимо добавить messageHandlers массив в манифест приложения, как показано в примере ниже.To enable your messaging extension to interact with links this way you'll first need to add the messageHandlers array to your app manifest as in the example below. Этот пример не является полным манифестом, в статье Справочник по манифесту представлен полный пример манифеста.This example is not the complete manifest, see manifest reference for a complete manifest example.

...
"composeExtensions": [
  {
    "botId": "abc123456-ab12-ab12-ab12-abcdef123456",
    "messageHandlers": [
      {
        "type": "link",
        "value": {
          "domains": [
            "*.trackeddomain.com"
          ]
        }
      }
    ]
  }
],
...

Добавив домен для прослушивания манифеста приложения, вам потребуется обновить код веб-службы, чтобы обработать запрос Invoke.Once you've added the domain to listen on to the app manifest, you'll need to update your web service code to handle the invoke request. Используйте полученный URL-адрес для поиска службы и создания ответа на карту.Use the URL you receive to search your service and create a card response. Если вы отдаете ответ с несколькими картами, будет использоваться только первый из них.If you respond with more than one card, only the first will be used.

Поддерживаются следующие типы карточек:We support the following card types:

Посмотрите , что представляют собой карточки для обзора.See What are cards for an overview.

protected override async Task<MessagingExtensionResponse> OnTeamsAppBasedLinkQueryAsync(ITurnContext<IInvokeActivity> turnContext, AppBasedLinkQuery query, CancellationToken cancellationToken)
{
    //You'll use the query.link value to search your service and create a card response
    var card = new HeroCard
    {
        Title = "Hero Card",
        Text = query.Url,
        Images = new List<CardImage> { new CardImage("https://raw.githubusercontent.com/microsoft/botframework-sdk/master/icon.png") },
    };

    var attachments = new MessagingExtensionAttachment(HeroCard.ContentType, null, card);
    var result = new MessagingExtensionResult(AttachmentLayoutTypes.List, "result", new[] { attachments }, null, "test unfurl");

    return new MessagingExtensionResponse(result);
}