diff --git a/samples/da-m365-roadmap-tracker/.gitignore b/samples/da-m365-roadmap-tracker/.gitignore new file mode 100644 index 000000000..e56779951 --- /dev/null +++ b/samples/da-m365-roadmap-tracker/.gitignore @@ -0,0 +1,13 @@ +# TeamsFx files +env/.env.*.user +env/.env.local +.localConfigs +appPackage/build + +# dependencies +node_modules/ + +# misc +.env +.deployment +.DS_Store diff --git a/samples/da-m365-roadmap-tracker/.vscode/extensions.json b/samples/da-m365-roadmap-tracker/.vscode/extensions.json new file mode 100644 index 000000000..aac0a6e34 --- /dev/null +++ b/samples/da-m365-roadmap-tracker/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "TeamsDevApp.ms-teams-vscode-extension" + ] +} diff --git a/samples/da-m365-roadmap-tracker/.vscode/launch.json b/samples/da-m365-roadmap-tracker/.vscode/launch.json new file mode 100644 index 000000000..de1b02ec6 --- /dev/null +++ b/samples/da-m365-roadmap-tracker/.vscode/launch.json @@ -0,0 +1,27 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Preview in Copilot (Edge)", + "type": "msedge", + "request": "launch", + "url": "https://www.office.com/chat?auth=2", + "presentation": { + "group": "remote", + "order": 1 + }, + "internalConsoleOptions": "neverOpen" + }, + { + "name": "Preview in Copilot (Chrome)", + "type": "chrome", + "request": "launch", + "url": "https://www.office.com/chat?auth=2", + "presentation": { + "group": "remote", + "order": 2 + }, + "internalConsoleOptions": "neverOpen" + } + ] +} diff --git a/samples/da-m365-roadmap-tracker/.vscode/settings.json b/samples/da-m365-roadmap-tracker/.vscode/settings.json new file mode 100644 index 000000000..429962025 --- /dev/null +++ b/samples/da-m365-roadmap-tracker/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "debug.onTaskErrors": "abort", + "json.schemas": [ + { + "fileMatch": [ + "/aad.*.json" + ], + "schema": {} + } + ] +} diff --git a/samples/da-m365-roadmap-tracker/README.md b/samples/da-m365-roadmap-tracker/README.md new file mode 100644 index 000000000..60cad058b --- /dev/null +++ b/samples/da-m365-roadmap-tracker/README.md @@ -0,0 +1,94 @@ +# M365 Roadmap Features Tracker declarative agent + +## Summary + +The M365 Roadmap Features Tracker agent shows how users can easily stay up to date with the latest Microsoft 365 roadmap features. It integrates a Microsoft Graph Connector to monitor and deliver the latest updates, offering a hands-free solution for staying informed. + +The agent uses a Microsoft Graph Connector that ingests Microsoft 365 roadmap features. This connector serves as a knowledge base to keep teams informed about updates on Microsoft 365 Roadmap features, facilitating proactive adaptation to changes, new releases, and deployments across Microsoft Teams, SharePoint, Outlook, and more. + +## Overview + +[![Mohammad's video](./assets/Mohammad-da-m365-roadmap-tracker02.png)](https://youtu.be/3zBANCzFcpM) + +## Prerequisites + +- [Teams Toolkit Visual Studio Code Extension](https://aka.ms/teams-toolkit) version 5.0.0 and higher or [Teams Toolkit CLI](https://aka.ms/teamsfx-toolkit-cli) +- [Microsoft 365 Copilot license](https://learn.microsoft.com/microsoft-365-copilot/extensibility/prerequisites#prerequisites) +- [Microsoft 365 account for development](https://docs.microsoft.com/microsoftteams/platform/toolkit/accounts). + + +## Minimal path to awesome + +* Clone this repository (or [download this solution as a .ZIP file](https://pnp.github.io/download-partial/?url=https://github.com/pnp/copilot-pro-dev-samples/tree/main/samples/da-qna-graphapi-plugin) then unzip it) + + +* Clone this repository and follow the minimal path to awesome in order to Ingest M365 Roadmap content in Microsoft 365 +- [Ingest M365 Roadmap content in Microsoft 365 using Microsoft Graph connectors using C# and .NET](https://github.com/pnp/graph-connectors-samples/tree/main/samples/dotnet-csharp-m365-roadmap) + +* Change the `connection_id` of the capabilities section in the declarativeAgent.json +If you are going to use sample of ingesting Microsoft 365 roadmap as is, then the connection id will be `roadmapmicrosoft365` + +``` + "capabilities": [ + { + "name": "GraphConnectors", + "connections": [ + { + "connection_id": "" + } + ] + } + ] +``` + +Follow the steps to deploy your agent +1. First, select the Teams Toolkit icon on the left in the VS Code toolbar. +2. In the Account section, sign in with your [Microsoft 365 account](https://docs.microsoft.com/microsoftteams/platform/toolkit/accounts) if you haven't already. +3. Create Teams app by clicking `Provision` in "Lifecycle" section. +4. Select `Preview in Copilot (Edge)` or `Preview in Copilot (Chrome)` from the launch configuration dropdown. +5. Once the Copilot app is loaded in the browser, click on the "…" menu and select "Copilot chats". You will see your declarative agent on the right rail. Clicking on it will change the experience to showcase the logo and name of your declarative agent. +6. Ask a question to your declarative agent and it should respond based on the instructions provided. + +## Tools and Frameworks + +![drop](https://img.shields.io/badge/Teams Toolkit for VS Code-5.12.1-green.svg) + + +## What's included in the template + +| Folder | Contents | +| ------------ | ---------------------------------------------------------------------------------------- | +| `.vscode` | VSCode files for debugging | +| `appPackage` | Templates for the Teams application manifest, the GPT manifest and the API specification | +| `env` | Environment files | + +The following files can be customized and demonstrate an example implementation to get you started. + +| File | Contents | +| ---------------------------------- | ---------------------------------------------------------------------------- | +| `appPackage/declarativeAgent.json` | Define the behaviour and configurations of the declarative agent. | +| `appPackage/manifest.json` | Teams application manifest that defines metadata for your declarative agent. | + +The following are Teams Toolkit specific project files. You can [visit a complete guide on Github](https://github.com/OfficeDev/TeamsFx/wiki/Teams-Toolkit-Visual-Studio-Code-v5-Guide#overview) to understand how Teams Toolkit works. + +| File | Contents | +| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `teamsapp.yml` | This is the main Teams Toolkit project file. The project file defines two primary things: Properties and configuration Stage definitions. | + + +## Contributors + +* [Mohammad Amer](https://github.com/mohammadamer) - M365 Development MVP + +## Version history + +Version|Date|Comments +-------|----|-------- +1.0|March 10, 2025|Initial solution + + +## Addition information and references + +- [Declarative agents for Microsoft 365](https://aka.ms/teams-toolkit-declarative-agent) + +![](https://m365-visitor-stats.azurewebsites.net/SamplesGallery/da-m365-roadmap-tracker) \ No newline at end of file diff --git a/samples/da-m365-roadmap-tracker/appPackage/color.png b/samples/da-m365-roadmap-tracker/appPackage/color.png new file mode 100644 index 000000000..1a752c2f2 Binary files /dev/null and b/samples/da-m365-roadmap-tracker/appPackage/color.png differ diff --git a/samples/da-m365-roadmap-tracker/appPackage/declarativeAgent.json b/samples/da-m365-roadmap-tracker/appPackage/declarativeAgent.json new file mode 100644 index 000000000..f4c055052 --- /dev/null +++ b/samples/da-m365-roadmap-tracker/appPackage/declarativeAgent.json @@ -0,0 +1,43 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/copilot/declarative-agent/v1.2/schema.json", + "version": "v1.2", + "name": "M365 Roadmap Features Tracker", + "description": "Declarative agent created with Teams Toolkit", + "instructions": "$[file('instruction.txt')]", + "conversation_starters": [ + { + "title": "Discover What's New", + "text": "Curious about the latest Microsoft 365 updates? I can summarize the newest features from the M365 Roadmap for you!" + }, + { + "title": "Track Feature Rollouts", + "text": "Want to know which upcoming M365 features will impact your workflow? Let me check the roadmap and highlight key updates!" + }, + { + "title": "Plan for Upcoming Changes", + "text": "I can help you prepare for upcoming Microsoft 365 changes by summarizing features that will roll out soon. Want a quick overview?" + }, + { + "title": "Stay Ahead with M365 Updates", + "text": "Need to keep your team informed? I can provide a summary of the most important feature updates for Microsoft 365." + }, + { + "title": "Feature Deep Dive", + "text": "Interested in a specific M365 feature? Let me find the latest details from the roadmap and explain how it might affect you." + }, + { + "title": "Your Personalized Update Report", + "text": "Tell me which Microsoft 365 apps you use the most, and I’ll filter out the most relevant roadmap updates for you!" + } + ], + "capabilities": [ + { + "name": "GraphConnectors", + "connections": [ + { + "connection_id": "" + } + ] + } + ] +} diff --git a/samples/da-m365-roadmap-tracker/appPackage/instruction.txt b/samples/da-m365-roadmap-tracker/appPackage/instruction.txt new file mode 100644 index 000000000..05fd6caef --- /dev/null +++ b/samples/da-m365-roadmap-tracker/appPackage/instruction.txt @@ -0,0 +1,57 @@ +Welcome Message + +Use this to introduce your capabilities: +Welcome to the Microsoft 365 Roadmap Tracker! I can help you stay updated on the latest feature releases, upcoming rollouts, and changes that may impact your workflow. Just tell me what you're looking for! + +Search Instructions: +Feature Search by Keyword or Category +Prompt the user for a keyword, Microsoft 365 service (e.g., Teams, Outlook, SharePoint), or feature type (e.g., security updates, UI changes). +Query the Microsoft 365 Roadmap for relevant updates. +Extract key details such as feature name, description, rollout stage, and expected release date. + +Response Format for any Roadmap feature updates, When providing update you must follow the following response format: +Example structured response for features results, respond accordingly following the response format: +Feature title: New Teams Meeting AI Enhancements +Status: Rolling Out +Expected Release: Q2 2024 +Service: Microsoft Teams +View on Microsoft 365 Roadmap +Summary: AI-powered meeting summaries and action items will be available in Teams. This will help users catch up on missed meetings efficiently. + +If no matching results are found: +I couldn't find any updates matching your search. Try using a broader keyword or selecting a different M365 service! + +Filter by Status (Planned, Rolling Out, Launched, etc.) +Allow users to filter features by development stage: +Planned – Features in early development. +In Development – Actively being worked on. +Rolling Out – Being gradually released. +Launched – Fully available. + +Example prompt: +Do you want updates on features that are Planned, In Development, or Rolling Out? +Filter by Release Timeline +Provide search options based on release periods (e.g., Next Month, Next Quarter, 2024 Features). + +Example prompt: +Would you like updates for the next month, next quarter, or the entire year? +Region-Specific Availability +If applicable, check whether the feature is available in a specific region (e.g., Global, Europe, GCC). +If a feature is region-limited, display a message: +This feature is currently rolling out in [Region]. Let me know if you’d like updates on global availability! + +Export & Notifications +Save & Share Updates +Offer to export the update list as a Markdown or CSV file. +Ask if the user wants a summary emailed to them. +Example prompt: +Would you like me to generate a summary file or send you a notification when new updates are available? + +Weekly or Monthly Alerts +Allow users to set update alerts for specific services or feature categories. +Example prompt: +Do you want to receive weekly or monthly updates for new roadmap changes? + +Next Steps Prompt +After providing the update: +Would you like to search for another feature, track a specific service, or explore upcoming releases? \ No newline at end of file diff --git a/samples/da-m365-roadmap-tracker/appPackage/manifest.json b/samples/da-m365-roadmap-tracker/appPackage/manifest.json new file mode 100644 index 000000000..a998298aa --- /dev/null +++ b/samples/da-m365-roadmap-tracker/appPackage/manifest.json @@ -0,0 +1,39 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.19/MicrosoftTeams.schema.json", + "manifestVersion": "1.19", + "version": "1.0.0", + "id": "${{TEAMS_APP_ID}}", + "developer": { + "name": "Teams App, Inc.", + "websiteUrl": "https://www.example.com", + "privacyUrl": "https://www.example.com/privacy", + "termsOfUseUrl": "https://www.example.com/termofuse" + }, + "icons": { + "color": "color.png", + "outline": "outline.png" + }, + "name": { + "short": "M365 Roadmap Features${{APP_NAME_SUFFIX}}", + "full": "Full name for M365 Roadmap Features" + }, + "description": { + "short": "Short description for M365 Roadmap Features", + "full": "Full description for M365 Roadmap Features" + }, + "accentColor": "#FFFFFF", + "composeExtensions": [], + "permissions": [ + "identity", + "messageTeamMembers" + ], + "copilotAgents": { + "declarativeAgents": [ + { + "id": "daM365RoadmapFeaturesTracker", + "file": "declarativeAgent.json" + } + ] + }, + "validDomains": [] +} \ No newline at end of file diff --git a/samples/da-m365-roadmap-tracker/appPackage/outline.png b/samples/da-m365-roadmap-tracker/appPackage/outline.png new file mode 100644 index 000000000..f7a4c8644 Binary files /dev/null and b/samples/da-m365-roadmap-tracker/appPackage/outline.png differ diff --git a/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker00.png b/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker00.png new file mode 100644 index 000000000..4a59c8ac5 Binary files /dev/null and b/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker00.png differ diff --git a/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker01.png b/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker01.png new file mode 100644 index 000000000..aca3fc308 Binary files /dev/null and b/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker01.png differ diff --git a/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker02.png b/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker02.png new file mode 100644 index 000000000..4fa5b9591 Binary files /dev/null and b/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker02.png differ diff --git a/samples/da-m365-roadmap-tracker/assets/sample.json b/samples/da-m365-roadmap-tracker/assets/sample.json new file mode 100644 index 000000000..077cc19b5 --- /dev/null +++ b/samples/da-m365-roadmap-tracker/assets/sample.json @@ -0,0 +1,75 @@ +[ + { + "name": "pnp-copilot-pro-dev-da-m365-roadmap-tracker", + "source": "pnp", + "title": "The M365 Roadmap Features Tracker agent shows how users can easily stay up to date with the latest Microsoft 365 roadmap features.", + "shortDescription": "The M365 Roadmap Features Tracker agent shows how users can easily stay up to date with the latest Microsoft 365 roadmap features. It integrates a Microsoft Graph Connector to monitor and deliver the latest updates, offering a hands-free solution for staying informed.", + "url": "https://github.com/pnp/copilot-pro-dev-samples/tree/main/samples/da-m365-roadmap-tracker", + "downloadUrl": "https://pnp.github.io/download-partial/?url=https://github.com/pnp/copilot-pro-dev-samples/tree/main/samples/da-m365-roadmap-tracker", + "longDescription": [ + "The M365 Roadmap Features Tracker agent shows how users can easily stay up to date with the latest Microsoft 365 roadmap features." + ], + "creationDateTime": "2025-03-10", + "updateDateTime": "2025-03-10", + "products": [ + "Microsoft 365 Copilot", "Teams Toolkit" + ], + "metadata": [ + { + "key": "PLATFORM", + "value": "Copilot" + }, + { + "key": "LANGUAGE", + "value": "English" + }, + { + "key": "API-PLUGIN", + "value": "No" + }, + { + "key": "GRAPH-CONNECTOR", + "value": "Yes" + } + ], + "thumbnails": [ + { + "type": "image", + "order": 100, + "url": "https://raw.githubusercontent.com/pnp/copilot-pro-dev-samples/refs/heads/main/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker00.png", + "alt": "Copilot agent that finds M365 roadmap features updates" + }, + { + "type": "image", + "order": 100, + "url": "https://raw.githubusercontent.com/pnp/copilot-pro-dev-samples/refs/heads/main/samples/da-m365-roadmap-tracker/assets/Mohammad-da-m365-roadmap-tracker01.png", + "alt": "Copilot agent that finds M365 roadmap features updates" + } + ], + + "authors": [ + { + "gitHubAccount": "mohammadamer", + "pictureUrl": "https://github.com/mohammadamer.png", + "name": "Mohammad Amer" + } + ], + "references": [ + { + "name": "Microsoft 365 Copilot extensibility", + "description": "Learn more about what Microsoft 365 Copilot and how you can extend it.", + "url": "https://learn.microsoft.com/microsoft-365-copilot/extensibility/" + }, + { + "name": "Declarative agents for Microsoft 365 Copilot overview", + "description": "Learn more about what declarative agents for Microsoft 365 Copilot are.", + "url": "https://learn.microsoft.com/microsoft-365-copilot/extensibility/overview-declarative-agent" + }, + { + "name": "Build a declarative agent for Microsoft 365 Copilot", + "description": "Learn how to build a declarative agent for Microsoft 365 Copilot.", + "url": "https://learn.microsoft.com/microsoft-365-copilot/extensibility/build-declarative-agents" + } + ] + } + ] \ No newline at end of file diff --git a/samples/da-m365-roadmap-tracker/env/.env.dev b/samples/da-m365-roadmap-tracker/env/.env.dev new file mode 100644 index 000000000..f73cd1a62 --- /dev/null +++ b/samples/da-m365-roadmap-tracker/env/.env.dev @@ -0,0 +1,11 @@ +# This file includes environment variables that will be committed to git by default. + +# Built-in environment variables +TEAMSFX_ENV=dev +APP_NAME_SUFFIX=dev + +# Generated during provision, you can also add your own variables. +TEAMS_APP_ID= +TEAMS_APP_TENANT_ID= +M365_TITLE_ID= +M365_APP_ID= \ No newline at end of file diff --git a/samples/da-m365-roadmap-tracker/teamsapp.yml b/samples/da-m365-roadmap-tracker/teamsapp.yml new file mode 100644 index 000000000..3f8277682 --- /dev/null +++ b/samples/da-m365-roadmap-tracker/teamsapp.yml @@ -0,0 +1,81 @@ +# yaml-language-server: $schema=https://aka.ms/teams-toolkit/v1.7/yaml.schema.json +# Visit https://aka.ms/teamsfx-v5.0-guide for details on this file +# Visit https://aka.ms/teamsfx-actions for details on actions +version: v1.7 + +environmentFolderPath: ./env + +# Triggered when 'teamsapp provision' is executed +provision: + # Creates a Teams app + - uses: teamsApp/create + with: + # Teams app name + name: M365 Roadmap Features${{APP_NAME_SUFFIX}} + # Write the information of created resources into environment file for + # the specified environment variable(s). + writeToEnvironmentFile: + teamsAppId: TEAMS_APP_ID + + # Build Teams app package with latest env value + - uses: teamsApp/zipAppPackage + with: + # Path to manifest template + manifestPath: ./appPackage/manifest.json + outputZipPath: ./appPackage/build/appPackage.${{TEAMSFX_ENV}}.zip + outputFolder: ./appPackage/build + # Validate app package using validation rules + - uses: teamsApp/validateAppPackage + with: + # Relative path to this file. This is the path for built zip file. + appPackagePath: ./appPackage/build/appPackage.${{TEAMSFX_ENV}}.zip + # Apply the Teams app manifest to an existing Teams app in + # Teams Developer Portal. + # Will use the app id in manifest file to determine which Teams app to update. + - uses: teamsApp/update + with: + # Relative path to this file. This is the path for built zip file. + appPackagePath: ./appPackage/build/appPackage.${{TEAMSFX_ENV}}.zip + # Extend your Teams app to Outlook and the Microsoft 365 app + - uses: teamsApp/extendToM365 + with: + # Relative path to the build app package. + appPackagePath: ./appPackage/build/appPackage.${{TEAMSFX_ENV}}.zip + # Write the information of created resources into environment file for + # the specified environment variable(s). + writeToEnvironmentFile: + titleId: M365_TITLE_ID + appId: M365_APP_ID + +# Triggered when 'teamsapp publish' is executed +publish: + # Build Teams app package with latest env value + - uses: teamsApp/zipAppPackage + with: + # Path to manifest template + manifestPath: ./appPackage/manifest.json + outputZipPath: ./appPackage/build/appPackage.${{TEAMSFX_ENV}}.zip + outputFolder: ./appPackage/build + # Validate app package using validation rules + - uses: teamsApp/validateAppPackage + with: + # Relative path to this file. This is the path for built zip file. + appPackagePath: ./appPackage/build/appPackage.${{TEAMSFX_ENV}}.zip + # Apply the Teams app manifest to an existing Teams app in + # Teams Developer Portal. + # Will use the app id in manifest file to determine which Teams app to update. + - uses: teamsApp/update + with: + # Relative path to this file. This is the path for built zip file. + appPackagePath: ./appPackage/build/appPackage.${{TEAMSFX_ENV}}.zip + # Publish the app to + # Teams Admin Center (https://admin.teams.microsoft.com/policies/manage-apps) + # for review and approval + - uses: teamsApp/publishAppPackage + with: + appPackagePath: ./appPackage/build/appPackage.${{TEAMSFX_ENV}}.zip + # Write the information of created resources into environment file for + # the specified environment variable(s). + writeToEnvironmentFile: + publishedAppId: TEAMS_APP_PUBLISHED_APP_ID +projectId: 7ba06a5c-5f34-4459-acda-71ccbbfd2f9c