Directrices para crear o actualizar un complemento de extensión de mensaje para Copilot para Microsoft 365

Importante

  • Los complementos para Microsoft Copilot para Microsoft 365 están en versión preliminar y solo funcionan en Microsoft 365 Chat en Microsoft Teams.
  • Asegúrese de que Copilot para Microsoft 365 está disponible para su organización. Tiene dos maneras de obtener un entorno de desarrollador para Copilot:
    • Un inquilino de Espacio aislado de Microsoft 365 con Copilot (disponible en versión preliminar limitada mediante la pertenencia a TAP).
    • Entorno de producción de clientes empresariales con licencias de Microsoft Copilot para Microsoft 365.

Los complementos de Microsoft 365 proporcionan integración con varios productos de Microsoft 365, como Teams y Outlook. La integración ayuda a los usuarios a buscar o crear contenido en sistemas externos. Los complementos de extensión de mensaje permiten que Microsoft Copilot para Microsoft 365 interactúen con las API de otros servicios y software a través de un bot. Con Copilot para Microsoft 365, puede:

  • Búsqueda para obtener la información o el registro más recientes. Por ejemplo, el último vale de incidente o los resultados de la encuesta.
  • Resumir información basada en varios registros. Por ejemplo, resuma todos los vales de incidentes relacionados con el proyecto Northwind.

Se recomienda compilar o actualizar las extensiones de mensaje existentes para maximizar su utilidad y facilidad de uso en Copilot para Microsoft 365. Las extensiones de mensaje deben admitir uno o varios comandos de búsqueda, ya que Copilot para Microsoft 365 las reconoce como aptitudes que puede ejecutar en nombre del usuario. Además, las extensiones deben cumplir los estándares de cumplimiento, rendimiento, seguridad y experiencia del usuario descritos en este artículo.

Gráfico que muestra la experiencia del usuario entre Microsoft Teams y Copilot para Microsoft 365 (chat de M365).

Requisitos obligatorios

Los requisitos para compilar complementos de extensión de mensaje para Copilot para Microsoft 365 incluyen:

Definir descripciones

Una buena descripción ofrece un resumen claro y conciso de las características de la aplicación y permite Copilot para Microsoft 365 detectar y ejecutar operaciones de búsqueda de forma eficaz. Cuando un usuario escribe el nombre de la aplicación junto con un verbo, por ejemplo, Buscar vales de Contoso, el complemento de extensión de mensaje debe invocarse desde Copilot para Microsoft 365 (Chat de M365).

Captura de pantalla que muestra un escenario de paso con un ejemplo de un símbolo del sistema de ejemplo para el complemento de extensión de mensaje en M365 Chat.

Captura de pantalla que muestra un escenario de error sin un ejemplo de solicitud de ejemplo de extensión de mensaje como complemento en M365 Chat.

Asegúrese de cumplir las instrucciones de descripción que se enumeran en la tabla siguiente:

Acción Reason
Anti-Compete: evite usar el nombre de cualquier otro complemento en descripciones cortas y largas.
IA responsable: evite el uso de palabras clave inapropiadas o ofensivas.
Inyecciones de mensajes: asegúrese de que las descripciones no guían a Copilot para realizar acciones que omitan el funcionamiento normal de la aplicación. Además, la descripción no debe contener símbolos ni texto que indiquen que se puede usar como código para la inyección de mensajes. Evite usar frases, funciones y código que llamen a una aplicación de forma periódica.

Descripción de la aplicación

Las descripciones de aplicaciones largas y cortas deben ser claras y definir el ámbito de la aplicación. Para representar una aplicación como complemento en Copilot para Microsoft 365, modifique la descripción de la aplicación para que se adapte a los siguientes requisitos de complemento:

  • La descripción larga debe explicar claramente la funcionalidad y el uso del complemento de extensión de mensaje en Copilot para Microsoft 365. Por ejemplo, use la nube de Contoso en Copilot para Microsoft 365 para buscar y resumir las tareas.
  • La descripción breve debe describir brevemente la funcionalidad de la aplicación en un lenguaje natural y puede incluir el nombre de la aplicación.

En la tabla siguiente se enumeran los ejemplos de descripción breves para cada categoría:

Descripción: crear, buscar, ver incidencias, errores y proyectos.

Ejemplo de descripción de la aplicación:

