Esquema de manifesto do aplicativo para o Teams

O manifesto do aplicativo Microsoft Teams descreve como seu aplicativo se integra ao produto Microsoft Teams. O manifesto do seu aplicativo deve estar em conformidade com o esquema hospedado em https://developer.microsoft.com/json-schemas/teams/v1.15/MicrosoftTeams.schema.json. As versões anteriores 1.0, 1.1,...,1.14 e a versão atual é 1.15 têm suporte (usando "v1.x" na URL). Para obter mais informações sobre as alterações feitas em cada versão, consulte o registro de alterações do manifesto.

A tabela a seguir lista as versões do TeamsJS e do manifesto do aplicativo de acordo com diferentes cenários de aplicativo:

Versão do TeamsJS Versão do Manifesto do aplicativo Próximas etapas
Aplicativos do Teams estendidos ao Microsoft 365 / Outlook TeamsJS v.2.0 ou posterior 1.13 ou posterior Estender um aplicativo do Teams para ser executado no Microsoft 365 ou Criar um novo aplicativo do Microsoft 365
Aplicativos apenas Teams existentes Atualizar para o TeamsJS v.2.0 quando possível (a v.1.12 ainda tem suporte*) 1.12 Entender a compatibilidade com versões anteriores do TeamsJSe Atualizar para o TeamsJS v.2.0
Novos aplicativos apenas Teams TeamsJS v.2.0 ou posterior 1.12 Criar um novo aplicativo Teams usando o Kit de Ferramentas do Teams

*Use o TeamsJS mais recente (v.2.0 ou posterior) sempre que possível, a fim de aproveitar as melhorias mais recentes e o suporte a novos recursos, incluindo aplicativos somente do Teams. TeamsJS v.1.12 continuam com suporte, no entanto, nenhum novo recurso ou melhorias será adicionado. Os esquemas 1.12 e 1.13 são os mesmos. Para obter mais informações, confira Biblioteca do TeamsJS.

A amostra do esquema a seguir mostra todas as opções de extensibilidade:

Amostra de manifesto completo

