Especificar os requisitos de runtime do anfitrião do Microsoft 365 no manifesto da aplicação
Observação
A capacidade de especificar os requisitos de runtime do anfitrião do Microsoft 365 no manifesto da aplicação (anteriormente denominado manifesto de aplicação do Teams) está em pré-visualização do programador público.
Quando atualiza o separador pessoal do Microsoft Teams ou a aplicação de extensão de mensagens para utilizar a versão 1.13 ou posterior do manifesto de aplicação, está disponível noutros anfitriões de aplicações do Microsoft 365 por predefinição. No entanto, se a sua aplicação também incluir capacidades que ainda não são suportadas em determinados anfitriões, a aplicação só poderá carregar parcialmente, o que resultará em experiências de utilizador não planeadas.
Por exemplo, considere uma aplicação definida com a versão 1.17 do esquema de manifesto de aplicação e inclui um bot e um separador de configuração que representa as definições do bot. A aplicação seria carregada na aplicação Outlook e Microsoft 365 (Office), mas apenas apresentaria o separador de configuração do bot ao utilizador sem o próprio bot.
Para garantir que as experiências de aplicação de alta qualidade atingem a base de utilizadores pretendida, especifique os requisitos de runtime da sua aplicação no manifesto da aplicação. Isto permite-lhe adaptar o seu comportamento em anfitriões do Microsoft 365 aplicáveis ou omiti-lo de surgir em contextos que não está pronto para suportar.
Especificar os requisitos de runtime da sua aplicação é útil em cenários como:
Dependências unidirecionais: quando o único objetivo de uma capacidade de aplicação é suportar outra capacidade na sua aplicação, pode garantir que só aparece se a capacidade da aplicação primária for carregada. Por exemplo, se a sua aplicação incluir um separador e uma extensão de mensagem e o separador funcionar como uma página de definições para os utilizadores configurarem a funcionalidade de extensão de mensagens, pode especificar que o separador definições não carrega em anfitriões que não suportam a extensão da sua mensagem.
Dependências mútuas: Quando a sua aplicação tem capacidades de aplicações específicas que têm de ser carregadas em conjunto para funcionar corretamente, pode garantir que a sua aplicação só está disponível em anfitriões do Microsoft 365 que suportam todas as capacidades. Por exemplo, se as capacidades de extensão de separador, bot e mensagem funcionarem em conjunto para suportar um cenário de utilizador principal na sua aplicação, pode especificar que essas capacidades são sempre carregadas em conjunto ou não.
Requisitos de capacidade: Quando a sua aplicação tem capacidades com requisitos de runtime que não são suportados em anfitriões específicos do Microsoft 365, pode garantir que essas capacidades são omitidas de forma totalmente integrada (em vez de carregadas, mas não funcionais) da sua experiência de aplicação em execução nesses anfitriões. Por exemplo, se a sua aplicação incluir uma vista de dashboard baseada em separadores de itens que podem ser abertos como uma caixa de diálogo e cada caixa de diálogo contiver informações submetidas a um bot, pode especificar que as caixas de diálogo baseadas em bots são capacidades essenciais necessárias para que a sua aplicação carregue num determinado anfitrião.
Suporte de anfitrião do Microsoft 365
As seguintes aplicações anfitriãs do Microsoft 365 suportam a capacidade de especificar requisitos de runtime no manifesto da aplicação:
Aplicação anfitriã do Microsoft 365 | Web | Desktop | Celular |
---|---|---|---|
Teams | ✔️ | ✔️ | ✔️ |
Outlook | ✔️ | ✔️ (Apenas Novo Outlook) | ✔️ |
Microsoft 365 (Office) | |||
Microsoft 365 Copilot |
Especificar relações entre as capacidades da aplicação (elementRelationshipSet
)
Pode especificar relações entre as capacidades individuais da sua aplicação ao incluir um elementRelationshipSet
no manifesto da sua aplicação. Utilize este objeto para especificar dependências unidirecionais e dependências mútuas entre as capacidades da aplicação.
As seguintes capacidades de manifesto de aplicação podem ser especificadas como tendo dependências unidirecionais ou mútuas:
- Separadores: pessoal (
staticTabs
) e configurável (configurableTabs
) - Extensões de mensagens (
composeExtensions
), incluindo comandos individuais - Bots (
bots
)
Cada capacidade de aplicação é definida pela propriedade recentemente introduzida, id
, que mapeia para botId
bots, entityId
para separadores estáticos e id
para separadores configuráveis e extensões de mensagens. O Teams e outros anfitriões do Microsoft 365 suportam aplicações que contêm um único separador configurável, uma extensão de mensagem única ou ambos. A id
propriedade prova o futuro da sua aplicação se o suporte do anfitrião se expandir para acomodar várias instâncias destas capacidades.
Importante
Certifique-se de que as relações que criar cumprem as seguintes regras de validação:
- Os elementos especificados
elementRelationshipSet
em têm de ter definições no manifesto da aplicação. Por exemplo, umelement
oucommandId
listado nadependsOn
secção de umoneWayDependencies
objeto que não tem uma definição correspondente no manifesto da aplicação (com um valor correspondenteid
) resulta num erro de validação de manifesto. Aid
propriedade tem de ser especificada numconfigurableTab
ou numcomposeExtension
a ser reconhecido numelementRelationshipSet
. - Um determinado conjunto de capacidades só pode ser agrupado por um
mutualDependency
ouoneWayDependency
, mas não ambos. Por exemplo, especificar uma dependência unidirecional (A depende de B) e uma dependência mútua (A e B dependem uns dos outros) resulta num erro de validação de manifesto, porque a relação A depende de B é representada duas vezes. - As dependências unidirecionais cíclicas não são permitidas. Por exemplo, especificar um A depende da relação B e um B depende de A relação resulta num erro de validação de manifesto.
Dependências unidirecionais
Utilize a oneWayDependencies
matriz para descrever casos em que um componente da sua aplicação depende de outro componente. Para cada objeto na matriz, especifique o componente dependente (element
) e o componente de que depende (dependsOn
). Também pode especificar comandos individuais que requerem suporte para capacidades de aplicações específicas. Se essas capacidades não forem suportadas no anfitrião de runtime, não serão disponibilizadas ao utilizador (embora todos os outros comandos sejam executados).
O fragmento JSON seguinte mostra comandos de extensão de mensagens específicos que têm uma dependência unidirecional num bot:
"elementRelationshipSet": {
"oneWayDependencies" : [
{
"element" : {
"name" : "composeExtensions",
"id" : "composeExtension-id",
"commandIds": ["exampleCmd1", "exampleCmd2"]
},
"dependsOn" : [
{"name" : "bots", "id" : "bot-id"}
]
}
]
}
Dependências mútuas
Utilize a mutualDependencies
matriz para agrupar as capacidades da aplicação que têm de ser carregadas em conjunto para suportar a função pretendida. Cada objeto na matriz representa um conjunto de capacidades de aplicações mutuamente dependentes. O fragmento JSON seguinte mostra um bot, separador estático, extensão de mensagem e separador configurável que dependem mutuamente uns dos outros:
"elementRelationshipSet": {
"mutualDependencies" : [
[
{"name" : "bots", "id" : "bot-id"},
{"name" : "staticTabs", "id" : "staticTab-id"},
{"name" : "composeExtensions", "id" : "composeExtension-id"},
{"name" : "configurableTabs", "id": "configurableTab-id"}
]
]
},
Especificar requisitos de runtime para capacidades de aplicações específicas (requirementSet
)
Nas definições de capacidade de aplicações individuais, pode especificar requisitos específicos de runtime do TeamsJS com um requirementSet
. Isto garante que a capacidade da aplicação só é carregada em anfitriões do Microsoft 365 com suporte para as capacidades críticas do TeamsJS.
As seguintes capacidades do TeamsJS podem ser especificadas como requisitos de runtime para staticTabs
, composeExtensions
e bots
:
- Caixas de diálogo baseadas em HTML (
dialog.url
) - Caixas de diálogo baseadas em HTML para o Bot Framework (
dialog.url.bot
) - Caixas de diálogo de Cartão Ajustável (
dialog.adaptiveCard
) - Caixas de diálogo de Cartão Ajustável para o Bot Framework (
dialog.adaptiveCard.bot
)
O fragmento JSON seguinte mostra um separador estático que requer que o anfitrião suporte caixas de diálogo HTML (referidos como módulos de tarefas no TeamsJS v1.x) invocados a partir de separadores e bots:
"staticTabs": [
{
"entityId": "idForPage",
"name": "Display name of tab",
"contentUrl": "https://contoso.com/content?host=msteams",
"contentBotId": "Specifies to the app that tab is an Adaptive Card Tab. You can either provide the contentBotId or contentUrl.",
"websiteUrl": "https://contoso.com/content",
"scopes": [
"personal"
],
"requirementSet": {
"hostMustSupportFunctionalities": [
{"name": "dialogUrl"},
{"name": "dialogUrlBot"}
]
}
}
],
Exemplos de código
Nome do exemplo | Descrição | JavaScript |
---|---|---|
Requisitos direcionados: dependência unidirecional | Aplicação de exemplo que demonstra como especificar relações de dependência unidirecionais entre as capacidades da aplicação. | View |
Requisitos direcionados: Dependência mútua | Aplicação de exemplo que demonstra como especificar relações de dependência mútua entre capacidades da aplicação. | Exibir |