Vínculo profundo a una aplicación
Los vínculos profundos de Microsoft Teams son herramientas eficaces que permiten a los usuarios navegar directamente a contenido o acciones específicos dentro de una aplicación. Los vínculos profundos están configurados para realizar varias acciones, como abrir una pestaña, iniciar un cuadro de diálogo de instalación de la aplicación o examinar dentro de la aplicación.
Nota:
En este tema se refleja la versión 2.0.x de la biblioteca cliente JavaScript de Microsoft Teams (TeamsJS). Si usa una versión anterior, consulte la introducción a la biblioteca TeamsJS para obtener instrucciones sobre las diferencias entre la versión más reciente de TeamsJS y las versiones anteriores.
Escenarios de vínculos profundos
Estos son algunos de los escenarios en los que puede usar un vínculo profundo:
- Instalación de aplicaciones: puede usar vínculos profundos que permiten a los usuarios saber más sobre una aplicación e instalarla en distintos ámbitos.
- Bots y conectores: puede usar vínculos profundos en los mensajes de bots y conectores para informar a los usuarios sobre los cambios en la pestaña o sus elementos.
- Vaya a una página específica: puede crear vínculos profundos que permitan a los usuarios navegar a páginas específicas dentro de la aplicación.
- Aplicación personalizada: puede generar vínculos profundos para una aplicación personalizada. Sin embargo, si una aplicación de la Tienda Microsoft Teams comparte el mismo identificador de aplicación que el identificador de aplicación personalizado, el vínculo profundo abre la aplicación desde la Tienda Teams en lugar de la aplicación personalizada.
- Para dispositivos móviles: también puede crear un vínculo profundo a una aplicación para dispositivos móviles después de que la aplicación se apruebe para el cliente móvil de Teams. Para que el vínculo profundo funcione en Teams iOS, necesita el id. de equipo de Apple App Store Connect. Para obtener más información, consulte cómo actualizar el id. de equipo de Apple App Store Connect.
Vínculo profundo para abrir un cuadro de diálogo de instalación de aplicaciones
Los vínculos profundos permiten a los usuarios de la aplicación abrir un cuadro de diálogo de instalación de aplicaciones para conocer cualquier información sobre la aplicación o instalarla en contextos diferentes. Puede crear un vínculo profundo a una aplicación de las siguientes maneras:
- Configuración manual del vínculo profundo mediante el identificador de aplicación
- Configuración del vínculo profundo mediante TeamsJS
Configuración manual del vínculo profundo mediante el identificador de aplicación
Con el vínculo profundo, puede abrir un cuadro de diálogo de instalación de la aplicación directamente desde el cliente de Teams mediante el identificador de aplicación.
https://teams.microsoft.com/l/app/<your-app-id>?tenantId=<tenantId>
<your-app-id>
es el identificador de la aplicación (fxxxxxxx-0xxx-4xxx-8xxx-cxxxxxxxxxxx).
Id. de aplicación para diferentes tipos de aplicaciones
En la tabla siguiente se enumeran los distintos tipos de identificadores de aplicación usados para diferentes tipos de aplicaciones para vínculos profundos:
Tipo de aplicación | Tipo de identificador de aplicación |
---|---|
Aplicación personalizada cargada en Teams | Identificador de manifiesto |
Aplicaciones enviadas al catálogo de la organización | Id. de catálogo de la organización |
Aplicaciones enviadas a la Tienda Teams | Id. de tienda |
Para obtener más información, consulte cómo buscar el identificador en función del identificador de manifiesto de la aplicación.
Configuración del vínculo profundo mediante TeamsJS
Las aplicaciones pueden usar la biblioteca cliente javaScript de Microsoft Teams (TeamsJS) para iniciar el cuadro de diálogo de instalación de la aplicación, lo que elimina la necesidad de generación manual de vínculos profundos. Este es un ejemplo de cómo desencadenar el cuadro de diálogo de instalación de la aplicación mediante TeamsJS dentro de la aplicación:
// Open an app install dialog from your tab
if(appInstallDialog.isSupported()) {
const dialogPromise = appInstallDialog.openAppInstallDialog({ appId: "<appId>" });
dialogPromise.
then((result) => {/*Successful operation*/}).
catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }
Para más información, vea appInstallDialog
.
Vínculo profundo para examinar dentro de la aplicación
Los usuarios de la aplicación pueden examinar el contenido de Teams desde la pestaña mediante TeamsJS. Puede usar un vínculo profundo para examinar dentro de la aplicación si la pestaña necesita conectar usuarios con otro contenido en Teams, como un canal, un mensaje, otra pestaña o para abrir un cuadro de diálogo de programación. En algunos casos, la navegación también se puede realizar con TeamsJS y se recomienda usar las funcionalidades con tipo de TeamsJS siempre que sea posible.
Puede configurar vínculos profundos para examinar dentro de la aplicación de las siguientes maneras:
- Configuración del vínculo profundo para examinar manualmente dentro de la aplicación
- Configuración del vínculo profundo a una pestaña mediante TeamsJS
- Configuración del vínculo profundo para navegar entre pestañas
Configuración del vínculo profundo para examinar manualmente dentro de la aplicación
Las pestañas personales tienen un ámbito personal
, mientras que las pestañas de canal y grupo usan ámbitos team
o group
. Los dos tipos de tabulación tienen una sintaxis ligeramente diferente, ya que solo la pestaña configurable tiene una channel
propiedad asociada a su objeto de contexto. Para obtener más información sobre los ámbitos de pestaña, consulte manifiesto de aplicación.
Para crear un vínculo profundo en un bot, conector o tarjeta de extensión de mensaje, use el formato siguiente:
https://teams.microsoft.com/l/entity/<appId>/<entityId>?tenantId=<tenantId>&webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>&openInMeeting=false
Si el bot envía un mensaje que contiene un
TextBlock
con un vínculo profundo, se abre una nueva pestaña del explorador cuando el usuario selecciona el vínculo. Esto sucede en Chrome y en la aplicación de escritorio de Teams cuando se ejecutan en Linux.Si el bot envía la misma dirección URL de vínculo profundo a ,
Action.OpenUrl
la pestaña Teams se abre en la pestaña del explorador actual cuando el usuario selecciona el vínculo.
Parámetros de consulta
Nombre del parámetro | Descripción |
---|---|
appId |
Identificador del Centro de administración de Microsoft Teams. Ejemplo: fe4a8eba-2a31-4737-8e33-e5fae6fee194 |
entityId |
Identificador de la pestaña, que proporcionó al configurar la pestaña. Al generar una dirección URL para la vinculación profunda, siga usando el identificador de entidad como nombre de parámetro en la dirección URL. Al configurar la pestaña, el objeto de contexto hace referencia a entityId como page.id . Ejemplo: Lista de tareas 123 |
entityWebUrl o subEntityWebUrl |
Un campo opcional con una dirección URL de reserva que se usará si el cliente no admite la representación de la pestaña. Ejemplo: https://tasklist.example.com/123 Otra posibilidad: https://tasklist.example.com/list123/task456 |
entityLabel o subEntityLabel |
Etiqueta para el elemento de la pestaña que se va a usar al mostrar el vínculo profundo. Ejemplo: Lista de tareas 123 o Tarea 456 |
context.subEntityId |
Un identificador para el elemento dentro de la pestaña. Al generar una dirección URL para la vinculación profunda, siga usando subEntityId como nombre de parámetro en la dirección URL. Al configurar la pestaña, el objeto de contexto hace referencia a subEntityId como page.subPageId . Ejemplo: Tarea 456 |
context.channelId |
Id. de canal de Microsoft Teams que está disponible en la pestaña contexto. Esta propiedad solo está disponible en pestañas configurables con un ámbito de equipo. No está disponible en pestañas estáticas, que tiene un ámbito personal . Ejemplo: 19:cbe3683f25094106b826c9cada3afbe0@thread.skype |
context.chatId |
Identificador de chat que está disponible en el contexto de pestaña para el chat de grupo y reunión. Ejemplo: 17:b42de192376346a7906a7dd5cb84b673@thread.v2 |
context.contextType |
Chat es el único compatible con contextType reuniones. Ejemplo: chat |
openInMeeting |
Use openInMeeting para controlar la experiencia del usuario cuando la pestaña de destino está asociada a una reunión. Si el usuario interactúa con el vínculo profundo en una experiencia de reunión en curso, Teams abre la aplicación en el panel del lado de la reunión. Establezca este valor false en para abrir siempre la aplicación en la pestaña de chat de reunión en lugar del panel lateral, independientemente del estado de la reunión. Teams omite cualquier valor distinto de false . Ejemplo: false |
Importante
Asegúrese de que todos los parámetros de consulta y los espacios en blanco estén correctamente codificados mediante URI. A continuación se muestra un ejemplo de parámetros de consulta codificados por URI:
var encodedWebUrl = encodeURIComponent('https://tasklist.example.com/123/456&label=Task 456'); var encodedContext = encodeURIComponent(JSON.stringify({"subEntityId": "task456"})); var taskItemUrl = 'https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=' + encodedWebUrl + '&context=' + encodedContext;
No se admite el vínculo profundo a una aplicación de Teams con URI codificado en Outlook.
Configuración del vínculo profundo a una pestaña mediante TeamsJS
Puede configurar vínculos profundos en la aplicación a través de TeamsJS para permitir a los usuarios examinar diferentes páginas dentro de la aplicación. El comportamiento de navegación de una aplicación de Teams extendida en Microsoft 365 Office depende de dos factores:
- Destino al que apunta el vínculo profundo.
- Host en el que se ejecuta la aplicación de Teams.
Si la aplicación de Teams se ejecuta dentro del host donde se dirige el vínculo profundo, la aplicación se abre directamente dentro del host. Sin embargo, si la aplicación de Teams se ejecuta en un host diferente desde el que se dirige el vínculo profundo, la aplicación se abre primero en el explorador.
Compatibilidad con vínculos profundos en TeamsJS
TeamsJS permite que las aplicaciones de Teams extendidas en Outlook y Microsoft 365 comprueben si el host admite la funcionalidad que intenta usar. Para comprobar la compatibilidad de un host con una funcionalidad, puede usar la función isSupported()
asociada al espacio de nombres de la API. TeamsJS organiza las API en funcionalidades mediante espacios de nombres. Por ejemplo, antes de usar una API en el pages
espacio de nombres, puede comprobar el valor booleano devuelto desde pages.isSupported()
y realizar la acción adecuada en el contexto de la aplicación y la interfaz de usuario de la aplicación. Para obtener más información, consulte Creación de pestañas y otras experiencias hospedadas con la biblioteca TeamsJS.
En el código siguiente se muestra cómo navegar a una entidad específica dentro de la aplicación de Teams:
Puede desencadenar una navegación desde la pestaña mediante la función pages.navigateToApp() como se muestra en el código siguiente:
if (pages.isSupported()) {
const navPromise = pages.navigateToApp({ appId: <appId>, pageId: <pageId>, webUrl: <webUrl>, subPageId: <subPageId>, channelId:<channelId>});
navPromise.
then((result) => {/*Successful navigation*/}).
catch((error) => {/*Failed navigation*/});
}
else { /* handle case where capability isn't supported */ }
- Para obtener más información, consulte Navegar dentro de una aplicación de pestaña.
- Para obtener más información sobre la funcionalidad de páginas, vea pages.navigateToApp() y el espacio de nombres pages para ver otras opciones de navegación.
- Para abrir directamente un vínculo profundo mediante app.openLink(), consulte la función app.openLink().
Configuración del vínculo profundo para navegar entre pestañas
La funcionalidad de páginas de la biblioteca TeamsJS proporciona compatibilidad para la navegación entre pestañas dentro de una aplicación. En concreto, el pages.currentApp
espacio de nombres ofrece una función navigateTo(NavigateWithinAppParams)
para permitir la navegación a una pestaña específica dentro de la aplicación actual y una función navigateToDefaultPage()
para navegar a la primera pestaña definida en el manifiesto de la aplicación. En el código siguiente se muestra cómo navegar a una pestaña específica y predeterminada:
En el código siguiente se muestra cómo navegar a una pestaña específica:
if (pages.currentApp.isSupported()) {
const navPromise = pages.currentApp.navigateTo({pageId: <pageId>, subPageId: <subPageId>});
navPromise.
then((result) => {/*Successful navigation*/}).
catch((error) => {/*Failed navigation*/});
}
else {/*Handle situation where capability isn't supported*/
const navPromise = pages.navigateToApp({appId: <appId>, pageId: <pageId>});
navPromise.
then((result) => {/*Successful navigation*/}).
catch((error) => {/*Failed navigation*/});
}
Nota:
La navegación de la aplicación de pestaña solo se admite en el nuevo cliente de Teams.
Configuración de la navegación del botón Atrás
Cuando una aplicación tiene varias pestañas, un usuario puede usar el botón Atrás de la aplicación host de Microsoft 365 para retroceder en el historial de navegación. Sin embargo, el historial no incluye las acciones que un usuario realiza dentro de una pestaña. Si desea mejorar la experiencia del botón Atrás, puede mantener su propia pila de navegación interna y configurar un controlador personalizado para las selecciones de botón atrás. Esto se puede realizar a través de la registerBackButtonHandler()
función en el espacio de pages.backStack
nombres.
Después de registrar el controlador, le ayuda a abordar la solicitud de navegación antes de que el sistema tome medidas. Si el controlador puede administrar la solicitud, debe devolverse true
para que el sistema sepa que no es necesario realizar ninguna acción adicional. Si la pila interna está vacía, debe devolverse false
para que el sistema pueda llamar a la navigateBack()
función en su lugar y realizar la acción adecuada.
Devolver el foco a la aplicación host
Una vez que el usuario comienza a usar elementos dentro de una pestaña, de forma predeterminada, el foco permanece con los elementos del iFrame hasta que el usuario selecciona fuera de ella. Si el iFrame forma parte del usuario que navega con métodos abreviados de teclado (la tecla Tab o la tecla F6), puede centrarse en la aplicación host. Puede centrarse en la aplicación host mediante la pages.returnFocus()
función . La returnFocus()
función acepta un valor booleano que indica la dirección para avanzar el foco dentro de la aplicación host; true
para adelante y false
hacia atrás. Por lo general, forward resalta la barra de búsqueda y hacia atrás resalta la barra de la aplicación.
Vínculo profundo a un chat con la aplicación
Puede permitir que los usuarios de la aplicación naveguen a un chat personal con la aplicación configurando manualmente el vínculo profundo.
https://teams.microsoft.com/l/entity/<appId>/conversations?tenantId=<tenantId>
appId
es el identificador de la aplicación. Para obtener más información, consulte Id. de aplicación para diferentes tipos de aplicaciones.
Compartir un vínculo profundo para una pestaña
Puede compartir vínculos profundos a entidades en aplicaciones de Teams para navegar al contenido y la información de la aplicación de pestaña. Por ejemplo, si la aplicación de pestaña contiene una lista de tareas, los miembros del equipo pueden crear y compartir vínculos a tareas individuales. Cuando el usuario de la aplicación selecciona el vínculo, se desplaza a la pestaña que se centra en el elemento específico.
Agregue una acción de vínculo de copia a cada elemento de la manera que mejor se adapte a la interfaz de usuario. Cuando el usuario realice esta acción, llame pages.shareDeepLink()
a para mostrar un cuadro de diálogo que contiene un vínculo que el usuario puede copiar en el Portapapeles. Cuando realice esta llamada, pase un id. para el elemento. Se vuelve a poner en contexto cuando se sigue el vínculo y se vuelve a cargar la pestaña.
pages.shareDeepLink({ subPageId: <subPageId>, subPageLabel: <subPageLabel>, subPageWebUrl: <subPageWebUrl> })
Debe reemplazar los parámetros siguientes por la información adecuada:
Nombre del parámetro | Descripción |
---|---|
subPageId |
Identificador único del elemento dentro de la página a la que está vinculando en profundidad. |
subPageLabel |
Etiqueta del elemento que se va a usar para mostrar el vínculo profundo. |
subPageWebUrl |
Dirección URL de reserva que se usará si el cliente no puede representar la página. |
Para obtener más información, vea pages.shareDeepLink().
Nota:
- Este vínculo profundo es diferente de los vínculos proporcionados por el elemento de menú Copiar vínculo a pestaña , que solo genera un vínculo profundo que apunta a esta pestaña.
-
shareDeepLink
no funciona en plataformas móviles de Teams.
Vínculo profundo para pestañas de SharePoint Framework
Los vínculos profundos de las pestañas de SharePoint Framework (SPFx) permiten a los usuarios navegar directamente a pestañas específicas dentro de un sitio de SharePoint o una aplicación de Teams. Esto mejora la experiencia del usuario al proporcionar acceso rápido al contenido y la funcionalidad pertinentes.
Puede usar el siguiente formato de vínculo profundo en un bot, conector o tarjeta de extensión de mensaje:
https://teams.microsoft.com/l/entity/<appId>/<EntityId>?webUrl=<entityWebUrl>/<EntityName>
.
Nota:
- Cuando un bot envía un
TextBlock
mensaje con un vínculo profundo, se abre una nueva pestaña del explorador cuando los usuarios seleccionan el vínculo. Esto sucede en Chrome y en la aplicación de escritorio de Microsoft Teams, ejecutados en Linux. - Si el bot envía la misma dirección URL de vínculo profundo en un
Action.OpenUrl
, la pestaña Teams se abre en el explorador actual cuando el usuario selecciona el vínculo. No se abre una nueva pestaña del explorador.
Parámetros de consulta
Valor | Descripción |
---|---|
APP_ID |
El identificador de manifiesto. Ejemplo: fxxxxxxx-0xxx-4xxx-8xxx-cxxxxxxxxxxx |
entityID |
Identificador de elemento que proporcionó al configurar la pestaña. Ejemplo: tasklist123 |
entityWebUrl |
Dirección URL de reserva que se usará si el cliente no admite la representación de la pestaña. Ejemplo: https://tasklist.example.com/123 o https://tasklist.example.com/list123/task456 |
entityName |
Etiqueta para el elemento de la pestaña que se va a usar al mostrar el vínculo profundo. Ejemplo: Task List 123 o Task 456 |
Vínculo profundo para abrir un cuadro de diálogo
Un vínculo profundo de cuadro de diálogo es una serialización del TaskInfo
objeto con otros dos detalles, y, opcionalmente, APP_ID
.BOT_APP_ID
https://teams.microsoft.com/l/task/APP_ID?url=<TaskInfo.url>&height=<TaskInfo.height>&width=<TaskInfo.width>&title=<TaskInfo.title>&completionBotId=BOT_APP_ID
https://teams.microsoft.com/l/task/APP_ID?card=<TaskInfo.card>&height=<TaskInfo.height>&width=<TaskInfo.width>&title=<TaskInfo.title>&completionBotId=BOT_APP_ID
Para conocer los tipos de datos y los valores permitidos para <TaskInfo.url>
, <TaskInfo.card>
, <TaskInfo.height>
, <TaskInfo.width>
y <TaskInfo.title>
, consulte Objeto TaskInfo.
Sugerencia
Codifique la dirección URL del vínculo profundo al usar el card
parámetro , por ejemplo, la función de JavaScriptencodeURI()
.
En la siguiente tabla se proporciona información sobre APP_ID
y BOT_APP_ID
:
Valor | Tipo | Obligatorio | Descripción |
---|---|---|---|
APP_ID |
string | Sí | - Para aplicaciones de terceros, use la aplicación id desde el manifiesto o desde el APP_ID Centro de administración de Teams, ya que son idénticas. - Para aplicaciones personalizadas o aplicaciones personalizadas creadas para su organización (aplicaciones LOB), use desde el APP_ID Centro de administración de Teams o use el Graph API. - La matriz validDomains del manifiesto de APP_ID debe contener el dominio para url si url está presente en la dirección URL del vínculo profundo. El identificador de aplicación ya se conoce cuando se invoca un cuadro de diálogo desde una pestaña o un bot, por lo que no se incluye en TaskInfo . |
BOT_APP_ID |
string | No | Si se especifica un valor para completionBotId , el objeto result se envía mediante un mensaje task/submit invoke al bot especificado. Debe BOT_APP_ID especificarse como bot en el manifiesto de la aplicación, que no se puede enviar a ningún bot. |
Nota:
APP_ID
y BOT_APP_ID
puede ser el mismo en muchos casos, si una aplicación tiene un bot recomendado para usarlo como identificador de una aplicación y si hay uno.
Vínculo profundo para compartir contenido en la fase de reunión
También puede generar un vínculo profundo para compartir la aplicación para realizar la fase e iniciar o unirse a una reunión.
Para obtener vínculos profundos para compartir contenido para realizar la fase, consulte vínculo profundo para compartir contenido en la fase de las reuniones.
Nota:
- La generación de un vínculo profundo para compartir contenido para la fase de las reuniones solo está disponible en la versión preliminar del desarrollador público.
- El vínculo profundo para compartir contenido para la fase de reunión solo se admite en el cliente de escritorio de Teams.
Vínculo profundo al panel lateral de la reunión
Puede generar un vínculo profundo al panel lateral de la reunión en una reunión.
Use el siguiente formato para un vínculo profundo al panel lateral de la reunión:
https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>
.
De forma predeterminada, se abre un vínculo profundo en un panel lateral de la reunión. Para abrir un vínculo profundo directamente en una aplicación en lugar del panel lateral de la reunión, agregue openInMeeting=false
como se muestra en el siguiente formato de vínculo profundo:
https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>&openInMeeting=false
Para obtener más información, consulte vínculo profundo a una pestaña.
Un vínculo profundo no se abre en el panel lateral de la reunión en los siguientes escenarios:
- No hay ninguna reunión activa.
- La aplicación no tiene
sidePanel
el contexto declarado en el manifiesto de la aplicación. -
openInMeeting
se establecefalse
en en el vínculo profundo. - El vínculo profundo se selecciona fuera de la ventana o componente de la reunión.
- El vínculo profundo no coincide con la reunión actual, por ejemplo, si el vínculo profundo se crea a partir de otra reunión.
Vínculo profundo para invocar Stageview
Puede invocar Stageview a través de un vínculo profundo desde la pestaña ajustando la dirección URL del vínculo profundo en la app.openLink(url)
API. El vínculo profundo también se puede pasar a través de una acción OpenURL
en la tarjeta. La openMode
propiedad definida en la API determina la respuesta de Stageview. Para obtener más información, consulte invocación de Stageview a través de un vínculo profundo.
Procedimientos recomendados
- Los vínculos profundos solo funcionan correctamente si la pestaña se configuró mediante la biblioteca v0.4 o posterior, ya que tiene un identificador de entidad. Los vínculos profundos a las pestañas sin identificadores de entidad siguen a la pestaña, pero no pueden proporcionar el sub'EntityId a la pestaña.
- En Microsoft Windows, Teams no puede controlar vínculos profundos que superen los 2048 caracteres debido al
INTERNET_MAX_URL_LENGTH
límite de Windows ShellExecuteEx API. - Al crear un vínculo profundo, asegúrese de que la ruta de acceso al cliente de Teams y otros metadatos caben dentro de este límite.
- Si el vínculo profundo contiene datos grandes, incluya un identificador único en el vínculo que la aplicación puede usar para capturar los datos necesarios del servicio back-end.
Ejemplo de código
Ejemplo de nombre | Descripción | .NET | Node.js |
---|---|---|---|
Uso de vínculos profundos subEntityId |
En este ejemplo se muestra cómo usar un vínculo profundo desde un chat de bot a una pestaña que consume .subEntityId También muestra vínculos profundos para:- Navegar a una aplicación - Navegar a un chat - Abrir un cuadro de diálogo de perfil - Abrir un cuadro de diálogo de programación |
View | View |
Navegación de la aplicación de tabulación | En este ejemplo se muestra cómo navegar entre pestañas dentro de la aplicación. | ND | Ver |