{
    "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.15/MicrosoftTeams.schema.json",
    "manifestVersion": "1.15",
    "version": "1.0.0",
    "id": "%MICROSOFT-APP-ID%",
    "localizationInfo": {
        "defaultLanguageTag": "en-us",
        "additionalLanguages": [
            {
                "languageTag": "es-es",
                "file": "en-us.json"
            }
        ]
    },
    "developer": {
        "name": "Publisher Name",
        "websiteUrl": "https://website.com/",
        "privacyUrl": "https://website.com/privacy",
        "termsOfUseUrl": "https://website.com/app-tos",
        "mpnId": "1234567890"
    },
    "name": {
        "short": "Name of your app (<=30 chars)",
        "full": "Full name of app, if longer than 30 characters (<=100 chars)"
    },
    "description": {
        "short": "Short description of your app (<= 80 chars)",
        "full": "Full description of your app (<= 4000 chars)"
    },
    "icons": {
        "outline": "A relative path to a transparent .png icon — 32px X 32px",
        "color": "A relative path to a full color .png icon — 192px X 192px"
    },
    "accentColor": "A valid HTML color code.",
    "configurableTabs": [
        {
            "configurationUrl": "https://contoso.com/teamstab/configure",
            "scopes": [
                "team",
                "groupchat"
            ],
            "canUpdateConfiguration": true,
            "context": [
                "channelTab",
                "privateChatTab",
                "meetingChatTab",
                "meetingDetailsTab",
                "meetingSidePanel",
                "meetingStage"
            ],
            "sharePointPreviewImage": "Relative path to a tab preview image for use in SharePoint — 1024px X 768",
            "supportedSharePointHosts": [
                "sharePointFullPage",
                "sharePointWebPart"
            ]
        }
    ],
    "staticTabs": [
        {
            "entityId": "unique Id for the page entity",
            "scopes": [
                "personal"
            ],
            "context": [
                "personalTab",
                "channelTab"
            ],
            "name": "Display name of tab",
            "contentUrl": "https://contoso.com/content (displayed in Teams canvas)",
            "websiteUrl": "https://contoso.com/content (displayed in web browser)",
            "searchUrl": "https://contoso.com/content (displayed in web browser)"
        }
    ],
    "bots": [
        {
            "botId": "%MICROSOFT-APP-ID-REGISTERED-WITH-BOT-FRAMEWORK%",
            "scopes": [
                "team",
                "personal",
                "groupchat"
            ],
            "needsChannelSelector": false,
            "isNotificationOnly": false,
            "supportsFiles": true,
            "supportsCalling": false,
            "supportsVideo": true,
            "commandLists": [
                {
                    "scopes": [
                        "team",
                        "groupchat"
                    ],
                    "commands": [
                        {
                            "title": "Command 1",
                            "description": "Description of Command 1"
                        },
                        {
                            "title": "Command 2",
                            "description": "Description of Command 2"
                        }
                    ]
                },
                {
                    "scopes": [
                        "personal",
                        "groupchat"
                    ],
                    "commands": [
                        {
                            "title": "Personal command 1",
                            "description": "Description of Personal command 1"
                        },
                        {
                            "title": "Personal command N",
                            "description": "Description of Personal command N"
                        }
                    ]
                }
            ]
        }
    ],
    "connectors": [
        {
            "connectorId": "GUID-FROM-CONNECTOR-DEV-PORTAL%",
            "scopes": [
                "team"
            ],
            "configurationUrl": "https://contoso.com/teamsconnector/configure"
        }
    ],
    "composeExtensions": [
        {
            "canUpdateConfiguration": true,
            "botId": "%MICROSOFT-APP-ID-REGISTERED-WITH-BOT-FRAMEWORK%",
            "commands": [
                {
                    "id": "exampleCmd1",
                    "title": "Example Command",
                    "type": "query",
                    "context": [
                        "compose",
                        "commandBox"
                    ],
                    "description": "Command Description; e.g., Search on the web",
                    "initialRun": true,
                    "fetchTask": false,
                    "parameters": [
                        {
                            "name": "keyword",
                            "title": "Search keywords",
                            "inputType": "text",
                            "description": "Enter the keywords to search for",
                            "value": "Initial value for the parameter",
                            "choices": [
                                {
                                    "title": "Title of the choice",
                                    "value": "Value of the choice"
                                }
                            ]
                        }
                    ]
                },
                {
                    "id": "exampleCmd2",
                    "title": "Example Command 2",
                    "type": "action",
                    "context": [
                        "message"
                    ],
                    "description": "Command Description; e.g., Add a customer",
                    "initialRun": true,
                    "fetchTask": false ,
                    "parameters": [
                        {
                            "name": "custinfo",
                            "title": "Customer name",
                            "description": "Enter a customer name",
                            "inputType": "text"
                        }
                    ]
                },
                {
                    "id": "exampleCmd3",
                    "title": "Example Command 3",
                    "type": "action",
                    "context": [
                        "compose",
                        "commandBox",
                        "message"
                    ],
                    "description": "Command Description; e.g., Add a customer",
                    "fetchTask": false,
                    "taskInfo": {
                        "title": "Initial dialog title",
                        "width": "Dialog width",
                        "height": "Dialog height",
                        "url": "Initial webview URL"
                    }
                }
            ],
            "messageHandlers": [
                {
                    "type": "link",
                    "value": {
                        "domains": [
                            "mysite.someplace.com",
                            "othersite.someplace.com"
                        ],
                        "supportsAnonymizedPayloads": false
                    }
                }
            ]
        }
    ],
    "permissions": [
        "identity",
        "messageTeamMembers"
    ],
    "devicePermissions": [
        "geolocation",
        "media",
        "notifications",
        "midi",
        "openExternal"
    ],
    "validDomains": [
        "contoso.com",
        "mysite.someplace.com",
        "othersite.someplace.com"
    ],
    "webApplicationInfo": {
        "id": "AAD App ID",
        "resource": "Resource URL for acquiring auth token for SSO"
    },
    "authorization": {
        "permissions": {
            "resourceSpecific": [
                {
                    "type": "Application",
                    "name": "ChannelSettings.Read.Group"
                },
                {
                    "type": "Delegated",
                    "name": "ChannelMeetingParticipant.Read.Group"
                }
            ]
        }
    },
    "showLoadingIndicator": false,
    "isFullScreen": false,
    "activities": {
        "activityTypes": [
            {
                "type": "taskCreated",
                "description": "Task created activity",
                "templateText": "<team member> created task <taskId> for you"
            },
            {
                "type": "userMention",
                "description": "Personal mention activity",
                "templateText": "<team member> mentioned you"
            }
        ]
    },
    "defaultBlockUntilAdminAction": true,
    "publisherDocsUrl": "https://website.com/app-info",
    "defaultInstallScope": "meetings",
    "defaultGroupCapability": {
        "meetings": "tab",
        "team": "bot",
        "groupchat": "bot"
    },
    "configurableProperties": [
        "name",
        "shortDescription",
        "longDescription",
        "smallImageUrl",
        "largeImageUrl",
        "accentColor",
        "developerUrl",
        "privacyUrl",
        "termsOfUseUrl"
    ],
    "subscriptionOffer": {
        "offerId": "publisherId.offerId"
    },
    "meetingExtensionDefinition": {
        "scenes": [
            {
                "id": "9082c811-7e6a-4174-8173-6ccd57d377e6",
                "name": "Getting started sample",
                "file": "scenes/sceneMetadata.json",
                "preview": "scenes/scenePreview.png",
                "maxAudience": 15,
                "seatsReservedForOrganizersOrPresenters": 0
            },
            {
                "id": "afeaed22-f89b-48e1-98b4-46a514344e4a",
                "name": "Sample-1",
                "file": "scenes/sceneMetadata.json",
                "preview": "scenes/scenePreview.png",
                "maxAudience": 15,
                "seatsReservedForOrganizersOrPresenters": 3
            }
        ]
    }
}

O esquema define as seguintes propriedades:

$esquema

Opcional, mas recomendado—cadeia de caracteres

A URL https:// referenciando o esquema JSON para o manifesto.

manifestVersion

Obrigatório—cadeia de caracteres

A versão do esquema de manifesto que este manifesto está usando. Use 1.13 para habilitar o suporte ao aplicativo teams no Outlook e no aplicativo Microsoft 365; use 1.12 (ou anteriormente) para aplicativos somente do Teams.

versão

Obrigatório—cadeia de caracteres

A versão de um aplicativo específico. Quando você atualiza algo no seu manifesto, a versão também deve ser incrementada. Dessa forma, quando o novo manifesto é instalado, ele substitui o existente e o usuário recebe a nova funcionalidade. Quando este aplicativo foi enviado para a loja, o novo manifesto deve ser reenviado e revalidado. Os usuários do aplicativo recebem o novo manifesto atualizado automaticamente algumas horas após a aprovação do manifesto.

Se as solicitações de permissões do aplicativo forem alteradas, os usuários serão solicitados a atualizar e consentir novamente com o aplicativo..

