Apertura de vínculos

Importante

Los ejemplos de código de esta sección se basan en la 4.6 y versiones posteriores del SDK de Bot Framework. Si está buscando documentación para versiones anteriores, consulte la sección Messaging Extensions - v3 SDK en la carpeta Resources de la documentación.

Este documento te guía sobre cómo agregar la actualización de vínculos al manifiesto de la aplicación con App studio y manualmente. Con la actualización de vínculos, la aplicación puede registrarse para recibir una actividad cuando las direcciones URL con un dominio determinado se invoke pegan en el área del mensaje de redacción. Contiene la dirección URL completa pegada en el área del mensaje de redacción y puede responder con una tarjeta que el usuario pueda deshacer, proporcionando información o invoke acciones adicionales. Esto funciona de forma similar a un comando de búsqueda con la dirección URL que actúa como término de búsqueda.

Nota

  • Actualmente, la desafución de vínculos no se admite en clientes móviles.
  • El resultado de la descarga de vínculos se almacena en caché durante 30 minutos.

La Azure DevOps de mensajería usa la desamuestra de vínculos para buscar direcciones URL pegadas en el área de mensaje de redacción que apunten a un elemento de trabajo. En la siguiente imagen, un usuario ha pegado una dirección URL de un elemento de trabajo en Azure DevOps, que la extensión de mensajería ha resuelto en una tarjeta:

Ejemplo de desafusado de vínculos

Para agregar la implementación de vínculos al manifiesto de la aplicación, agrega una nueva matriz a la sección json del manifiesto messageHandlers composeExtensions de la aplicación. Puedes agregar la matriz con la ayuda de App Studio o manualmente. Las listas de dominios pueden incluir caracteres comodín, por ejemplo *.example.com . Esto coincide exactamente con un segmento del dominio; si necesita hacer a.b.example.com coincidir, use *.*.example.com .

Nota

No agregue dominios que no estén en su control, ya sea directamente o a través de caracteres comodín. Por ejemplo, yourapp.onmicrosoft.com es válido, pero *.onmicrosoft.com no es válido. Además, los dominios de nivel superior están prohibidos. Por ejemplo, *.com , *.org .

  1. Abre App Studio desde el Microsoft Teams y selecciona la pestaña Editor de manifiestos.

  2. Cargue el manifiesto de la aplicación.

  3. En la página Extensión de mensajería, agregue el dominio que desea buscar en la sección Controladores de mensajes. En la siguiente imagen se explica el proceso:

    sección controladores de mensajes en App Studio

Para habilitar la extensión de mensajería para que interactúe con vínculos, primero debes agregar la messageHandlers matriz al manifiesto de la aplicación. En el siguiente ejemplo se explica cómo agregar manualmente la actualización de vínculos:

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

Para obtener un ejemplo de manifiesto completo, vea referencia de manifiesto.

Después de agregar el dominio al manifiesto de la aplicación, debes actualizar el código del servicio web para controlar la solicitud de invocación. Use la dirección URL recibida para buscar en el servicio y crear una respuesta de tarjeta. Si responde con más de una tarjeta, solo se usará la primera respuesta de tarjeta.

Se admiten los siguientes tipos de tarjeta:

Para obtener más información, vea Action type invoke.

Ejemplo

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);
}

Vea también