{
  "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.13/MicrosoftTeams.schema.json",
  "version": "1.0.0",
  "manifestVersion": "1.13",
  "id": "2bxxxxc5-5xxx-4xxx-aXXX-94xxxx8919e5",
  "name": {
    "short": "Tasks",
    "full": "Contoso Tasks"
  },
  "description": {
    "short": "Create, search, view tickets, bugs, and projects",
    "full": "Contoso Tasks makes it easy to stay organized. Create, assign, and track tasks individually or collaboratively with your team, and see everything come together in one place."
  },

Búsqueda descripción del comando

Descripción del comando asigna la intención y la expresión del usuario al comando de búsqueda dentro de un complemento y debe compilarse en función del análisis de la intención del usuario y las palabras clave. Búsqueda descripciones de comandos deben:

  • Céntrese en qué y cómo busca el comando (lista detallada) en lenguaje natural.
  • Incluya verbos y sinónimos, si procede.
  • Céntrese en las palabras clave que probablemente se usarán en la función de búsqueda de las aplicaciones nativas.

Descripción semántica

La propiedad semanticDescription se usa para proporcionar una descripción detallada de un comando para Copilot para Microsoft 365. La descripción semántica de los comandos admite hasta 5000 caracteres y no se muestra en la interfaz de usuario. Si la semanticDescription propiedad se deja vacía, Copilot para Microsoft 365 usa la información del description campo. Al escribir un semanticDescription, debe incluir información sobre los valores esperados, los límites y los intervalos para el comando.

La semanticDescription propiedad no es un campo obligatorio. Sin embargo, si agrega semanticDescription en el manifiesto de la aplicación, las comprobaciones de validación existentes para obtener descripciones breves, de parámetros y de comandos también se aplican a las descripciones semánticas.

Te recomendamos que revises las siguientes directrices para obtener una descripción semántica para aumentar las posibilidades de que la aplicación pase el proceso de envío de Microsoft Teams Store:

  • Evite frases de instrucciones como "si el usuario dice X", "ignore", "delete", "reset", "new instructions", "Answer in Bold" o "Don't print anything". [Corrección obligatoria]
  • Evite direcciones URL, emojis o caracteres ocultos, como símbolos hexadecimales, binarios o no convencionales. [Corrección obligatoria]
  • Evite errores de gramática y puntuación. [Corrección obligatoria]
  • Evite un lenguaje excesivamente detallado, floral o de marketing. [Corrección sugerida]
  • Evite notificaciones superlativas como "#1", "increíble" o "mejor". [Corrección sugerida]

En la tabla siguiente se enumeran los ejemplos de comando y descripción semántica para cada categoría:

Descripción: Búsqueda para las tareas de prioridad alta relacionadas con Northwind que vencen mañana.

Ejemplo de descripción de comandos:

"commands": [
        {
          "id": "Search",
          "type": "query",
          "title": "Tasks",
          "description": "Search for high priority tasks related to Northwind that are due tomorrow.",
          "SemanticDescription": "Search for issues, epics, stories, tasks, sub tasks, bugs + additional details."
          "initialRun": true,
          "fetchTask": false,
          "context": [
            "commandBox",
            "compose",
            "message"
          ],

Descripción del parámetro

Cada comando de extensión de mensaje compatible tiene una propiedad 'parameters' correspondiente que admite hasta cinco parámetros y el primer parámetro debe estar visible en la barra de búsqueda de la extensión de mensaje. Un parámetro debe tener una buena descripción, que debe contener una combinación de parámetros aceptables, enumeraciones, acrónimos y formato de salida.

La propiedad semanticDescription se usa para proporcionar una descripción detallada de un comando para Microsoft Copilot. La descripción semántica de los parámetros admite hasta 2000 caracteres y no se muestra en la interfaz de usuario. Si la semanticDescription propiedad se deja vacía, Copilot usa la información en el description campo . Al escribir un semanticDescription, debe incluir información sobre los valores esperados, los límites y los intervalos para el comando.

Una buena descripción de parámetros explica los requisitos del sistema en un lenguaje natural con formato de salida. A continuación se muestran algunos ejemplos de solicitudes de búsqueda básicas y avanzadas para cada categoría:

Búsqueda básica: Búsqueda para las tareas relacionadas con Northwind.
Búsqueda avanzada: Búsqueda para las tareas de prioridad alta relacionadas con Northwind que vencen mañana.

Ejemplo de descripción de parámetros:

"parameters": [
    {
        "name": "Name",
        "title": "Project or Task Name",
        "description": "Project name or task name as keyword.",
        "inputType": "text"
    },
    {
        "name": "Time",
        "title": "Time",
        "description": "Date or number of days for which you need tasks for.",
        "semanticDescription": "Date or number of days for which you need tasks for. Output: Number",
        "inputType": "text"
    },
    {
        "name": "Priority",
        "title": "Priority",
        "description": "Priority of tasks.",
        "semanticDescription": "Priority of tasks. Acceptable values are high, medium, low, NA",
        "inputType": "text"
    }] 

Expresiones compuestas

Nota:

Búsqueda a través del cuadro de diálogo (denominado módulo de tareas en TeamsJS v1.x) no se admite en el chat de M365.

Para M365 Chat, una extensión de mensaje basada en búsqueda debe admitir más de tres expresiones compuestas únicas para realizar una recuperación profunda de información precisa. Para habilitar expresiones compuestas, debe expandir el ámbito de búsqueda para controlar tres o más parámetros de búsqueda actualizando el manifiesto de aplicación (anteriormente denominado manifiesto de aplicación de Teams) y asegúrese de lo siguiente:

  • Actualice el servicio web para admitir la búsqueda en función de varios parámetros. Para obtener más información sobre cómo responder a las solicitudes de usuario, vea Responder al comando de búsqueda.

  • Copilot para Microsoft 365 puede pasar una cadena vacía o un valor NULL para los parámetros, que no forman parte de la expresión del usuario, actualice el servicio web para controlar los parámetros.

  • Una extensión de mensaje admite hasta 10 comandos (9 utilizables) y cada comando tiene una propiedad correspondiente parameters que admite hasta 5 parámetros.


El código siguiente es un ejemplo de varios parámetros definidos en el manifiesto de la aplicación:
"commands": [
                {
                    "id": "inventorySearch",
                    "context": [
                        "compose",
                        "commandBox"
                    ],
                    "description": "Search products by name, category, inventory status, supplier location, stock level",
                    "title": "Product inventory",
                    "type": "query",
                    "parameters": [
                        {
                            "name": "productName",
                            "title": "Product name",
                            "description": "Enter a product name here",
                            "inputType": "text"
                        },
                        {
                            "name": "categoryName",
                            "title": "Category name",
                            "description": "Enter the category of the product",
                            "inputType": "text"
                        },
                        {
                            "name": "inventoryStatus",
                            "title": "Inventory status",
                            "description": "Enter what status of the product inventory. Possible values are 'in stock', 'low stock', 'on order', or 'out of stock'",
                            "inputType": "text"
                        },
                        {
                            "name": "supplierCity",
                            "title": "Supplier city",
                            "description": "Enter the supplier city of product",
                            "inputType": "text"
                        },
                        {
                            "name": "stockQuery",
                            "title": "Stock level",
                            "description": "Enter a range of integers such as 0-42 or 100- (for >100 items). Only use if you need an exact numeric range.",
                            "inputType": "text"
                        }
                    ]
                },
                {
                    "id": "discountSearch",
                    "context": [
                        "compose",
                        "commandBox"
                    ],
                    "description": "Search for discounted products by category",
                    "title": "Discounts",
                    "type": "query",
                    "parameters": [
                        {
                            "name": "categoryName",
                            "title": "Category name",
                            "description": "Enter the category to find discounted products",
                            "inputType": "text"
                        }
                    ]
                },
                {
                    "id": "revenueSearch",
                    "context": [
                        "compose",
                        "commandBox"
                    ],
                    "description": "Find products based on their revenue/period",
                    "title": "Revenue",
                    "type": "query",
                    "parameters": [
                        {
                            "name": "revenueRange",
                            "title": "Revenue range",
                            "description": "Enter 'high' or 'low' or enter a range of integers such as 0-10000 or 5000- using this exact format",
                            "inputType": "text"
                        }
                    ]
                }
            ]

Captura de pantalla que muestra un ejemplo de un escenario de paso en el que la aplicación Northwind devuelve una respuesta para un marisco y parámetros de stock.

Los parámetros de búsqueda deben tener buenas descripciones con parámetros aceptables, enumeraciones, acrónimos y formato de salida. Para obtener más información y ejemplos, vea Descripción de parámetros.

Solicitudes de ejemplo

La samplePrompts propiedad guía a los usuarios sobre cómo usar los distintos complementos dentro de Copilot. Copilot usa las solicitudes de ejemplo para mostrar las solicitudes del usuario. Los mensajes deben ser adaptables a diferentes configuraciones regionales y borrarse en distintos comandos. Las solicitudes de ejemplo están disponibles en las siguientes áreas dentro de Copilot para Microsoft 365:

  • Primera experiencia de ejecución (FRE): cuando un usuario instala o habilita un complemento por primera vez.
  • Biblioteca de mensajes o Copilot Lab: cuando un usuario busca ayuda con los avisos.
  • Sugerencias de complementos: para guiar a los usuarios hacia mejores expresiones.

Captura de pantalla que muestra los mensajes de ejemplo que se muestran cuando se habilita el complemento de extensión de mensaje en Copilot.

Nota:

  • Si el manifiesto de la aplicación no especifica la samplePrompts propiedad, no se muestran los mensajes.
  • La samplePrompts propiedad es obligatoria para la validación de aplicaciones durante el proceso de envío de la aplicación.
  • Si define varios comandos para la aplicación, se muestran al usuario un máximo de tres mensajes (uno de cada uno de los tres comandos principales). Las solicitudes giran para proporcionar al usuario un conjunto diverso de mensajes en distintos comandos.

Te recomendamos que sigas estas directrices para aumentar las posibilidades de que la aplicación pase el proceso de envío de Microsoft Teams Store:

  • Un complemento debe tener al menos tres mensajes y un máximo de cinco mensajes para cada comando.
  • Cada mensaje no debe superar los 128 caracteres.
  • Dos comandos dentro del mismo complemento no deben tener mensajes idénticos.
  • Las solicitudes de ejemplo deben ser genéricas por naturaleza y no incluir referencias personalizadas. Por ejemplo, nombres de proyecto y nombre de tarea.
  • Todas las solicitudes de ejemplo deben ser funcionales y devolver respuestas.
  • El símbolo del sistema debe ser relevante para los comandos.

El código siguiente es un ejemplo de la propiedad en el samplePrompts manifiesto de la aplicación:

"composeExtensions": [
	{
		"canUpdateConfiguration": true,
		"botId": "bxxxxxx5-xxxx-xxxx-xxxx-4xxxxxx16599",
		"commands": [
			{
				"id": "orders",
				"title": "Orders",
				"context": [
					"Commandbox",
					"Compose"
				],
				"description": "Search for orders",
				"semanticDescription": "Search for orders",
				"samplePrompts": [
					{
						"text": "Search for all orders"
					},
					{
						"text": "Search for orders related to Contoso"
					},
					{
						"text": "Search for all pending orders"
					},
					{
						"text": "Search for all completed ordered for Fabrikam"
					}
				]
			}
		]
	}
]

Respuesta de tarjeta adaptable

Las extensiones de mensaje responden a una entrada de usuario con una tarjeta adaptable. Una tarjeta adaptable para un complemento de extensión de mensaje debe funcionar de forma eficaz, aparecer enriquecida y cumplir los siguientes requisitos:

  • La respuesta de tarjeta adaptable debe incluir contenido de tarjeta adaptable e información de la tarjeta de vista previa como parte de la misma plantilla. [Obligatorio]

    Captura de pantalla que muestra un ejemplo de una aplicación de ejemplo que muestra la respuesta de la aplicación de chat M365 que contiene vista previa y contenido en la misma respuesta.


    Ejemplo de plantilla de respuesta de tarjeta adaptable
    {
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
        "type": "AdaptiveCard",
        "version": "1.5",
        "body": [
          {
            "type": "Container",
            "items": [
              {
                "type": "TextBlock",
                "text": "${companyName}",
                "size": "Medium",
                "wrap": true,
                "style": "heading"
              },
              {
                "type": "TextBlock",
                "text": "${stockExchange} ${stockSymbol}",
                "isSubtle": true,
                "spacing": "None",
                "wrap": true
              },
              {
                "type": "TextBlock",
                "text": "${formattedDate} ${formattedTime}",
                "wrap": true
              }
            ]
          },
          {
            "type": "Container",
            "spacing": "None",
            "items": [
              {
                "type": "ColumnSet",
                "columns": [
                  {
                    "type": "Column",
                    "width": "stretch",
                    "items": [
                      {
                        "type": "TextBlock",
                        "text": "${currentPrice} ",
                        "size": "ExtraLarge",
                        "wrap": true
                      },
                      {
                        "type": "TextBlock",
                        "text": "${priceChange} ${percentChange}",
                        "color": "${changeColor}",
                        "spacing": "None",
                        "wrap": true
                      }
                    ]
                  },
                  {
                    "type": "Column",
                    "width": "auto",
                    "items": [
                      {
                        "type": "FactSet",
                        "facts": [
                          {
                            "title": "Open",
                            "value": "${openPrice} "
                          },
                          {
                            "title": "High",
                            "value": "${highPrice} "
                          },
                          {
                            "title": "Low",
                            "value": "${lowPrice} "
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ],
        "previewCard": {
          "contentType": "application/vnd.microsoft.card.hero",
          "content": {
            "title": "${companyName}",
            "text": "${stockSymbol}"
          }
        }
      }
    
  • Además del logotipo de la aplicación, el título, la miniatura y el título de la información, los datos de la tarjeta adaptable deben representar al menos dos fragmentos de información. Puede identificar los campos de los atributos buscados con más frecuencia, como los datos modificados, el autor, el estado y las marcas. [Obligatorio]

    Captura de pantalla que muestra un ejemplo de título de información, campos de usuario adicionales y botón de acción en una respuesta de tarjeta adaptable.

  • La tarjeta adaptable debe presentarse en escritorio, web y móvil (iOS y Android). [Obligatorio]

  • Una tarjeta adaptable debe contener al menos un botón de acción, pero no más de cuatro botones de acción. [Obligatorio]

    Nota:

    Los tipos de imBackacción , messageBack no se admiten en un objeto de datos.

    Se recomiendan los siguientes tipos de acción:

    • Action.OpenUrl: abre una dirección URL especificada desde la tarjeta.
    • Action.ToggleVisibility: muestra u oculta uno o varios elementos de la tarjeta.
    • Action.Execute: recopila los campos de entrada y los envía como una solicitud al servicio de bot.
    • Action.Submit: abre un cuadro de diálogo o vista previa mediante la invocación de tipo en el objeto de datos.

    El gráfico muestra un ejemplo de los botones de acción Actualizar stock, reposición y Cancelar reposición en una respuesta de tarjeta adaptable en M365 Chat.

  • Si un usuario puede cambiar cualquier información de la tarjeta a través del cuadro de diálogo, vista previa o directamente desde la tarjeta, se recomienda la tarjeta adaptable para admitir acciones universales y la actualización automática. [Recomendado]

  • Las tarjetas adaptables deben incluir una dirección URL como parte de los metadatos, lo que permite que las tarjetas se copien fácilmente de un centro a otro. [Recomendado]

  • Además de las miniaturas, cualquier imagen de una tarjeta adaptable debe tener un texto alternativo. [Recomendado]

Requisitos técnicos

Para que un complemento se valide, invoque y funcione sin problemas, asegúrese de que cumple los siguientes criterios:

Criterios Cumplimiento
Versión del manifiesto La versión del manifiesto de la aplicación debe ser 1.13 o posterior. [Obligatorio]
Canal de Microsoft 365 Para que los usuarios interactúen con la extensión de mensaje desde Outlook, debe agregar el canal de Microsoft 365 al bot. Para obtener más información, vea Agregar canal de Microsoft 365. [Obligatorio]
Tiempo de respuesta El tiempo de respuesta no debe superar los 9 segundos para el 99 por ciento, 5 segundos para el 75 por ciento y 2 segundos para el 50 por ciento. [Obligatorio]
Confiabilidad Las aplicaciones deben mantener una disponibilidad del 99,9 %. Por ejemplo, si Microsoft 365 Chat llama a un complemento 1000 veces, debe proporcionar una respuesta significativa 999 veces. [Obligatorio]
Regresiones cero Si necesita volver a enviar la aplicación para su validación, la funcionalidad de extensión de mensaje existente que funcionaba anteriormente no debe interrumpirse. Este requisito solo se aplica a aplicaciones de proveedor de software independientes (ISV) y no a aplicaciones creadas para su organización. [Obligatorio]
Inicio de sesión único (SSO) Si procede, actualice el registro de la aplicación de Microsoft Entra ID para el inicio de sesión único. [Recomendado]
Directiva de seguridad de contenido Si procede, modifique los encabezados de la directiva de seguridad de contenido. [Recomendado]

Importante

Si procede, actualice los encabezados de la directiva de seguridad de contenido y X-Frame-Options de acuerdo con Configurar encabezados de directiva de seguridad de contenido.

Ejemplos de código

Ejemplo de nombre Descripción TypeScript
Extensión de mensaje de inventario de Northwind En este ejemplo se muestra cómo usar una extensión de mensaje de Teams como complemento en Microsoft Copilot para Microsoft 365. Ver

Consulte también