Esta cadeia de caracteres da versão deve seguir o padrão semver (MAJOR.MINOR.PATCH).

ID

Obrigatório—ID do aplicativo da Microsoft

A ID é um identificador exclusivo gerado pela Microsoft para o aplicativo. Você tem uma ID se seu bot estiver registrado por meio do Microsoft Bot Framework. Você tem uma ID se o aplicativo web da sua guia já entrar com a Microsoft. Você deve inserir a ID aqui. Caso contrário, você deverá gerar uma nova ID no Portal de Registro de Aplicativos da Microsoft. Use a mesma ID se você adicionar um bot.

A ID armazenada no Teams Administração Center é a ID do Aplicativo Externo e é visível como ExternalID nos rastreamentos.

Observação

Se você estiver enviando uma atualização para o seu aplicativo existente no AppSource, a ID em seu manifesto não deve ser modificada.

developer

Obrigatório—objeto

Especifica informações sobre a sua empresa. Para aplicativos enviados à loja do Teams, esses valores devem corresponder às informações na listagem da loja. Para obter mais informações, consulte as Diretrizes de publicação da loja do Teams.

Nome Tamanho máximo Obrigatório Descrição
name 32 caracteres ✔️ O nome de exibição do desenvolvedor.
websiteUrl 2048 caracteres ✔️ A URL https:// para o site do desenvolvedor. Esse link deve levar os usuários à página de destino específica da sua empresa ou do produto.
privacyUrl 2048 caracteres ✔️ A URL https:// para a política de privacidade do desenvolvedor.
termsOfUseUrl 2048 caracteres ✔️ A URL https:// para os termos de uso do desenvolvedor.
mpnId 10 caracteres Opcional A ID do Microsoft Partner Network que identifica a organização parceira criadora do aplicativo.

nome

Obrigatório—objeto

O nome da sua experiência de aplicativo, exibido aos usuários na experiência do Teams. Para aplicativos enviados ao AppSource, esses valores devem corresponder às informações na entrada do AppSource. Os valores de short e full devem ser diferentes.

Nome Tamanho máximo Obrigatório Descrição
short 30 caracteres ✔️ O nome de exibição curto para o aplicativo.
full 100 caracteres O nome completo do aplicativo, utilizado se o nome completo do aplicativo exceder 30 caracteres.

descrição

Obrigatório—objeto

Descreve o seu aplicativo para os usuários. Para aplicativos enviados ao AppSource, esses valores devem corresponder às informações na entrada do AppSource.

Certifique-se de que a sua descrição detalhe a sua experiência e ajude os clientes em potencial a entender o que sua experiência faz. Você deve anotar na descrição completa, se uma conta externa for necessária para uso. Os valores de short e full devem ser diferentes. Sua breve descrição não pode ser repetida dentro da descrição longa e não deve incluir nenhum outro nome de aplicativo.

Nome Tamanho máximo Obrigatório Descrição
short 80 caracteres ✔️ Uma descrição curta da experiência do seu aplicativo, usada quando o espaço é limitado.
full 4000 caracteres ✔️ A descrição completa do seu aplicativo.

localizationInfo

Opcional—objeto

Permite a especificação de um idioma padrão e fornece ponteiros para mais arquivos de idioma. Para obter mais informações, consulte localização.

Nome Tamanho máximo Obrigatório Descrição
defaultLanguageTag ✔️ A marca de idioma das cadeia de caracteres neste arquivo de manifesto de nível superior.

localizationInfo.additionalLanguages

Uma matriz de objetos especificando mais traduções de idiomas.

Nome Tamanho máximo Obrigatório Descrição
languageTag ✔️ A marca de idioma das cadeias de caracteres no arquivo fornecido.
file ✔️ Um caminho de arquivo relativo para o arquivo .json que contém as cadeias de caracteres traduzidas.

ícones

Obrigatório—objeto

Ícones usados no aplicativo Teams. Os arquivos de ícone devem ser incluídos como parte do pacote de upload. Para obter mais informações, consulte Ícones.

Nome Tamanho máximo Obrigatório Descrição
outline 32 x 32 pixels ✔️ Um caminho de arquivo relativo para um ícone de contorno PNG transparente de 32x32.
color 192 x 192 pixels ✔️ Um caminho de arquivo relativo para um ícone PNG colorido de 192x192.

accentColor

Obrigatório—Código de cores HTML hexadecimal

Uma cor a ser usada e como plano de fundo para seus ícones de cor.

O valor deve ser um código de cor HTML válido começando com '#', por exemplo #4464ee.

configurbleTabs

Opcional—matriz

Usado quando sua experiência de aplicativo tem uma experiência de guia de canal de equipe que requer configuração extra antes de ser adicionada. As guias configuráveis são compatíveis apenas nos escopos team e groupchat, sendo que você pode configurar as mesmas guias várias vezes. No entanto, você pode defini-la no manifesto apenas uma vez.

Nome Tipo Tamanho máximo Obrigatório Descrição
configurationUrl string 2048 caracteres ✔️ A URL https:// a ser usada ao configurar a guia.
scopes matriz de enumerações 1 ✔️ Atualmente, as guias configuráveis são compatíveis apenas com os escopos team e groupchat.
canUpdateConfiguration Booliano Um valor que indica se uma instância da configuração da guia pode ser atualizada pelo usuário após a criação. Padrão: true.
context matriz de enumerações 6 O conjunto de contextItem escopos em que uma guia é compatível. Padrão: [channelTab, privateChatTab, meetingChatTab, meetingDetailsTab].
sharePointPreviewImage string 2048 Um caminho de arquivo relativo para uma imagem de visualização de guia para uso no SharePoint. Tamanho 1024x768.
supportedSharePointHosts matriz de enumerações 1 Define como a sua guia é disponibilizada no SharePoint. As opção são sharePointFullPage esharePointWebPart

