Esquema del manifiesto de la aplicación
El manifiesto de aplicación (anteriormente denominado manifiesto de aplicación de Teams) describe cómo se integra la aplicación en el producto de Microsoft Teams. El manifiesto de la aplicación debe ajustarse al esquema hospedado en https://developer.microsoft.com/json-schemas/teams/v1.16/MicrosoftTeams.schema.json
. Se admiten las versiones anteriores 1.0, 1.1,...,1.15 y la versión actual es 1.16 (con "v1.x" en la dirección URL).
Para obtener más información sobre los cambios realizados en cada versión, consulte Registro de cambios de manifiesto de aplicación y para versiones anteriores, consulte Versiones de manifiesto de aplicación.
En la tabla siguiente se enumeran las versiones de manifiesto de aplicación y versión de TeamsJS según diferentes escenarios de aplicación:
Versión de TeamsJS | Versión del manifiesto de la aplicación | Pasos siguientes | |
---|---|---|---|
Aplicaciones de Teams extendidas a Microsoft 365/Outlook | TeamsJS v.2.0 o posterior | 1.13 o posterior | Extender una aplicación de Teams para que se ejecute en Microsoft 365 o Crear una nueva aplicación de Microsoft 365 |
Aplicaciones existentes solo para Teams | Actualizar a TeamsJS v.2.0 cuando sea posible (v.1.12 sigue siendo compatible*) | 1.12 | Compatibilidad con versiones anteriores de TeamsJS y Actualizar a TeamsJS v.2.0 |
Nuevas aplicaciones solo para Teams | TeamsJS v.2.0 o posterior | 1.12 | Crear una nueva aplicación de Teams con el Kit de herramientas de Teams |
*Use la versión más reciente de TeamsJS (v.2.0 o posterior) siempre que sea posible, para aprovechar las mejoras más recientes y la nueva compatibilidad con características, incluidas las aplicaciones solo de Teams. TeamsJS v.1.12 sigue siendo compatible, pero no se agregarán nuevas características ni mejoras. De lo contrario, los esquemas 1.12 y 1.13 son los mismos. Para obtener más información, consulte Biblioteca teamsJS.
Nota:
Si la aplicación de Teams usa la versión 1.13 o posterior del manifiesto de la aplicación, asegúrese de que la aplicación cumple los criterios para ampliar la aplicación para que se ejecute en Microsoft 365 o Outlook.
A continuación se muestra el esquema de manifiesto de aplicación de ejemplo:
Manifiesto de aplicación de ejemplo
{
"$schema": "https://developer.microsoft.com/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
"manifestVersion": "1.16",
"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://example.com/",
"privacyUrl": "https://example.com/privacy",
"termsOfUseUrl": "https://example.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)"
}
],
"supportedChannelTypes": [
"sharedChannels",
"privateChannels"
],
"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": "choiceset",
"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
}
]
}
}
El esquema define las siguientes propiedades:
$schema
Opcional, pero recomendado: cadena
Dirección URL de https:// que hace referencia al esquema JSON para el manifiesto de la aplicación.
manifestVersion
Obligatorio : cadena
Versión del esquema de manifiesto de aplicación que usa este manifiesto. Use 1.13
para habilitar la compatibilidad con aplicaciones de Teams en outlook y aplicaciones de Microsoft 365; use 1.12
(o versiones anteriores) para aplicaciones solo de Teams.
version
Obligatorio : cadena
La versión de una aplicación específica. Al actualizar algo en el manifiesto de la aplicación, la versión también debe incrementarse. De este modo, cuando se instala el nuevo manifiesto de aplicación, sobrescribe el existente y el usuario recibe la nueva funcionalidad. Cuando esta aplicación se envió a microsoft Teams Store, el nuevo manifiesto de aplicación debe volver a enviarse y volver a validarse. Los usuarios de la aplicación reciben automáticamente el nuevo manifiesto de aplicación actualizado en pocas horas después de que se apruebe el manifiesto de la aplicación.
Si la aplicación solicita un cambio de permisos de acceso, se pide a los usuarios que actualicen y vuelvan a dar los permisos a la aplicación.
La versión de esta cadena debe seguir el estándar de SemVer (MAJOR.MINOR.PATCH).
Id.
Obligatorio : identificador de aplicación de Microsoft
El id. es un identificador único generado por Microsoft para la aplicación. El formato del identificador es GUID. Usted tiene un id. si su bot está registrado a través de Microsoft Bot Framework. Usted tiene un id. si la aplicación web de la pestaña ya inicia sesión con Microsoft. Debe escribir el identificador aquí. De lo contrario, debe generar un nuevo id. en el portal de registro de aplicación de Microsoft. Use el mismo id. si agrega un bot.
El identificador almacenado en el Centro de Administración de Teams es el identificador de aplicación externa y es visible como ExternalID en los seguimientos.
Nota:
Si va a enviar una actualización a la aplicación existente en AppSource, el identificador del manifiesto de la aplicación no se debe modificar.
developer
Requerido : objeto
Especifica información sobre su empresa. En el caso de las aplicaciones enviadas a la Tienda Teams, estos valores deben coincidir con la información de la descripción de la Tienda Teams. Para obtener más información, consulte las directrices de publicación de la Tienda Teams. El nombre del desarrollador ayuda a mejorar la detectabilidad de la aplicación en la Tienda Teams.
Nombre | Tamaño máximo | Necesario | Descripción |
---|---|---|---|
name |
32 caracteres | ✔️ | Nombre para mostrar del desarrollador. |
websiteUrl |
2048 caracteres | ✔️ | La dirección URL https:// al sitio web del desarrollador. Este vínculo debe llevar a los usuarios a la página de aterrizaje específica de su empresa o producto. |
privacyUrl |
2048 caracteres | ✔️ | La dirección URL https:// a la directiva de privacidad del desarrollador. |
termsOfUseUrl |
2048 caracteres | ✔️ | La https:// dirección URL a las condiciones de uso del desarrollador. |
mpnId |
10 caracteres | El id. de Microsoft Partner Network que identifica la organización asociada que genera la aplicación es opcional. |
name
Requerido : objeto
El nombre de la experiencia de la aplicación, que se muestra a los usuarios en la experiencia de Teams. Para las aplicaciones enviadas a AppSource, estos valores deben coincidir con la información de la entrada de AppSource. Los valores de short
y full
deben ser diferentes. El nombre de la aplicación ayuda a mejorar la detectabilidad de la aplicación en la Tienda Teams.
Nombre | Tamaño máximo | Necesario | Descripción |
---|---|---|---|
short |
30 caracteres | ✔️ | El nombre corto para mostrar de la aplicación. |
full |
100 caracteres | ✔️ | Nombre completo de la aplicación, que se usa si el nombre completo de la aplicación supera los 30 caracteres. |
description
Requerido : objeto
Describe la aplicación a los usuarios. Para las aplicaciones enviadas a AppSource, estos valores deben coincidir con la información de la entrada de AppSource. La descripción de la aplicación ayuda a mejorar la detectabilidad de la aplicación en la Tienda Teams.
Asegúrese de que la descripción describe su experiencia y ayuda a los clientes potenciales a comprender lo que hace su experiencia. Debe anotar en la descripción completa si se requiere una cuenta externa para su uso. Los valores de short
y full
deben ser diferentes. La descripción breve no se puede repetir dentro de la descripción larga y no debe incluir ningún otro nombre de aplicación.
Nombre | Tamaño máximo | Necesario | Descripción |
---|---|---|---|
short |
80 caracteres | ✔️ | Una breve descripción de la experiencia de la aplicación, que se usa cuando el espacio es limitado. |
full |
4000 caracteres | ✔️ | La descripción completa de la aplicación. |
localizationInfo
Opcional : objeto
Permite la especificación de un idioma predeterminado y proporciona punteros a más archivos de idioma. Para obtener más información, consulte localización.
Nombre | Tamaño máximo | Necesario | Descripción |
---|---|---|---|
defaultLanguageTag |
✔️ | Etiqueta de idioma de las cadenas de este archivo de manifiesto de aplicación de nivel superior. |
localizationInfo.additionalLanguages
Una matriz de objetos que especifican más traducciones de idiomas.
Nombre | Tamaño máximo | Necesario | Descripción |
---|---|---|---|
languageTag |
✔️ | Etiqueta de idioma de las cadenas del archivo proporcionado. | |
file |
2048 caracteres | ✔️ | Ruta de acceso al archivo relativa al archivo .json que contiene las cadenas traducidas. |
iconos
Requerido : objeto
Iconos usados en la aplicación Teams. Los archivos de icono deben incluirse como parte del paquete de carga. Para obtener más información, consulte Iconos.
Nombre | Tamaño máximo | Necesario | Descripción |
---|---|---|---|
outline |
32 por 32 píxeles | ✔️ | Ruta de acceso de archivo relativa a un icono de esquema PNG transparente de 32x32. El color del borde debe ser blanco. |
color |
192 por 192 píxeles | ✔️ | Ruta de acceso de archivo relativa a un icono PNG 192x192 de color completo. |
accentColor
Requerido : código de color hexadecimal HTML
Color que se va a usar y como fondo para los iconos de color.
El valor debe ser un código de color HTML válido que empiece por "#", como por ejemplo #4464ee
. Para obtener más información, vea accentColor.
configurableTabs
Opcional : matriz
Se usa cuando la experiencia de la aplicación tiene una experiencia de pestaña de canal de equipo que requiere una configuración adicional antes de agregarla. Las pestañas configurables solo se admiten en los ámbitos team
y groupChat
y se pueden configurar las mismas pestañas varias veces. Sin embargo, solo puede definirlo en el manifiesto de la aplicación una vez.
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
configurationUrl |
Cadena | 2048 caracteres | ✔️ | Dirección URL de https:// que se va a usar al configurar la pestaña. |
scopes |
Matriz de enumeraciones | 2 | ✔️ | Actualmente, las pestañas configurables solo admiten los ámbitos team y groupChat . |
canUpdateConfiguration |
Booleano | Valor que indica si el usuario puede actualizar una instancia de la configuración de la pestaña tras su creación. Valor predeterminado: True | ||
meetingSurfaces |
Matriz de enumeraciones | 2 | Cojunto de ámbitos meetingSurfaceItem donde se admite una pestaña. Valor predeterminado: [sidepanel, stage]. |
|
context |
Matriz de enumeraciones | 8 | Cojunto de ámbitos contextItem donde se admite una pestaña. Valor aceptado: [personalTab, channelTab, privateChatTab, meetingChatTab, meetingDetailsTab, meetingSidePanel, meetingStage, callingSidepanel]. |
|
sharePointPreviewImage |
Cadena | 2048 | Una ruta de acceso de archivo relativa a una imagen de vista previa de pestaña para su uso en SharePoint. Tamaño 1024x768. | |
supportedSharePointHosts |
Matriz de enumeraciones | 2 | Define cómo está disponible la pestaña en SharePoint. Las opciones son sharePointFullPage y sharePointWebPart . |
staticTabs
Opcional : matriz
Define un conjunto de pestañas que se pueden anclar de forma predeterminada, sin que el usuario las agregue manualmente. Las pestañas estáticas declaradas en el ámbito personal
siempre se anclan a la experiencia personal de la aplicación. Actualmente no se admiten las pestañas estáticas declaradas en el ámbito team
.
Este elemento es una matriz (con un máximo de 16 elementos) y todos los elementos de tipo object
. Este bloque solo es necesario para las soluciones que proporcionan una solución de pestaña estática.
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
entityId |
String | 64 caracteres | ✔️ | Un identificador único de la entidad que la pestaña muestra. |
name |
Cadena | 128 caracteres | Nombre para mostrar de la pestaña. | |
contentUrl |
Cadena | 2048 caracteres | La https:// dirección URL que apunta a la interfaz de usuario de entidad que se mostrará en el lienzo de Teams. | |
contentBotId |
Cadena | 128 caracteres | El identificador de aplicación de Microsoft especificado para el bot en el portal de Bot Framework. | |
websiteUrl |
Cadena | 2048 caracteres | La dirección URL de https:// a la que apuntar si un usuario opta por la vista en un explorador. | |
searchUrl |
Cadena | 2048 caracteres | La dirección URL de https:// a la que apuntar para las consultas de búsqueda de un usuario. | |
scopes |
Matriz de enumeraciones | 3 | ✔️ | Valores aceptados: team , , personal groupChat |
context |
Matriz de enumeraciones | 8 | Conjunto de contextItem contextos en los que se admite una pestaña. Valores aceptados: personalTab , channelTab , , privateChatTab , meetingDetailsTab meetingChatTab , meetingStage , , teamLevelApp meetingSidepanel . Valores predeterminados: , , , , meetingDetailsTab meetingChatTab . privateChatTab channelTab personalTab |
Nota:
- Los
groupChat
ámbitos yteam
solo se admiten en la versión preliminar del desarrollador público. - El
teamLevelApp
contexto solo está dedicado a los inquilinos de Education. - La
searchUrl
característica no está disponible para los desarrolladores de terceros. - Si las pestañas requieren información dependiente del contexto para mostrar contenido relevante o para iniciar un flujo de autenticación, consulte para obtener más información Obtener contexto para la pestaña de Microsoft Teams.
bots
Opcional : matriz
Define una solución de bot, junto con información opcional, como las propiedades de comando predeterminadas.
El elemento es una matriz (máximo de un solo elemento, actualmente solo se permite un bot por aplicación) con todos los elementos del tipo object
. Este bloque solo es necesario para las soluciones que proporcionan una experiencia de bot.
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
botId |
Cadena | ✔️ | El ID. de aplicación de Microsoft único para el bot, registrado con Bot Framework. El id. puede ser el mismo que el id. general de la aplicación. | |
scopes |
Matriz de enumeraciones | 3 | ✔️ | Especifica si el bot ofrece una experiencia en el contexto de un canal en un team , en un chat de grupo (groupChat ) o una experiencia específica para un solo usuario (personal ). Estas opciones no son exclusivas. |
needsChannelSelector |
Booleano | Describe si el bot usa o no usa una sugerencia del usuario para agregar el bot a un canal específico. Predeterminado: false |
||
isNotificationOnly |
Booleano | Indica si un bot es un bot unidireccional de solo notificación o un bot de conversación. Predeterminado: false |
||
supportsFiles |
Booleano | Indica si el bot es compatible con la capacidad para cargar y descargar archivos en chat personal. Predeterminado: false |
||
supportsCalling |
Booleano | Valor que indica dónde admite llamadas de audio un bot. IMPORTANTE: esta propiedad es actualmente experimental. Las propiedades experimentales pueden estar incompletas y pueden experimentar cambios antes de que estén totalmente disponibles. La propiedad se proporciona solo con fines de prueba y exploración y no se debe usar en aplicaciones de producción. Predeterminado: false |
||
supportsVideo |
Booleano | Valor que indica dónde admite llamadas de vídeo un bot. IMPORTANTE: esta propiedad es actualmente experimental. Las propiedades experimentales pueden estar incompletas y pueden experimentar cambios antes de que estén totalmente disponibles. La propiedad se proporciona solo con fines de prueba y exploración y no se debe usar en aplicaciones de producción. Predeterminado: false |
bots.commandLists
Lista de comandos que el bot puede recomendar a los usuarios. El objeto es una matriz (máximo de dos elementos) con todos los elementos de tipoobject
; usted debe definir una lista de comandos independiente para cada ámbito que admita el bot. Para obtener más información, consulte Menús de bot.
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
items.scopes |
Matriz de enumeraciones | 3 | ✔️ | Especifica el ámbito para el que la lista de comandos es válida. Las opciones son team , personal y groupChat . |
items.commands |
Matriz de objetos | 10 | ✔️ | Una matriz de comandos que el bot admite:title : el nombre de comando del bot (cadena, 32)description : una descripción o un ejemplo sencillos de la sintaxis del comando y su argumento (cadena, 128). |
bots.commandLists.commands
Nombre | Tipo | Tamaño máximo | Necesario | Description |
---|---|---|---|---|
title | Cadena | 32 | ✔️ | Nombre del comando del bot. |
description | Cadena | 128 caracteres | ✔️ | Una descripción del texto o un ejemplo sencillos de la sintaxis del comando y sus argumentos. |
conectores
Opcional : matriz
El connectors
bloque define una tarjeta de conector para Grupos de Microsoft 365 para la aplicación.
El objeto es una matriz (con un máximo de un elemento) y todos los elementos de tipo object
. Este bloque solo es necesario para las soluciones que proporcionan un conector.
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
configurationUrl |
Cadena | 2048 caracteres | ✔️ | Dirección URL de https:// que se va a usar al configurar el conector mediante la experiencia de configuración insertada. |
scopes |
Matriz de enumeraciones | 1 | ✔️ | Especifica si el conector ofrece una experiencia en el contexto de un canal en un team o una experiencia específica para un solo usuario (personal ). Actualmente, solo se admite el ámbito team . |
connectorId |
String | 64 caracteres | ✔️ | Un identificador único del conector que coincide con su identificador en el Panel de desarrolladores de conectores. |
composeExtensions
Opcional : matriz
Define una extensión de mensajería para la aplicación.
Nota:
El nombre de la característica se cambió de "extensión de redacción" a "extensión de mensaje" en noviembre de 2017, pero el nombre del manifiesto de la aplicación sigue siendo el mismo para que las extensiones existentes sigan funcionando.
El elemento es una matriz (máximo de un elemento) con todos los elementos de tipo object
. Este bloque solo es necesario para las soluciones que proporcionan una extensión de mensajería.
Nombre | Tipo | Tamaño máximo | Obligatorio | Descripción |
---|---|---|---|---|
botId |
Cadena | ✔️ | El id. único de la aplicación de Microsoft para el bot que respalda la extensión de mensajería, tal como está registrado con el Bot Framework. El id. puede ser el mismo que el id. de aplicación general. | |
commands |
Matriz de objetos | 10 | ✔️ | Matriz de comandos que admite la extensión de mensajería. |
canUpdateConfiguration |
Boolean | Valor que indica si el usuario puede actualizar la configuración de una extensión de mensaje. Valor predeterminado: false. | ||
messageHandlers |
Matriz de objetos | 5 | Una lista de controladores que permiten invocar aplicaciones cuando se cumplen determinadas condiciones. | |
messageHandlers.type |
String | Tipo de controlador de mensajes. Debe ser "link" . |
||
messageHandlers.value.domains |
Matriz de cadenas | 2048 caracteres | Matriz de dominios para los que se puede registrar el controlador de mensajes de vínculo. | |
messageHandlers.value.supportsAnonymizedPayloads |
Booleano | Valor booleano que indica si el controlador de mensajes de vínculo de la aplicación admite el flujo de invocación anónimo. El valor predeterminado es false. |
composeExtensions.commands
Su extensión de mensajería debe declarar uno o más comandos con un máximo de 10 comandos. Cada comando aparece en Microsoft Teams como una posible interacción desde el punto de entrada basado en la interfaz de usuario.
Cada elemento de comando es un objeto con la estructura siguiente:
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
id |
String | 64 caracteres | ✔️ | Id. para el comando. |
title |
Cadena | 32 caracteres | ✔️ | Nombre del comando fácil de usar. |
type |
Cadena | Tipo de comando. Uno de query o action . Valor predeterminado: consulta. |
||
description |
Cadena | 128 caracteres | Descripción que aparece a los usuarios para indicar el propósito de este comando. | |
initialRun |
Booleano | Un valor booleano indica si el comando se ejecuta inicialmente sin parámetros. El valor predeterminado es false. | ||
context |
Matriz de cadenas | 3 | Define desde dónde se puede invocar la extensión de mensaje. Cualquier combinación de compose ,commandBox ,message . El valor predeterminado es ["compose","commandBox"] . |
|
fetchTask |
Booleano | Valor booleano que indica si debe capturar el módulo de tareas dinámicamente. El valor predeterminado es false. | ||
taskInfo |
Objeto | Especifique el módulo de tareas que se va a cargar previamente al usar un comando de extensión de mensajería. | ||
taskInfo.title |
String | 64 caracteres | Título del cuadro de diálogo inicial. | |
taskInfo.width |
Cadena | Ancho del cuadro de diálogo: un número en píxeles o un diseño predeterminado como "grande", "mediano" o "pequeño". | ||
taskInfo.height |
Cadena | Alto del cuadro de diálogo: un número en píxeles o un diseño predeterminado como "grande", "mediano" o "pequeño". | ||
taskInfo.url |
Cadena | Dirección URL de la vista web inicial. | ||
parameters |
Matriz de objeto | 5 elementos | ✔️ | Lista de parámetros que toma el comando. Mínimo: 1; máximo: 5. |
parameters.name |
String | 64 caracteres | ✔️ | Nombre del parámetro tal como aparece en el cliente. El nombre del parámetro se incluye en la solicitud de usuario. |
parameters.title |
Cadena | 32 caracteres | ✔️ | Título fácil de usar para el parámetro. |
parameters.description |
Cadena | 128 caracteres | Cadena fácil de usar que describe el propósito de este parámetro. | |
parameters.value |
Cadena | 512 caracteres | Valor inicial del parámetro. Actualmente no se admite el valor | |
parameters.inputType |
Cadena | Define el tipo de control que se muestra en un módulo de tareas para fetchTask: false . El valor de entrada solo puede ser uno de text, textarea, number, date, time, toggle, choiceset . |
||
parameters.choices |
Matriz de objetos | 10 elementos | Las opciones de elección para el choiceset . Use solo cuando parameter.inputType sea choiceset . |
|
parameters.choices.title |
Cadena | 128 caracteres | ✔️ | Título de la elección. |
parameters.choices.value |
Cadena | 512 caracteres | ✔️ | Valor de la elección. |
permissions
Opcional : matriz de cadenas
Matriz de string
, que especifica qué permisos solicita la aplicación, lo que permite a los usuarios finales saber cómo funciona la extensión. Las siguientes opciones no son exclusivas:
identity
Requiere información de identidad de usuario.messageTeamMembers
Requiere permiso para enviar mensajes directos a los miembros del equipo.
Al cambiar estos permisos durante la actualización de la aplicación, los usuarios repiten el proceso de consentimiento después de ejecutar la aplicación actualizada. Para obtener más información, consulte Actualizar la aplicación.
Nota:
Actualmente, los permisos están en desuso.
devicePermissions
Opcional : matriz de cadenas
Proporciona las características nativas en el dispositivo de un usuario al que la aplicación solicita acceso. Las opciones son:
geolocation
media
notifications
midi
openExternal
validDomains
Opcional, excepto cuando se indique que es necesario.
Una lista de dominios válidos para sitios web que la aplicación espera cargar en el cliente de Teams. Las listas de dominios pueden incluir caracteres comodín, por ejemplo *.example.com
. El dominio válido coincide exactamente con un segmento del dominio; si necesita que coincida con a.b.example.com
entonces use *.*.example.com
. Si la configuración de pestañas o la interfaz de usuario de contenido navega a cualquier otro dominio que no sea la configuración de pestañas, ese dominio debe especificarse aquí.
No incluya los dominios de proveedores de identidades que desea admitir en la aplicación. Por ejemplo, para autenticarse mediante un identificador de Google, es necesario redirigir a accounts.google.com, pero no debe incluir accounts.google.com en validDomains[]
.
Las aplicaciones de Teams que requieren sus propias direcciones URL de SharePoint para funcionar bien, incluyen " {teamsitedomain}" en su lista de dominios válidos.
Importante
No agregue dominios que estén fuera del control, ya sea directamente o mediante caracteres comodín (). Por ejemplo,.yoursite.com es válido, pero *.onmicrosoft.com no es válido, ya que no está bajo su control.
Cuando se usan caracteres comodín, se aplican las reglas siguientes:
- Si un segmento de subdominio incluye un carácter comodín, debe ser el único carácter del segmento.
- Cualquier segmento anterior a un segmento con caracteres comodín también debe ser un segmento comodín.
Por ejemplo, *.*.domain.com es válido, pero foo.*.myteam.domain.com no es válido.
El objeto es una matriz con todos los elementos del tipo string
. El elemento máximo del objeto es 16 y la longitud máxima es de 2048 caracteres.
WebApplicationInfo
Opcional : objeto
Proporcione su Microsoft Entra id. de aplicación y la información de Microsoft Graph para ayudar a los usuarios a iniciar sesión sin problemas en la aplicación. Si la aplicación está registrada en Microsoft Entra id., debe proporcionar el identificador de aplicación. Los administradores pueden revisar fácilmente los permisos y conceder consentimiento en el Centro de administración de Teams.
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
id |
String | ✔️ | Microsoft Entra identificador de aplicación de la aplicación. Este identificador debe ser un GUID. | |
resource |
Cadena | 2048 caracteres | Dirección URL de recurso de la aplicación para adquirir el token de autenticación para SSO. NOTA: Si no usa el inicio de sesión único, asegúrese de escribir un valor de cadena ficticio en este campo en el manifiesto de la aplicación, por ejemplo, https://example para evitar una respuesta de error. |
graphConnector
Opcional : objeto
Especifique la configuración del conector de Graph de la aplicación. Si está presente, también debe especificarse webApplicationInfo.id .
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
notificationUrl |
Cadena | 2048 caracteres | ✔️ | Dirección URL a la que se deben enviar las notificaciones del conector de Graph para la aplicación. |
showLoadingIndicator
Opcional : booleano
Indica si se va a mostrar o no el indicador de carga cuando se carga una aplicación o pestaña. El valor predeterminado es false.
Nota:
- Si selecciona
showLoadingIndicator
como true en el manifiesto de la aplicación, para cargar la página correctamente, modifique las páginas de contenido de las pestañas y módulos de tareas como se describe en Mostrar un documento de indicador de carga nativo . - Si no modifica las páginas de contenido de la pestaña, la aplicación de pestaña no se carga y muestra el error
There was a problem reaching this app
.
IsFullScreen
Opcional : booleano
Indica si una aplicación personal se representa sin una barra de encabezado de pestaña (lo que significa el modo de pantalla completa). El valor predeterminado es false.
Nota:
isFullScreen
solo funciona para las aplicaciones publicadas en su organización. Las aplicaciones de terceros cargadas y publicadas no pueden usar esta propiedad (se omite).isFullScreen=true
quita la barra de encabezado y el título proporcionados por Teams de los cuadros de diálogo de módulos de tareas y aplicaciones personales.
activities
Opcional : objeto
Defina las propiedades que usa la aplicación para publicar una fuente de actividades del usuario.
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
activityTypes |
Matriz de objetos | 128 elementos | Proporciona los tipos de actividades que la aplicación puede publicar en una fuente de actividades de los usuarios. El systemDefault tipo de actividad es una cadena reservada y no válida. |
activities.activityTypes
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
type |
Cadena | 32 caracteres | ✔️ | El tipo de notificación. Véalo a continuación. |
description |
Cadena | 128 caracteres | ✔️ | Una breve descripción de la notificación. Véalo a continuación. |
templateText |
Cadena | 128 caracteres | ✔️ | P. ej.: " {actor} creó la tarea {taskId} para usted" |
{
"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
Opcional : cadena
Especifica el ámbito de instalación definido para esta aplicación de forma predeterminada. El ámbito definido es la opción que se muestra en el botón cuando un usuario intenta agregar la aplicación. Las opciones son:
personal
team
groupChat
meetings
defaultGroupCapability
Opcional : objeto
Cuando se selecciona un ámbito de instalación de grupo, define la funcionalidad predeterminada cuando el usuario instala la aplicación. Las opciones son:
team
groupChat
meetings
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
team |
Cadena | Cuando el ámbito de instalación seleccionado es team , este campo especifica la funcionalidad predeterminada disponible. Opciones: tab , bot o connector . |
||
groupChat |
Cadena | Cuando el ámbito de instalación seleccionado es groupChat , este campo especifica la funcionalidad predeterminada disponible. Opciones: tab , bot o connector . |
||
meetings |
Cadena | Cuando el ámbito de instalación seleccionado es meetings , este campo especifica la funcionalidad predeterminada disponible. Opciones: tab , bot o connector . |
configurableProperties
Opcional : matriz
El bloque configurableProperties
define las propiedades de la aplicación que los administradores de Teams pueden personalizar. Para más información, consulte Habilitar la personalización de aplicaciones. La característica de personalización de aplicaciones no se admite en aplicaciones personalizadas o aplicaciones personalizadas creadas para su organización (aplicaciones LOB).
Nota:
Se debe definir una propiedad como mínimo. Puede definir un máximo de nueve propiedades en este bloque.
Puede definir cualquiera de las siguientes propiedades:
- name: nombre para mostrar de la aplicación.
- shortDescription: descripción breve de la aplicación.
- longDescription: la descripción larga de la aplicación.
- smallImageUrl: icono de esquema de la aplicación.
- largeImageUrl: icono de color de la aplicación.
- accentColor: el color que se va a usar y un fondo para los iconos de esquema.
- developerUrl: dirección URL HTTPS del sitio web del desarrollador.
- privacyUrl: dirección URL HTTPS de la directiva de privacidad del desarrollador.
- termsOfUseUrl: dirección URL HTTPS de los términos de uso del desarrollador.
supportedChannelTypes
Opcional : matriz
Habilita la aplicación en canales no estándar. Si la aplicación admite un ámbito de equipo y se define esta propiedad, Teams habilita la aplicación en cada tipo de canal en consecuencia. La propiedad supportedChannelTypes solo admite sharedChannels
y privateChannels
.
Nota:
- Si la aplicación admite un ámbito de equipo, funciona en los canales estándar, independientemente de los valores definidos en esta propiedad.
- La aplicación puede tener en cuenta las propiedades únicas de cada uno de los tipos de canal para que funcione correctamente. Para habilitar la pestaña para canales privados y compartidos, consulte recuperación del contexto en canales privados y obtención del contexto en canales compartidos.
defaultBlockUntilAdminAction
Opcional : booleano
Cuando la propiedad defaultBlockUntilAdminAction
se establece en true, la aplicación se oculta a los usuarios de forma predeterminada hasta que el administrador la permita. Si se establece en true, la aplicación se oculta para todos los inquilinos y usuarios finales. Los administradores de inquilinos pueden ver la aplicación en el Centro de administración de Teams y tomar medidas para permitir o bloquear la aplicación. El valor predeterminado es False. Para obtener más información sobre el bloque de aplicaciones predeterminado, consulte Bloquear aplicaciones de forma predeterminada para los usuarios hasta que un administrador lo apruebe.
publisherDocsUrl
Opcional : cadena
Tamaño máximo : 2048 caracteres
El valor del publisherDocsUrl
parámetro es una dirección URL HTTPS segura para la página de documentación e información de la aplicación que los desarrolladores de aplicaciones deciden proporcionar. Los administradores de inquilinos obtienen documentación sobre la aplicación en esta dirección URL. El Centro de administración de Teams muestra la dirección URL en la página de detalles de la aplicación. La documentación puede incluir las instrucciones para que los administradores faciliten la adopción de aplicaciones y el lanzamiento de aplicaciones. En la documentación de la aplicación, también puede incluir instrucciones o información sobre la aplicación que sea útil para el administrador de inquilinos, los usuarios y otras partes interesadas de la empresa.
subscriptionOffer
Opcional : objeto
Especifica la oferta de SaaS asociada a la aplicación.
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
offerId |
string | 2 048 caracteres | ✔️ | Identificador único que incluye el identificador del publicador y el identificador de la oferta, que puede encontrar en Centro de partners. Debe dar formato a la cadena como publisherId.offerId . |
meetingExtensionDefinition
Opcional : objeto
Especifique la definición de la extensión de reunión. Para obtener más información, vea escenas personalizadas del Modo conferencia en Teams
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
scenes |
matriz de objetos | 5 elementos | Escenas admitidas de la reunión. | |
supportsStreaming |
Boolean | Valor que indica si una aplicación puede transmitir el contenido de audio y vídeo de la reunión a un punto de conexión del protocolo de reunión en tiempo real (RTMP). El valor predeterminado es False. | ||
supportsAnonymousGuestUsers |
Booleano | Valor que indica si una aplicación admite el acceso de usuarios anónimos. El valor predeterminado es False. |
meetingExtensionDefinition.scenes
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
id |
Cadena | ✔️ | Identificador único de la escena. Este identificador debe ser un GUID. | |
name |
Cadena | 128 caracteres | ✔️ | Nombre de la escena. |
file |
Cadena | 2048 caracteres | ✔️ | Ruta de acceso relativa al archivo JSON de metadatos de las escenas. |
preview |
Cadena | 2048 caracteres | ✔️ | Ruta de acceso relativa del archivo al icono de vista previa PNG de las escenas. |
maxAudience |
Entero | 50 | ✔️ | Número máximo de audiencias admitidas en la escena. |
seatsReservedForOrganizersOrPresenters |
Entero | 50 | ✔️ | Número de puestos reservados para organizadores o moderadores. |
Autorización
Opcional : objeto
Nota:
authorization
solo se admite para la versión 1.12 o posterior del manifiesto de la aplicación.
Especifique y consolide la información relacionada con la autorización de la aplicación.
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
permissions |
Object | Lista de permisos que la aplicación necesita para funcionar. |
authorization.permissions
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
resourceSpecific |
Matriz de objetos | 16 elementos | Permisos que protege el acceso a los datos en el nivel de instancia de recursos. |
authorization.permissions.resourceSpecific
Nombre | Tipo | Tamaño máximo | Necesario | Descripción |
---|---|---|---|---|
type |
Cadena | ✔️ | Tipo del permiso de consentimiento específico del recurso (RSC). Opciones: Application y Delegated . |
|
name |
Cadena | 128 caracteres | ✔️ | Nombre del permiso RSC. Para obtener más información, consulte Permisos de aplicación de RSC y permisos delegados de RSC. |
Permisos de aplicación de RSC
Los permisos de aplicación permiten a la aplicación acceder a los datos sin que un usuario haya iniciado sesión. Para obtener información sobre los permisos de aplicación, consulte Permisos de RSC para Microsoft Graph y Microsoft BotSDK.
Permisos delegados de RSC
Los permisos delegados permiten a la aplicación acceder a los datos en nombre del usuario que ha iniciado sesión.
Permisos delegados de RSC para un equipo
Nombre Descripción ChannelMeetingParticipant.Read.Group
Permite que la aplicación lea la información de los participantes, incluidos el nombre, rol, identificador, horas de unión y salida de las reuniones de canal asociadas a este equipo, en nombre del usuario que ha iniciado sesión. ChannelMeetingIncomingAudio.Detect.Group
Permite que la aplicación detecte el audio entrante en las reuniones de canal asociadas al equipo. ChannelMeetingActiveSpeaker.Read.Group
Permite que la aplicación lea a los participantes que actualmente envían audio a las reuniones del canal asociadas con el equipo. ChannelMeetingAudioVideo.Stream.Group
Permite que la aplicación transmita contenido de audio y vídeo desde las reuniones de canal asociadas al equipo. InAppPurchase.Allow.Group
Permite que la aplicación muestre las ofertas de Marketplace a los usuarios del equipo y complete sus compras dentro de la aplicación, en nombre del usuario que ha iniciado sesión. ChannelMeetingStage.Write.Group
Permite que la aplicación muestre contenido en la fase de reunión en las reuniones de canal asociadas al equipo, en nombre del usuario que ha iniciado sesión. LiveShareSession.ReadWrite.Group
Permite a la aplicación crear y sincronizar sesiones de Live Share para reuniones asociadas con el equipo y acceder a información relacionada sobre la lista de la reunión, como el rol de reunión del miembro, en nombre del usuario que ha iniciado sesión. MeetingParticipantReaction.Read.Group
Permite a la aplicación leer las reacciones de los participantes en las reuniones de canal asociadas con el equipo. Permisos delegados de RSC para chats o reuniones
Nombre Descripción InAppPurchase.Allow.Chat
Permite a la aplicación mostrar las ofertas de Marketplace a los usuarios en el chat, y cualquier reunión asociada, y completar sus compras dentro de la aplicación, en nombre del usuario que ha iniciado sesión. MeetingStage.Write.Chat
Permite que la aplicación muestre contenido en la fase de reunión en las reuniones asociadas al chat, en nombre del usuario que ha iniciado sesión. OnlineMeetingParticipant.Read.Chat
Permite que la aplicación lea la información de los participantes, incluidos el nombre, el rol, el identificador, las horas unidas y las horas izquierdas, de la reunión asociada al chat, en nombre del usuario que ha iniciado sesión. OnlineMeetingParticipant.ToggleIncomingAudio.Chat
Permite a la aplicación alternar el audio entrante para los participantes en las reuniones asociadas al chat, en nombre del usuario que ha iniciado sesión. LiveShareSession.ReadWrite.Chat
Permite que la aplicación cree y sincronice sesiones de Live Share para las reuniones asociadas al chat y acceda a información relacionada sobre la lista de la reunión, como el rol de reunión del miembro, en nombre del usuario que ha iniciado sesión. MeetingParticipantReaction.Read.Chat
Permite a la aplicación leer las reacciones de los participantes en las reuniones asociadas al chat. OnlineMeetingIncomingAudio.Detect.Chat
Permite que la aplicación detecte cambios en el estado del audio entrante en las reuniones asociadas al chat, en nombre del usuario que ha iniciado sesión. OnlineMeetingActiveSpeaker.Read.Chat
Permite que la aplicación lea a los participantes que actualmente envían audio a las reuniones asociadas al chat. OnlineMeetingAudioVideo.Stream.Chat
Permite que la aplicación transmita contenido de audio y vídeo de las reuniones asociadas al chat. Permisos delegados de RSC para los usuarios
Nombre Descripción CameraStream.Read.User
Permite que la aplicación lea la secuencia de cámara del usuario. InAppPurchase.Allow.User
Permite que la aplicación muestre las ofertas de Marketplace del usuario y complete las compras del usuario dentro de la aplicación, en nombre del usuario que ha iniciado sesión. OutgoingVideoStream.Write.User
Permite que la aplicación modifique el vídeo saliente del usuario. MicrophoneStream.Read.User
Permite que la aplicación lea el flujo de micrófono del usuario. MeetingParticipantReaction.Read.User
Permite que la aplicación lea las reacciones del usuario mientras participa en una reunión.
Creación de un archivo de manifiesto de aplicación
Si la aplicación no tiene un archivo de manifiesto de aplicación, debe crearlo.
Para crear un archivo de manifiesto de aplicación:
- Use el esquema de manifiesto de aplicación de ejemplo para crear un archivo .json.
- Guárdelo en la raíz de la carpeta del proyecto como
manifest.json
.
Este es un ejemplo del esquema de manifiesto de aplicación para una aplicación de pestaña con sso habilitado:
Nota:
El contenido de ejemplo de manifiesto de aplicación que se muestra aquí es solo para una aplicación de pestaña. Usa valores de ejemplo para el URI de subdominio. Para obtener más información, consulte esquema de manifiesto de aplicación de ejemplo.
{
"$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 Microsoft Entra 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://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": "{Microsoft Entra AppId}",
"resource": "api://subdomain.example.com/{Microsoft Entra AppId}"
}
}