Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os links profundos no Microsoft Teams são ferramentas poderosas que permitem aos usuários navegar diretamente para conteúdo ou ações específicas em um aplicativo. Os links profundos são configurados para executar várias ações, como abrir uma guia, iniciar uma caixa de diálogo de instalação do aplicativo ou navegar dentro do aplicativo.
Observação
Este tópico reflete a versão 2.0.x da biblioteca de cliente JavaScript do Microsoft Teams (TeamsJS). Se você estiver usando uma versão anterior, consulte a visão geral da biblioteca do TeamsJS para obter diretrizes sobre as diferenças entre o TeamsJS mais recente e as versões anteriores.
Cenários de links profundos
Aqui estão alguns dos cenários em que você pode usar um link profundo:
- Instalação do aplicativo: você pode usar links profundos que permitem aos usuários saber mais sobre um aplicativo e instalá-lo em diferentes escopos.
- Bots e conectores: você pode usar links profundos em mensagens de bots e conectores para informar os usuários sobre alterações na guia ou em seus itens.
- Navegar até uma página específica: você pode criar links profundos que permitem que os usuários naveguem para páginas específicas em seu aplicativo.
- Aplicativo personalizado: você pode gerar links profundos para um aplicativo personalizado. No entanto, se um aplicativo no Microsoft Teams Store compartilhar a mesma ID do aplicativo que a ID do aplicativo personalizado, o link profundo abrirá o aplicativo na Teams Store em vez do aplicativo personalizado.
- Para dispositivos móveis: Você também pode criar um link profundo para um aplicativo para dispositivos móveis depois que seu aplicativo for aprovado para o cliente móvel do Teams. Para que o link profundo funcione no Teams iOS, você precisa da ID da equipe do Apple App Store Connect. Para obter mais informações, consulte como atualizar a ID da equipe do Apple App Store Connect.
Link profundo para abrir uma caixa de diálogo de instalação do aplicativo
Os links profundos permitem que os usuários do aplicativo abram uma caixa de diálogo de instalação do aplicativo para saber qualquer informação sobre o aplicativo ou instalá-lo em contextos diferentes. Você pode criar um link profundo para um aplicativo das seguintes maneiras:
- Configurar o link profundo manualmente usando a ID do aplicativo
- Configurar link profundo usando TeamsJS
Configurar o link profundo manualmente usando a ID do aplicativo
Com o link profundo, você pode abrir uma caixa de diálogo de instalação do aplicativo diretamente do cliente do Teams usando a ID do aplicativo.
https://teams.microsoft.com/l/app/<your-app-id>?tenantId=<tenantId>
<your-app-id> é a ID do seu aplicativo (fxxxxxxx-0xxx-4xxx-8xxx-cxxxxxxxxxxx).
ID do aplicativo para diferentes tipos de aplicativos
A tabela a seguir lista os diferentes tipos de IDs de aplicativo usadas para diferentes tipos de aplicativos para links profundos:
| Tipo de aplicativo | Tipo de ID do aplicativo |
|---|---|
| Aplicativo personalizado carregado no Teams | ID do manifesto |
| Aplicativos enviados para o catálogo da organização | ID do catálogo da organização |
| Aplicativos enviados para a Teams Store | ID da loja |
Para obter mais informações, consulte como encontrar a ID com base na ID do manifesto do aplicativo.
Configurar link profundo usando TeamsJS
Os aplicativos podem usar a biblioteca de clientes JavaScript do Microsoft Teams (TeamsJS) para iniciar a caixa de diálogo de instalação do aplicativo, eliminando a necessidade de geração manual de links profundos. Aqui está um exemplo de como disparar a caixa de diálogo de instalação do aplicativo usando o TeamsJS em seu aplicativo:
// 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 obter mais informações, confira appInstallDialog.
Link profundo para procurar dentro do seu aplicativo
Os usuários do aplicativo podem navegar pelo conteúdo no Teams a partir de sua guia usando o TeamsJS. Você poderá usar um link profundo para navegar no seu aplicativo se a guia precisar conectar os usuários a outro conteúdo no Teams, como um canal, mensagem, outra guia ou para abrir uma caixa de diálogo de agendamento. Em alguns casos, a navegação também pode ser realizada usando o TeamsJS, e recomendamos usar os recursos tipados do TeamsJS sempre que possível.
Você pode configurar links profundos para navegar no seu aplicativo das seguintes maneiras:
- Configurar o link profundo para navegar dentro do seu aplicativo manualmente
- Configurar o link profundo para uma guia usando o TeamsJS
- Configurar link profundo para navegar entre as guias
Configurar o link profundo para navegar dentro do seu aplicativo manualmente
As guias pessoais têm um escopo personal, enquanto as guias de canal e grupo usam escopos team ou group. Os dois tipos de guia têm sintaxe ligeiramente diferente, pois apenas a guia configurável tem uma channel propriedade associada ao objeto de contexto. Para obter mais informações sobre escopos de guia, consulte manifesto do aplicativo.
Para criar um link profundo em um bot, conector ou card de extensão de mensagem, use o seguinte formato:
https://teams.microsoft.com/l/entity/<appId>/<entityId>?tenantId=<tenantId>&webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>&openInMeeting=false
Se o bot enviar uma mensagem contendo um
TextBlockcom um link profundo, uma nova guia do navegador será aberta quando o usuário selecionar o link. Isso acontece no Chrome e no aplicativo da área de trabalho do Teams quando eles estão em execução no Linux.Se o bot enviar a mesma URL de link profundo em um
Action.OpenUrl, a guia Teams será aberta na guia atual do navegador quando o usuário selecionar o link.
Parâmetros de consulta
| Nome do parâmetro | Descrição |
|---|---|
appId |
A ID do centro de administração do Microsoft Teams. Exemplo: fe4a8eba-2a31-4737-8e33-e5fae6fee194 |
entityId |
A ID da guia, que você forneceu ao configurar a guia. Ao gerar uma URL para vinculação profunda, continue a usar a ID da entidade como um nome de parâmetro na URL. Ao configurar a guia, o objeto context se refere ao entityId como page.id. Exemplo: Lista de tarefas 123 |
entityWebUrl ou subEntityWebUrl |
Um campo opcional com uma URL de fallback a ser usada se o cliente não for compatível com a renderização da guia. Exemplo: https://tasklist.example.com/123 ou https://tasklist.example.com/list123/task456 |
entityLabel ou subEntityLabel |
Um rótulo para o item em sua guia a ser usado ao exibir o link profundo. Exemplo: Lista de Tarefas 123 ou Tarefa 456 |
context.subEntityId |
Uma ID para o item dentro da guia. Ao gerar uma URL para deep linking, continue a usar subEntityId como o nome do parâmetro na URL. Ao configurar a guia, o objeto context se refere ao subEntityId como page.subPageId. Exemplo: Tarefa 456 |
context.channelId |
ID do canal do Microsoft Teams que está disponível na guia contexto. Esta propriedade está disponível somente em guias configuráveis com um escopo de equipe. Ele não está disponível em guias estáticas, que têm um escopo pessoal . Exemplo: 19:cbe3683f25094106b826c9cada3afbe0@thread.skype |
context.chatId |
ID do Chat que está disponível no contexto da guia para chat em grupo e reunião. Exemplo: 17:b42de192376346a7906a7dd5cb84b673@thread.v2 |
context.contextType |
O Chat é o único com suporte contextType para reuniões. Exemplo: chat |
openInMeeting |
Use openInMeeting para controlar a experiência do usuário quando a guia de destino está associada a uma reunião. Se o usuário interagir com o link profundo em uma experiência de reunião contínua, o Teams abrirá o aplicativo no painel lateral da reunião. Defina esse valor como false para sempre abrir o aplicativo na guia de chat da reunião em vez do painel lateral, independentemente do status da reunião. O Teams ignora qualquer valor diferente de false. Exemplo: false |
Importante
Verifique se todos os parâmetros de consulta e os espaços em branco estão codificados corretamente em URI. A seguir está um exemplo de parâmetros de consulta codificados em 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;Não há suporte para o link profundo de um aplicativo do Teams com URI codificado no Outlook.
Para obter mais informações sobre como obter os parâmetros de consulta para os tipos de guia internos, consulte Configurar os tipos de guia internos no Microsoft Teams.
Configurar o link profundo para uma guia usando o TeamsJS
Você pode configurar links profundos em seu aplicativo por meio do TeamsJS para permitir que os usuários naveguem em diferentes páginas dentro de seu aplicativo. O comportamento de navegação de um aplicativo do Teams estendido pelo Microsoft 365 Office depende de dois fatores:
- O destino para o qual o link profundo aponta.
- O host em que o aplicativo Teams está em execução
Se o aplicativo Teams estiver em execução no host onde o link profundo é direcionado, seu aplicativo será aberto diretamente no host. No entanto, se o aplicativo Teams estiver sendo executado em um host diferente de onde o link profundo é direcionado, o aplicativo será aberto primeiro no navegador.
Suporte para links profundos no TeamsJS
O TeamsJS permite que os aplicativos do Teams estendidos no Outlook e Microsoft 365 sejam marcar se o host der suporte ao recurso que você está tentando usar. Para verificar o suporte de um host de uma funcionalidade, você pode usar a função isSupported() associada ao namespace da API. O TeamsJS organiza APIs em recursos por meio de namespaces. Por exemplo, antes de usar uma API no pages namespace, você pode marcar o valor booleano retornado pages.isSupported() e executar a ação apropriada no contexto do seu aplicativo e da interface do usuário do aplicativo. Para obter mais informações, consulte como criar guias e outras experiências hospedadas com a biblioteca TeamsJS.
O código a seguir demonstra como navegar até uma entidade específica no aplicativo Teams:
Você pode acionar a navegação de sua guia usando a função pages.navigateToApp() conforme mostrado no código a seguir:
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 obter mais informações, consulte navegar em um aplicativo de guia.
- Para obter mais informações sobre a funcionalidade de páginas, consulte pages.navigateToApp() e o namespace de páginas para outras opções de navegação.
- Para abrir diretamente um link profundo usando app.openLink(), consulte a função app.openLink().
Configurar link profundo para navegar entre as guias
A funcionalidade de páginas da biblioteca TeamsJS fornece suporte para navegação entre guias em um aplicativo. Especificamente, o pages.currentApp namespace oferece uma função navigateTo(NavigateWithinAppParams) para permitir a navegação para uma guia específica no aplicativo atual e uma função navigateToDefaultPage() para navegar até a primeira guia definida no manifesto do aplicativo. O código a seguir ilustra como navegar até uma guia específica e padrão:
O código a seguir ilustra como navegar até uma guia 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*/});
}
Configurar navegação do botão Voltar
Quando um aplicativo tem várias guias, um usuário pode usar o botão voltar do aplicativo host do Microsoft 365 para voltar no histórico de navegação. No entanto, o histórico não inclui as ações que um usuário executa em uma guia. Para aprimorar a experiência do botão Voltar, você pode manter sua própria pilha de navegação interna e configurar um manipulador personalizado para seleções de botão Voltar. Isso pode ser feito por meio da registerBackButtonHandler() função no pages.backStack namespace.
Depois de registrar o manipulador, ele ajuda você a resolver a solicitação de navegação antes que o sistema tome uma ação. Se o manipulador for capaz de gerenciar a solicitação, ele deverá retornar true para que o sistema saiba que nenhuma ação adicional é necessária. Se a pilha interna estiver vazia, ela deverá retornar false para que o sistema possa chamar a navigateBack() função e executar a ação apropriada.
Retornar o foco para o aplicativo host
Depois que o usuário começa a usar elementos em uma guia, por padrão, o foco permanece com os elementos do iFrame até que o usuário selecione fora dele. Se o iFrame fizer parte da navegação do usuário com atalhos de teclado (a tecla Tab ou a tecla F6), você poderá se concentrar no aplicativo host. Você pode se concentrar no aplicativo host usando a pages.returnFocus() função. A returnFocus() função aceita um booliano indicando a direção para avançar o foco no aplicativo host; true para frente e false para trás. Geralmente, para frente realça a barra de pesquisa e para trás realça a barra de aplicativos.
Link profundo para um chat com o aplicativo
Você pode permitir que os usuários do aplicativo naveguem até um chat pessoal com o aplicativo configurando o link profundo manualmente.
https://teams.microsoft.com/l/entity/<appId>/conversations?tenantId=<tenantId>
appId é a ID do seu aplicativo. Para obter mais informações, consulte ID do aplicativo para diferentes tipos de aplicativos.
Compartilhar um link profundo para uma guia
Você pode compartilhar links profundos para entidades em aplicativos do Teams para navegar até o conteúdo e as informações em seu aplicativo de guia. Por exemplo, se seu aplicativo de guia contiver uma lista de tarefas, os membros da equipe poderão criar e compartilhar links para tarefas individuais. Quando o usuário do aplicativo seleciona o link, ele navega até a guia que se concentra no item específico.
Adicione uma ação de cópia do link a cada item da maneira mais adequada para a interface do usuário. Quando o usuário executar essa ação, chame pages.shareDeepLink() para exibir uma caixa de diálogo contendo um link que o usuário pode copiar para a área de transferência. Ao fazer essa chamada, passe uma ID para o item. Você o obtém de volta no contexto quando o link é seguido e sua guia é recarregada.
pages.shareDeepLink({ subPageId: <subPageId>, subPageLabel: <subPageLabel>, subPageWebUrl: <subPageWebUrl> })
Você deve substituir os seguintes parâmetros pelas informações apropriadas:
| Nome do parâmetro | Descrição |
|---|---|
subPageId |
Um identificador exclusivo para o item em sua página para o qual você está vinculando profundamente. |
subPageLabel |
Um rótulo do item a ser usado para exibir o link profundo. |
subPageWebUrl |
Uma URL de fallback a ser usada se o cliente não puder renderizar a página. |
Para obter mais informações, consulte pages.shareDeepLink().
Observação
- Esse link profundo é diferente dos links fornecidos pelo item de menu Copiar link para , que gera apenas um link profundo que aponta para essa guia.
-
shareDeepLinknão funciona em plataformas móveis do Teams.
Link profundo para guias da Estrutura do SharePoint
Os links profundos das guias da Estrutura do SharePoint (SPFx) permitem que os usuários naveguem diretamente para guias específicas em um site do SharePoint ou aplicativo do Teams. Isso aprimora a experiência do usuário, fornecendo acesso rápido a conteúdo e funcionalidades relevantes.
Você pode usar o seguinte formato de link profundo em um bot, conector ou card de extensão de mensagem:
https://teams.microsoft.com/l/entity/<appId>/<EntityId>?webUrl=<entityWebUrl>/<EntityName>.
Observação
- Quando um bot envia uma
TextBlockmensagem com um link profundo, uma nova guia do navegador é aberta quando os usuários selecionam o link. Isso acontece no Chrome e no aplicativo da área de trabalho do Microsoft Teams em execução no Linux. - Se o bot enviar a mesma URL de link profundo em um
Action.OpenUrl, a guia Teams será aberta no navegador atual quando o usuário selecionar o link. Nenhuma nova guia do navegador está aberta.
Parâmetros de consulta
| Valor | Descrição |
|---|---|
APP_ID |
Sua ID de manifesto. Exemplo: fxxxxxxx-0xxx-4xxx-8xxx-cxxxxxxxxxxx |
entityID |
A ID do item que você forneceu ao configurar a guia. Exemplo: tasklist123 |
entityWebUrl |
Uma URL de fallback a ser usada se o cliente não der suporte à renderização da guia. Exemplo: https://tasklist.example.com/123 ou https://tasklist.example.com/list123/task456 |
entityName |
Um rótulo para o item em sua guia a ser usado ao exibir o link profundo. Exemplo: Task List 123 ou Task 456 |
Link profundo para abrir uma caixa de diálogo
Um link profundo de caixa de diálogo é uma serialização do TaskInfo objeto com dois outros detalhes, o APP_ID e, opcionalmente, o 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_IDhttps://teams.microsoft.com/l/task/APP_ID?card=<TaskInfo.card>&height=<TaskInfo.height>&width=<TaskInfo.width>&title=<TaskInfo.title>&completionBotId=BOT_APP_ID
Para os tipos de dados e valores permitidos para <TaskInfo.url>, <TaskInfo.card>, <TaskInfo.height>, <TaskInfo.width> e <TaskInfo.title>, consulte objeto TaskInfo.
Dica
Codifique a URL do link profundo ao usar o card parâmetro, por exemplo, função JavaScriptencodeURI().
A tabela a seguir fornece informações sobre APP_ID e BOT_APP_ID:
| Valor | Tipo | Obrigatório | Descrição |
|---|---|---|---|
APP_ID |
string | Sim | - Para aplicativos de terceiros, use o aplicativo id do manifesto ou do APP_ID Centro de administração do Teams, pois são idênticos. - Para aplicativos personalizados ou aplicativos personalizados criados para sua organização (aplicativos LOB), use o APP_ID centro de administração do Teams ou use a API do Graph. - A matriz validDomains no manifesto para APP_ID deve conter o domínio para url if url está presente na URL do link profundo. A ID do aplicativo já é conhecida quando uma caixa de diálogo é invocada de uma guia ou bot, e é por isso que ela não está incluída no TaskInfo. |
BOT_APP_ID |
string | Não | Se um valor para completionBotId for especificado, o objeto result será enviado usando uma mensagem task/submit invoke para o bot especificado. Especificar BOT_APP_ID deve ser especificado como um bot no manifesto do aplicativo, que você não pode enviar a nenhum bot. |
Observação
APP_ID e BOT_APP_ID pode ser o mesmo em muitos casos, se um aplicativo tiver um bot recomendado para usar como ID do aplicativo e se houver um.
Link profundo para compartilhar conteúdo na fase de reunião
Você também pode gerar um link profundo para compartilhar o aplicativo no estágio e iniciar ou ingressar em uma reunião.
Para links profundos para compartilhar conteúdo no estágio, consulte o link profundo para compartilhar conteúdo no estágio em reuniões.
Observação
- A geração de um link profundo para compartilhar conteúdo no palco em reuniões está disponível apenas na visualização pública do desenvolvedor.
- O link profundo para compartilhar conteúdo para o estágio da reunião é suportado apenas no cliente de área de trabalho do Teams.
Link profundo para o painel lateral da reunião
Você pode gerar um link profundo para o painel lateral da reunião em uma reunião.
Use o seguinte formato para criar um link profundo para o painel lateral da reunião:
https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>.
Por padrão, um link profundo é aberto em um painel lateral da reunião. Para abrir um link profundo diretamente em um aplicativo, em vez do painel lateral da reunião, adicione openInMeeting=false conforme mostrado no seguinte formato de link profundo:
https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>&openInMeeting=false
Para obter mais informações, confira o link profundo para uma guia.
Um link profundo não é aberto no painel lateral da reunião nos seguintes cenários:
- Não há nenhuma reunião ativa.
- O aplicativo não tem
sidePanelcontexto declarado no manifesto do aplicativo. -
openInMeetingestá definido comofalseno link profundo. - O link profundo é selecionado fora da janela ou componente da reunião.
- O link profundo não corresponde à reunião atual, por exemplo, se o link profundo for criado a partir de outra reunião.
Link profundo para invocar o Stageview
Você pode invocar o Stageview por meio de um link profundo da sua guia, encapsulando a URL do link profundo na app.openLink(url) API. O link profundo também pode ser passado por meio de uma ação OpenURL no cartão. A openMode propriedade definida na API determina a resposta do Stageview. Para obter mais informações, consulte invocar o Stageview por meio de um link profundo.
Práticas recomendadas
- Os links profundos só funcionarão corretamente se a guia tiver sido configurada usando a biblioteca v0.4 ou posterior, pois ela possui uma ID de entidade. Os links profundos para guias sem IDs de entidade ainda vão para a guia, mas não podem fornecer a sub'EntityId para a guia.
- No Microsoft Windows, o Teams não pode lidar com links profundos
INTERNET_MAX_URL_LENGTHque excedem 2048 caracteres devido ao limite na API ShellExecuteEx do Windows. - Ao criar um link profundo, verifique se o caminho para o cliente do Teams e outros metadados se encaixam dentro desse limite.
- Se o seu link profundo contiver dados grandes, inclua um identificador exclusivo no link que seu aplicativo pode usar para buscar os dados necessários do serviço de back-end.
Exemplo de código
| Nome do exemplo | Descrição | .NET | Node.js | TypeScript |
|---|---|---|---|---|
Consumo de links profundos subEntityId |
Este aplicativo de exemplo do Teams destaca links profundos para várias funcionalidades, como iniciar chamadas, chats e navegar em guias e aplicativos. Ele apresenta um guia de configuração abrangente e oferece suporte a interações com bots e guias para maior envolvimento do usuário. | View | View | NA |
| Navegação no aplicativo Guia | Este exemplo ilustra o recurso de navegação de guias em um aplicativo do Microsoft Teams, permitindo transições suaves entre diferentes guias. Projetado para uso com Node.js, ele destaca como os usuários podem navegar efetivamente no aplicativo para uma experiência aprimorada. | NA | View | NA |
| Valores de passagem de link profundo de tabulação | Este aplicativo de exemplo para o Microsoft Teams ilustra a criação e o uso de links profundos dinâmicos para passar valores contextuais para aplicativos Web autônomos e de guia. Ele destaca as diferenças na formatação e no consumo de links com base no ambiente de acesso do usuário, aprimorando os recursos de navegação e exibição de dados. | NA | NA | View |