staticTabs

Opcional—matriz

Define um conjunto de guias que podem ser "fixadas" por padrão, sem que o usuário as adicione manualmente. As guias estáticas declaradas no escopo personal são sempre vinculadas à experiência pessoal do aplicativo. As guias estáticas declaradas no escopo team não são suportadas no momento.

Este item é uma matriz (máximo de 16 elementos) com todos os elementos do tipo object. Esse bloco é necessário apenas para soluções que fornecem uma solução de guia estática.

Nome Tipo Tamanho máximo Obrigatório Descrição
entityId string 64 caracteres ✔️ Um identificador exclusivo para a entidade que a guia exibe.
name string 128 caracteres ✔️ O nome de exibição da guia na interface de canal.
contentUrl string ✔️ A URL https:// que aponta para a interface do usuário da entidade a ser exibida na tela do Teams.
websiteUrl string A URL https:// para apontar se um usuário optar por visualizar em um navegador.
searchUrl string A URL https:// para apontar para as consultas de pesquisa de um usuário.
scopes matriz de enumerações 1 ✔️ Atualmente, as guias estáticas oferecem suporte apenas ao escopo personal, o que significa que elas podem ser provisionadas apenas como parte da experiência pessoal.
context matriz de enumerações 2 O conjunto de contextItem escopos em que uma guia é compatível.

Observação

O recurso searchUrl não está disponível para desenvolvedores de terceiros. Se as suas guias exigirem informações dependentes do contexto para exibir conteúdo relevante ou para iniciar um fluxo de autenticação, para obter mais informações, consulte Obter contexto para sua guia do Microsoft Teams.

bots

Opcional—matriz

Define uma solução de bot, juntamente com informações opcionais, como propriedades de comando padrão.

O item é uma matriz (máximo de apenas um elemento — atualmente, apenas um bot é permitido por aplicativo) com todos os elementos do tipo object. Esse bloco é necessário apenas para soluções que fornecem uma experiência de bot.

Nome Tipo Tamanho máximo Obrigatório Descrição
botId string 64 caracteres ✔️ O ID exclusivo do aplicativo Microsoft para o bot conforme registrado na estrutura do bot. A ID pode ser igual a ID do aplicativo geral.
scopes matriz de enumerações 3 ✔️ Especifica se o bot oferece uma experiência no contexto de um canal em um team, em um chat de grupo (groupchat) ou uma experiência delimitada apenas a um usuário individual (personal). Essas opções são não exclusivas.
needsChannelSelector Boolean Descreve se o bot usa ou não uma dica de usuário para adicionar o bot a um canal específico. Padrão: false
isNotificationOnly Boolean Indica se um bot é um bot unidirecional, somente para notificação, em vez de um bot de conversa. Padrão: false
supportsFiles Boolean Indica se o bot é compatível com a capacidade de carregar/baixar arquivos em chat pessoal. Padrão: false
supportsCalling Booliano Um valor que indica onde um bot dá suporte a chamadas de áudio. IMPORTANTE: Esta propriedade é experimental no momento. As propriedades experimentais podem não estar completas e podem sofrer alterações antes de se tornarem totalmente disponíveis. A propriedade é fornecida apenas para fins de teste e exploração e não deve ser usada em aplicativos de produção. Padrão: false
supportsVideo Booliano Um valor que indica onde um bot oferece suporte a chamadas com vídeo. IMPORTANTE: Esta propriedade é experimental no momento. As propriedades experimentais podem não estar completas e podem sofrer alterações antes de se tornarem totalmente disponíveis. A propriedade é fornecida apenas para fins de teste e exploração e não deve ser usada em aplicativos de produção. Padrão: false

bots.commandLists

Uma lista de comandos que seu bot pode recomendar aos usuários. O objeto é uma matriz (máximo de dois elementos) com todos os elementos do tipo object; você deve definir uma lista de comandos separada para cada escopo que o seu bot oferece suporte. Para obter mais informações, confira Menus de Bot.

Nome Tipo Tamanho máximo Obrigatório Descrição
items.scopes matriz de enumerações 3 ✔️ Especifica o escopo para o qual a lista de comandos é válida. As opção são team, personal e groupchat.
items.commands matriz de objetos 10 ✔️ Uma matriz de comandos que o bot suporta:
title: o nome do comando bot (cadeia, 32)
description: uma descrição simples ou exemplo da sintaxe do comando e seu argumento (cadeia, 128)

bots.commandLists.commands

Nome Tipo Tamanho máximo Obrigatório Descrição
title string 12 ✔️ O nome do comando do bot.
description string 128 caracteres ✔️ Uma descrição de texto simples ou um exemplo da sintaxe do comando e seus argumentos.

conectores

Opcional—matriz

O connectors bloco define um cartão conector para Grupos do Microsoft 365 para o aplicativo.

O objeto é uma matriz (máximo de 2 elementos) com todos os elementos do tipo object. Este bloco é necessário apenas para soluções que fornecem um Conector.

Nome Tipo Tamanho máximo Obrigatório Descrição
configurationUrl string 2048 caracteres ✔️ A URL https:// a ser usada ao configurar o conector.
scopes matriz de enumerações 1 ✔️ Especifica se o Conector oferece uma experiência no contexto de um canal em um team, ou uma experiência com escopo apenas para um usuário individual (personal). Atualmente, apenas o escopo team é compatível.
connectorId string 64 caracteres ✔️ Um identificador exclusivo para o Conector que corresponde a sua ID no Painel do Desenvolvedor de Conectores.

