Ejercicio: Extensión y optimización de extensiones de mensajes para su uso con Microsoft 365 Copilot
En este ejercicio, ampliará y optimizará la extensión de mensaje para su uso con Microsoft 365 Copilot. Agregue un nuevo parámetro denominado Audiencia de destino y actualice la lógica de extensión de mensaje para controlar varios parámetros. Por último, ejecute y depure la extensión de mensaje y pruébela en Copilot en Microsoft Teams.
Actualización de la descripción de la aplicación
Especificar descripciones concisas y precisas en el manifiesto de la aplicación es fundamental para garantizar que Copilot sepa cuándo y cómo invocar el complemento. Actualice las descripciones de la aplicación, el comando y los parámetros en el manifiesto de la aplicación.
Abra Visual Studio y en el proyecto TeamsApp:
En la carpeta appPackage , abra manifest.json
Actualizar el objeto description
{ "description": { "short": "Product look up tool.", "full": "Get real-time product information and share them in a conversation. Search by product name or target audience. ${{APP_DISPLAY_NAME}} works with Microsoft 365 Chat. Find products at Contoso. Find Contoso products called mark8. Find Contoso products named mark8. Find Contoso products related to Mark8. Find Contoso products aimed at individuals. Find Contoso products aimed at businesses. Find Contoso products aimed at individuals with the name mark8. Find Contoso products aimed at businesses with the name mark8." }, }
Adición de un nuevo parámetro
Agregue un nuevo parámetro que Copilot pueda usar. Este nuevo parámetro ayuda a los usuarios a buscar productos con Copilot dirigidos a diferentes audiencias, como individuos y empresas.
Continuar en Visual Studio y en el proyecto TeamsApp:
En la matriz de parámetros , agregue el parámetro TargetAudience después del parámetro ProductName .
{ "parameters": [ { "name": "ProductName", "title": "Product name", "description": "The name of the product as a keyword", "inputType": "text" }, { "name": "TargetAudience", "title": "Target audience", "description": "Audience that the product is aimed at. Consumer products are sold to individuals. Enterprise products are sold to businesses", "inputType": "text" } ] }
Save your changes
En la descripción del parámetro TargetAudience se describe qué es y se explica que el parámetro debe aceptar los valores permitidos consumer o enterprise .
A continuación, actualice la descripción del comando para incluir el nuevo parámetro.
En la matriz de comandos , actualice la descripción del comando.
{ "commands": [ { "id": "Search", "type": "query", "title": "Products", "description": "Find products by name or by target audience", "initialRun": true, "fetchTask": false, "context": [...], "parameters": [...] } ] }
Actualización de la lógica de extensión de mensaje
Para admitir el nuevo parámetro y admitir solicitudes complejas, actualice el método OnTeamsMessagingExtensionQueryAsync en el controlador de actividad del bot para controlar varios parámetros.
En primer lugar, actualice la clase ProductService para recuperar los productos en función de los parámetros de nombre y audiencia.
Continuando en Visual Studio en el proyecto ProductPlugin:
En la carpeta Servicios , abra ProductsService.cs
En el archivo, cree nuevos métodos denominados GetProductsByCategoryAsync y GetProductsByNameAndCategoryAsync.
internal async Task<Product[]> GetProductsByCategoryAsync(string category) { var response = await _httpClient.GetAsync($"{_baseUri}products?category={category}"); response.EnsureSuccessStatusCode(); var jsonString = await response.Content.ReadAsStringAsync(); return System.Text.Json.JsonSerializer.Deserialize<Product[]>(jsonString); } internal async Task<Product[]> GetProductsByNameAndCategoryAsync(string name, string category) { var response = await _httpClient.GetAsync($"{_baseUri}?name={name}&category={category}"); response.EnsureSuccessStatusCode(); var jsonString = await response.Content.ReadAsStringAsync(); return System.Text.Json.JsonSerializer.Deserialize<Product[]>(jsonString); }
Save your changes
A continuación, agregue un nuevo método a la clase MessageExtensionHelper para recuperar productos basados en los parámetros name y audience.
En la carpeta Asistentes , abra MessageExtensionHelper.cs
En el archivo, cree un nuevo método denominado RetrieveProducts que recupere productos basados en los parámetros name y audience.
internal static async Task<IList<Product>> RetrieveProducts(string name, string audience, ProductsService productsService) { IList<Product> products; if (string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(audience)) { products = await productsService.GetProductsByCategoryAsync(audience); } else if (!string.IsNullOrEmpty(name) && string.IsNullOrEmpty(audience)) { products = await productsService.GetProductsByNameAsync(name); } else if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(audience)) { products = await productsService.GetProductsByNameAndCategoryAsync(name, audience); } else { products = []; } return products; }
Save your changes
El método RetrieveProduct recupera productos en función de los parámetros name y audience. Si el parámetro name está vacío y el parámetro audience no está vacío, el método recupera los productos en función del parámetro audience. Si el parámetro name no está vacío y el parámetro audience está vacío, el método recupera los productos en función del parámetro name. Si los parámetros name y audience no están vacíos, el método recupera productos basados en ambos parámetros. Si ambos parámetros están vacíos, el método devuelve una lista vacía.
A continuación, actualice la clase SearchApp para controlar el nuevo parámetro.
En la carpeta Buscar , abra SearchApp.cs
En el método OnTeamsMessagingExtensionQueryAsync , reemplace el código siguiente:
var name = MessageExtensionHelpers.GetQueryParameterValueByName(query.Parameters, "ProductName"); var productService = new ProductsService(tokenResponse.Token); var products = await productService.GetProductsByNameAsync(name);
Por:
var name = MessageExtensionHelpers.GetQueryParameterValueByName(query.Parameters, "ProductName"); var audience = MessageExtensionHelpers.GetQueryParameterValueByName(query.Parameters, "TargetAudience"); var productService = new ProductsService(tokenResponse.Token); var products = await MessageExtensionHelpers.RetrieveProducts(name, audience, productService);
Save your changes
El método OnTeamsMessagingExtensionQueryAsync ahora recupera los parámetros name y audience de los parámetros de consulta. A continuación, recupera productos basados en los parámetros name y audience mediante el método RetrieveProducts .
Creación y actualización de recursos
Con todo listo, ejecute el proceso Preparar dependencias de aplicaciones de Teams para crear nuevos recursos y actualizar los existentes.
Continuar en Visual Studio:
- En Explorador de soluciones, haga clic con el botón derecho en el proyecto TeamsApp
- Expanda el menú Kit de herramientas de Teams y seleccione Preparar dependencias de aplicaciones de Teams.
- En el cuadro de diálogo Cuenta de Microsoft 365, seleccione Continuar.
- En el cuadro de diálogo Aprovisionar , seleccione Aprovisionar.
- En el cuadro de diálogo de advertencia del kit de herramientas de Teams , seleccione Aprovisionar.
- En el cuadro de diálogo Información del kit de herramientas de Teams , seleccione el icono cruzado para cerrar el cuadro de diálogo.
Ejecución y depuración
Con los recursos aprovisionados, inicie una sesión de depuración para probar la extensión de mensaje.
En primer lugar, inicie Dev Proxy para simular la API personalizada.
Abrir una ventana de terminal
Ejecute el siguiente comando para iniciar dev Proxy:
devproxy --config-file "~appFolder/presets/learn-copilot-me-plugin/products-api-config.json"
Si se le solicita, acepte la advertencia del certificado.
Nota:
Cuando se ejecuta Dev Proxy, actúa como un proxy de todo el sistema.
A continuación, inicie una sesión de depuración en Visual Studio:
Para iniciar una nueva sesión de depuración, presione F5 o seleccione Iniciar en la barra de herramientas.
Espere hasta que se abra una ventana del explorador y aparezca el cuadro de diálogo de instalación de la aplicación en el cliente web de Microsoft Teams. Si se le solicita, escriba las credenciales de la cuenta de Microsoft 365.
En el cuadro de diálogo de instalación de la aplicación, seleccione Agregar.
Abrir la aplicación Copilot en Microsoft Teams
En el área redactar mensaje, abra el control flotante Complementos .
En la lista de complementos, cambie el complemento de productos de Contoso para habilitarlo.
Escriba Buscar productos de Contoso dirigidos a personas como mensaje y envíelo
Esperar a que Copilot responda
En la respuesta de Copilot, se muestran los datos devueltos en la respuesta del complemento y se hace referencia al complemento en la respuesta.
Para ver la tarjeta adaptable pertinente para el resultado, mantenga el puntero sobre las referencias en la respuesta de Copilot.
Vuelva a Visual Studio y seleccione Detener en la barra de herramientas o presione Mayús + F5 para detener la sesión de depuración. Además, apague El proxy de desarrollo mediante Ctrl + C.