composeExtensions

Opcional—matriz

Define uma extensão de mensagens para o aplicativo.

Observação

O nome do recurso foi alterado de "extensão de texto " para "extensão de mensagem" em novembro de 2017, mas o nome do manifesto permanece o mesmo para que as extensões existentes continuem funcionando.

O item é uma matriz (máximo de um elemento) com todos os elementos do tipo object. Este bloco é necessário apenas para soluções que fornecem uma extensão de mensagens.

Nome Tipo Tamanho Máximo Obrigatório Descrição
botId string 64 ✔️ A ID exclusiva do aplicativo da Microsoft para o bot que oferece suporte à extensão de mensagens, conforme registrado no Bot Framework. A ID pode ser igual à ID geral do aplicativo.
commands matriz de objetos 10 ✔️ Matriz de comandos com suporte da extensão de mensagens.
canUpdateConfiguration Booliano Um valor que indica se a configuração de uma extensão de mensagem pode ser atualizada pelo usuário. Padrão: false.
messageHandlers matriz de Objetos 5 Uma lista de manipuladores que permitem que aplicativos sejam invocados quando determinadas condições são atendidas.
messageHandlers.type string O tipo de manipulador de mensagens. Deve ser "link".
messageHandlers.value.domains matriz de Cadeias de Caracteres Matriz de domínios para os quais o manipulador de mensagens de link pode se registrar.
messageHandlers.value.supportsAnonymizedPayloads Boolean Um valor booliano que indica se o manipulador de mensagens de link do aplicativo dá suporte ao fluxo de invocação anônimo. O padrão é false.

composeExtensions.commands

Sua extensão de mensagens deve declarar um ou mais comandos com no máximo 10 comandos. Cada comando aparece no Microsoft Teams como uma interação potencial do ponto de entrada baseado na interface do usuário.

Cada item de comando é um objeto com a seguinte estrutura:

Nome Tipo Tamanho máximo Obrigatório Descrição
id string 64 caracteres ✔️ A ID do comando.
title string 32 caracteres ✔️ O nome do comando amigável.
type string 64 caracteres O tipo do comando. Um de query ou action. Padrão: consulta.
description string 128 caracteres A descrição que aparece para os usuários para indicar a finalidade deste comando.
initialRun Booliano Um valor booliano indica se o comando é executado inicialmente sem parâmetros. O padrão é false.
context matriz de Cadeias de Caracteres 3 Define de onde a extensão da mensagem pode ser invocada. Qualquer combinação de compose,commandBox,message. O padrão é ["compose","commandBox"].
fetchTask Booliano Um valor booliano que indica se ele deve buscar o módulo de tarefa dinamicamente. O padrão é false.
taskInfo objeto Especifique o módulo de tarefa para pré-carregar ao usar um comando de extensão do sistema de mensagens.
taskInfo.title string 64 caracteres Título inicial da caixa de diálogo.
taskInfo.width string Largura da caixa de diálogo - um número em pixels ou layout padrão, como 'grande', 'médio' ou 'pequeno'.
taskInfo.height string Altura da caixa de diálogo - um número em pixels ou layout padrão, como 'grande', 'médio' ou 'pequeno'.
taskInfo.url string URL inicial da webview.
parameters matriz de objeto 5 itens ✔️ A lista de parâmetros que o comando usa. Mínimo: 1; máximo: 5.
parameters.name string 64 caracteres ✔️ O nome do parâmetro como ele aparece no cliente. O nome do parâmetro é incluído na solicitação do usuário.
parameters.title string 32 caracteres ✔️ Título amigável para o parâmetro.
parameters.description string 128 caracteres Cadeia de caracteres amigável que descreve a finalidade desse parâmetro.
parameters.value string 512 caracteres Valor inicial para o parâmetro. Atualmente, o valor não tem suporte
parameters.inputType string 128 caracteres Define o tipo de controle exibido em um módulo de tarefa parafetchTask: false . Uma de text, textarea, number, date, time, toggle, choiceset .
parameters.choices matriz de objetos 10 itens As opções de escolha para choiceset. Use apenas quando parameter.inputType for choiceset.
parameters.choices.title string 128 caracteres ✔️ Títulor da escolha.
parameters.choices.value string 512 caracteres ✔️ O valor da escolha.

permissões

Opcional—matriz de cadeias de caracteres

Uma matriz de string, que especifica quais permissões o aplicativo solicita, que permite que os usuários finais saibam como a extensão funciona. As seguintes opções não são exclusivas:

  • identity Requer informações de identidade do usuário.
  • messageTeamMembers Requer permissão para enviar mensagens diretas aos membros da equipe.

Alterar essas permissões durante a atualização do aplicativo faz com que seus usuários repitam o processo de consentimento depois de executar o aplicativo atualizado. Para saber mais, confira Atualizando seu aplicativo.

Observação

As permissões estão preteridas agora.

devicePermissions

Opcional—matriz de cadeias de caracteres

Fornece os recursos nativos no dispositivo de um usuário aos quais o seu aplicativo solicita acesso. As opções são:

  • geolocation
  • media
  • notifications
  • midi
  • openExternal

validDomains

Opcional, exceto Obrigatório onde indicado.

Uma lista de domínios válidos para sites que o aplicativo espera carregar no cliente do Teams. As listagens de domínio podem incluir curingas, por exemplo, *.example.com. O domínio válido corresponde exatamente a um segmento do domínio; se você precisar combinar a.b.example.com, use *.*.example.com. Se a sua configuração de guias ou interface do usuário de conteúdo navegar para qualquer outro domínio que não seja a configuração de guias, esse domínio deverá ser especificado aqui.

Não inclua os domínios dos provedores de identidade aos quais você deseja oferecer suporte em seu aplicativo. Por exemplo, para autenticar usando uma ID do Google, é necessário redirecionar para accounts.google.com, no entanto, você não deve incluir accounts.google.com no validDomains[].

Os aplicativos do Teams que exigem que suas próprias URLs do SharePoint funcionem bem incluem "{teamsitedomain}" em sua lista de domínios válida.

Importante

Não adicione domínios que estão fora do controle, diretamente ou por meio de curingas (*). Por exemplo, *.yoursite.com é válida, mas *.onmicrosoft.com não é válida, pois não está sob seu controle.

Ao usar curingas, as seguintes regras se aplicam:

  • Se um segmento de subdomínio incluir um curinga, ele deve ser o único caractere no segmento.
  • Qualquer segmento anterior a um segmento curinga também deve ser um segmento curinga.

Por exemplo, *.*.domain.com é válida, mas foo.*.myteam.domain.com não é válido.

O objeto é uma matriz com todos os elementos do tipo string.

webApplicationInfo

Opcional—objeto

Forneça a ID do aplicativo do Microsoft Azure AD e as informações do Microsoft Graph para ajudar os usuários a entrarem facilmente no seu aplicativo. Se o seu aplicativo estiver registrado no Microsoft Azure Active Directory (Azure AD), você deverá fornecer a ID do aplicativo. Os administradores podem revisar facilmente as permissões e conceder consentimento no centro de administração do Teams.

Nome Tipo Tamanho máximo Obrigatório Descrição
id string 36 caracteres ✔️ ID do aplicativo do Microsoft Azure AD do aplicativo. Essa ID deve ser um GUID.
resource string 2048 caracteres ✔️ URL de recurso do aplicativo para adquirir token de autenticação para SSO.
NOTA: Se você não estiver usando o SSO, verifique se você insere um valor de cadeia de caracteres fictício neste campo no manifesto do aplicativo, por exemplo, https://notapplicable para evitar uma resposta de erro.

graphConnector

Opcional—objeto

Especifique a configuração do conector de gráfico do aplicativo. Se isso estiver presente, webApplicationInfo.id também deve ser especificado.

Nome Tipo Tamanho máximo Obrigatório Descrição
notificationUrl string 2048 caracteres ✔️ A URL para a qual as notificações do conector do Graph para o aplicativo devem ser enviadas.

showLoadingIndicator

Opcional—booliano

Indica se deve ou não mostrar o indicador de carregamento quando um aplicativo ou guia está carregando. O padrão é false.

Observação

  • Se você selecionar showLoadingIndicator como true no manifesto do aplicativo, para carregar a página corretamente, modifique as páginas de conteúdo de suas guias e módulos de tarefa, conforme descrito em Mostrar um documento indicador de carregamento nativo .
  • Se você não modificar as páginas de conteúdo da guia, o aplicativo de guias não carregará e mostrará o erro There was a problem reaching this app.

isFullScreen

Opcional—booliano

Indica se um aplicativo pessoal é renderizado sem uma barra de cabeçalho de guia (significando o modo de tela inteira). O padrão é false.

Observação

  • isFullScreen funciona apenas para aplicativos publicados em sua organização. Aplicativos de terceiros transferidos por sideload e publicados não podem usar essa propriedade (ela é ignorada).

  • isFullScreen=true remove a barra de cabeçalho e o título fornecidos pelo Teams de aplicativos pessoais e das caixas de diálogo do módulo de tarefa.

activities

Opcional—objeto

Defina as propriedades que o seu aplicativo usa para postar um feed de atividades do usuário..

Nome Tipo Tamanho máximo Obrigatório Descrição
activityTypes matriz de Objetos 128 itens Forneça os tipos de atividades que seu aplicativo pode postar no feed de atividades de um usuário.

activities.activityTypes

Nome Tipo Tamanho máximo Obrigatório Descrição
type string 32 caracteres ✔️ O tipo de notificação. Confira a seguir.
description string 128 caracteres ✔️ Uma breve descrição da notificação. Confira a seguir.
templateText string 128 caracteres ✔️ Ex: "{actor} criou a tarefa {taskId} para você"
{
   "activities":{
      "activityTypes":[
         {
            "type":"taskCreated",
            "description":"Task Created Activity",
            "templateText":"{actor} created task {taskId} for you"
         },
         {
            "type":"teamMention",
            "description":"Team Mention Activity",
            "templateText":"{actor} mentioned team"
         },
         {
            "type":"channelMention",
            "description":"Channel Mention Activity",
            "templateText":"{actor} mentioned channel"
         },
         {
            "type":"userMention",
            "description":"Personal Mention Activity",
            "templateText":"{actor} mentioned user"
         },
         {
            "type":"calendarForward",
            "description":"Forwarding a Calendar Event",
            "templateText":"{actor} sent user an invite on behalf of {eventOwner}"
         },
         {
            "type":"calendarForward",
            "description":"Forwarding a Calendar Event",
            "templateText":"{actor} sent user an invite on behalf of {eventOwner}"
         },
         {
            "type":"creatorTaskCreated",
            "description":"Created Task Created",
            "templateText":"The Creator created task {taskId} for you"
         }
      ]
   }
}

defaultInstallScope

Cadeia de caracteres - opcional.

Especifica o escopo de instalação definido para este aplicativo por padrão. O escopo definido será a opção exibida no botão quando um usuário tentar adicionar o aplicativo. As opções são:

  • personal
  • team
  • groupchat
  • meetings

defaultGroupCapability

Opcional - objeto

Quando um escopo de instalação de grupo é selecionado, ele definirá o recurso padrão quando o usuário instalar o aplicativo. As opções são:

  • team
  • groupchat
  • meetings
Nome Tipo Tamanho máximo Obrigatório Descrição
team string Quando o escopo de instalação selecionado é team, este campo especifica o recurso padrão disponível. Opções: tab, bot ou connector.
groupchat string Quando o escopo de instalação selecionado é groupchat, este campo especifica o recurso padrão disponível. Opções: tab, bot ou connector.
meetings string Quando o escopo de instalação selecionado é meetings, este campo especifica o recurso padrão disponível. Opções: tab, bot ou connector.

configurableProperties

Opcional - matriz

O bloco configurableProperties define as propriedades do aplicativo que os administradores do Teams podem personalizar. Para obter mais informações, consulte habilitar a personalização do aplicativo. O recurso de personalização do aplicativo não é compatível com aplicativos personalizados ou LOB.

Observação

Um mínimo de uma propriedade deve ser definido. Você pode definir um máximo de nove propriedades neste bloco.

Você pode definir qualquer uma das seguintes propriedades:

supportedChannelTypes

Opcional - matriz

Habilita seu aplicativo em canais não-padronizados. Se seu aplicativo der suporte a um escopo de equipe e esta propriedade for definida, o Teams habilita seu aplicativo em cada tipo de canal adequadamente. Atualmente, há suporte para os tipos de canais privados e compartilhados.

Observação

  • Se seu aplicativo der suporte a um escopo de equipe, ele funciona nos canais padrão independentemente dos valores que são definidos nesta propriedade.
  • Seu aplicativo pode levar em conta as propriedades únicas de cada um dos tipos de canal para funcionar corretamente. Para habilitar sua guia para canais privados e compartilhados, confira Recuperar contexto em canais privados e obter contexto em canais compartilhados

defaultBlockUntilAdminAction

Opcional - booliano

Quando a propriedade defaultBlockUntilAdminAction é definida como true, o aplicativo fica oculto dos usuários por padrão até que o administrador permita. Se definido como true, o aplicativo ficará oculto para todos os locatários e usuários finais. Os administradores de locatários podem ver o aplicativo no centro de administração do Teams e tomar medidas para permitir ou bloquear o aplicativo. O valor padrão é falso. Para obter mais informações sobre o bloco de aplicativos padrão, consulte Bloquear aplicativos por padrão para usuários até que um administrador aprove

publisherDocsUrl

Cadeia de caracteres - opcional.

Tamanho máximo - 128 caracteres

O publisherDocsUrl é uma URL HTTPS para uma página de informações para que os administradores obtenham diretrizes antes de permitir um aplicativo, que é bloqueado por padrão. Ele também pode ser usado para fornecer instruções ou informações sobre o aplicativo que podem ser úteis para o administrador do locatário.

subscriptionOffer

Opcional - objeto

Especifica a oferta de SaaS associada ao seu aplicativo.

Nome Tipo Tamanho máximo Obrigatório Descrição
offerId string 2,048 caracteres ✔️ Um identificador exclusivo que inclui a sua ID de editor e ID de oferta, que você pode encontrar no Partner Center. Você deve formatar a cadeia de caracteres como publisherId.offerId.

meetingExtensionDefinition

Opcional - objeto

Especifique a definição de extensão da reunião. Para obter mais informações, consulte cenas personalizadas do Modo Juntos no Teams.

Nome Tipo Tamanho máximo Obrigatório Descrição
scenes matriz de objetos 5 itens Cenas suportadas da reunião.
supportsStreaming Booliano Um valor que indica se um aplicativo pode transmitir o conteúdo de áudio e vídeo da reunião para um ponto de extremidade de protocolo de reunião em tempo real (RTMP). O valor padrão é falso.

meetingExtensionDefinition.scenes

Nome Tipo Tamanho máximo Obrigatório Descrição
id ✔️ O identificador exclusivo para a cena. Essa ID deve ser um GUID.
name string 128 caracteres ✔️ O nome da cena.
file ✔️ O caminho do arquivo relativo para o arquivo JSON de metadados das cenas.
preview ✔️ O caminho do arquivo relativo para o ícone de visualização PNG das cenas.
maxAudience inteiro 50 ✔️ O número máximo de audiências suportadas na cena.
seatsReservedForOrganizersOrPresenters inteiro 50 ✔️ O número de assentos reservados para organizadores ou apresentadores.

autorização

Opcional - objeto

Observação

Se você definir a propriedade manifestVersion como 1.12, a propriedade de autorização será incompatível com as versões mais antigas (versão 1.11 ou anterior) do manifesto. A autorização é suportada para o manifesto versão 1.12.

Especifique e consolide as informações relacionadas à autorização para o aplicativo.

Nome Tipo Tamanho máximo Obrigatório Descrição
permissions Lista de permissões que o aplicativo precisa para funcionar.

authorization.permissions

Nome Tipo Tamanho máximo Obrigatório Descrição
resourceSpecific matriz de objetos 16 itens Permissões que protegem o acesso a dados no nível da instância do recurso.

authorization.permissions.resourceSpecific

Nome Tipo Tamanho máximo Obrigatório Descrição
type string ✔️ O tipo de permissão específica do recurso. Opções: Application e Delegated.
name string 128 caracteres ✔️ O nome da permissão específica do recurso. Para obter mais informações, consulte Permissões de aplicativo específicas do recurso e Permissões delegadas específicas do recurso

Permissões de aplicativo específicas do recurso

As permissões do aplicativo permitem que o aplicativo acesse dados sem um usuário conectado. Para obter informações sobre permissões de aplicativos, consulte Consentimento específico de recursos para MS Graph e MS BotSDK.

Permissões delegadas específicas do recurso

As permissões delegadas permitem que o aplicativo acesse dados em nome do usuário conectado.

  • Permissões delegadas específicas de recursos para equipes

    Name Descrição
    ChannelMeetingParticipant.Read.Group Permite que o aplicativo leia as informações dos participantes, incluindo nome, função, ID, horários de ingresso e de saída, de reuniões de canal associadas a esta equipe, em nome do usuário conectado.
    InAppPurchase.Allow.Group Permite que o aplicativo mostre ofertas do marketplace aos usuários nesta equipe e conclua suas compras dentro do aplicativo, em nome do usuário conectado.
    ChannelMeetingStage.Write.Group Permite que o aplicativo mostre o conteúdo na janela de conteúdo compartilhado nas reuniões de canal associadas a essa equipe, em nome do usuário conectado.
    LiveShareSession.ReadWrite.Group Permite que o aplicativo crie e sincronize sessões do Live Share para reuniões associadas a essa equipe e acesse informações relacionadas sobre a lista da reunião, como a função de reunião do membro, em nome do usuário conectado.
  • Permissões delegadas específicas do recurso para chats ou reuniões

    Name Descrição
    InAppPurchase.Allow.Chat Permite que o aplicativo mostre ofertas do marketplace aos usuários neste chat e em qualquer reunião associada e conclua suas compras dentro aplicativo, em nome do usuário conectado.
    MeetingStage.Write.Chat Permite que o aplicativo mostre o conteúdo na janela de conteúdo compartilhado nas reuniões associadas a este chat, em nome do usuário conectado.
    OnlineMeetingParticipant.Read.Chat Permite que o aplicativo leia as informações do participante, incluindo nome, função, ID, horários de ingresso e de saída, da reuniões associadas a este chat, em nome do usuário conectado.
    OnlineMeetingParticipant.ToggleIncomingAudio.Chat Permite que o aplicativo alterne o áudio de entrada para participantes em reuniões associadas a este chat, em nome do usuário conectado.
    LiveShareSession.ReadWrite.Chat Permite que o aplicativo crie e sincronize sessões do Live Share para reuniões associadas a esse chat e acesse informações relacionadas sobre a lista da reunião, como a função de reunião do membro, em nome do usuário conectado.
    OnlineMeetingIncomingAudio.Detect.Chat Permite que o aplicativo detecte alterações no status do áudio de entrada em reuniões associadas a esse chat, em nome do usuário conectado.
    OnlineMeetingNotification.Send.Chat Permite que o aplicativo envie notificações para as reuniões associadas ao chat.
  • Permissões delegadas específicas do recurso para usuários

    Name Descrição
    InAppPurchase.Allow.User Permite que o aplicativo mostrar as ofertas do marketplace do usuário e conclua as compras do usuário dentro do aplicativo, em nome do usuário conectado.

Criar um arquivo de manifesto

Se seu aplicativo não tem um arquivo de manifesto do aplicativo Teams, você precisará criá-lo.

Para criar um arquivo de manifesto do aplicativo Teams:

  1. Use a amostra do esquema de manifesto para criar um arquivo .json.
  2. Salve-o na raiz da pasta do seu projeto como manifest.json.

Aqui está um exemplo de um exemplo de esquema de manifesto para um aplicativo de guia com SSO habilitado:

Observação

O conteúdo de exemplo de manifesto mostrado aqui é apenas para um aplicativo de guia. Ele usa valores de exemplo para URI de subdomínio. Para obter mais informações, confira amostra do esquema de manifesto.

{ 
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.11/MicrosoftTeams.schema.json", 
"manifestVersion": "1.12", 
"version": "1.0.0", 
"id": "{new GUID for this Teams app - not the Azure AD App ID}", 
"developer": { 
"name": "Microsoft", 
"websiteUrl": "https://www.microsoft.com", 
"privacyUrl": "https://www.microsoft.com/privacy", 
"termsOfUseUrl": "https://www.microsoft.com/termsofuse" 
}, 

"name": { 
  "short": "Teams Auth SSO", 
  "full": "Teams Auth SSO" 
}, 


"description": { 
  "short": "Teams Auth SSO app", 
  "full": "The Teams Auth SSO app" 
}, 

"icons": { 
  "outline": "outline.png", 
  "color": "color.png" 
}, 

"accentColor": "#60A18E", 
"staticTabs": [ 
  { 
   "entityId": "auth", 
   "name": "Auth", 
   "contentUrl": "https://https://subdomain.example.com/Home/Index", 
   "scopes": [ "personal" ] 
  } 
], 

"configurableTabs": [ 
  { 
   "configurationUrl": "https://subdomain.example.com/Home/Configure", 
   "canUpdateConfiguration": true, 
   "scopes": [ 
   "team" 
    ] 
  } 
], 
"permissions": [ "identity", "messageTeamMembers" ], 
"validDomains": [ 
 "{subdomain or ngrok url}" 
], 
"webApplicationInfo": { 
  "id": "{Azure AD AppId}", 
  "resource": "api://subdomain.example.com/{Azure AD AppId}" 
}
} 

Confira também