diff --git a/templates/csharp/message-extension-copilot/.gitignore b/templates/csharp/message-extension-copilot/.gitignore
deleted file mode 100644
index 9ecb6a5c1b..0000000000
--- a/templates/csharp/message-extension-copilot/.gitignore
+++ /dev/null
@@ -1,26 +0,0 @@
-# TeamsFx files
-build
-appPackage/build
-env/.env.*.user
-env/.env.local
-appsettings.Development.json
-.deployment
-appsettings.TestTool.json
-
-# User-specific files
-*.user
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-
-# Notification local store
-.notification.localstore.json
diff --git a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/.gitignore b/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/.gitignore
deleted file mode 100644
index 3de544e49c..0000000000
--- a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-# TeamsFx files
-build
-appPackage/build
-env/.env.*.user
-env/.env.local
-appsettings.Development.json
-.deployment
-appsettings.Development.json
-
-# User-specific files
-*.user
-
-# Notification local store
-.notification.localstore
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/README.md.tpl b/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/README.md.tpl
deleted file mode 100644
index 2ef14d449d..0000000000
--- a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/README.md.tpl
+++ /dev/null
@@ -1,50 +0,0 @@
-# Welcome to Teams Toolkit!
-
-## Quick Start
-
-> **Prerequisites**
->
-> To run the app template in your local dev machine, you will need:
->
-> - [Visual Studio 2022](https://aka.ms/vs) 17.8 or higher and [install Teams Toolkit](https://aka.ms/install-teams-toolkit-vs).
-{{^enableTestToolByDefault}}
-> - A [Microsoft 365 account for development](https://docs.microsoft.com/microsoftteams/platform/toolkit/accounts)
-{{/enableTestToolByDefault}}
-> - [Microsoft 365 Copilot license](https://learn.microsoft.com/microsoft-365-copilot/extensibility/prerequisites#prerequisites)
-
-{{#enableTestToolByDefault}}
-1. Press F5 to start debugging which launches your app in Teams App Test Tool using a web browser.
-2. You can search NuGet package from compose message area, or from the command box.
-{{/enableTestToolByDefault}}
-{{^enableTestToolByDefault}}
-1. In the debug dropdown menu, select Dev Tunnels > Create a Tunnel (set authentication type to Public) or select an existing public dev tunnel
-![image](https://raw.githubusercontent.com/OfficeDev/TeamsFx/dev/docs/images/visualstudio/debug/create-devtunnel-button.png).
-2. Right-click the '{{NewProjectTypeName}}' project and select Teams Toolkit > Prepare Teams App Dependencies
-3. If prompted, sign in with a Microsoft 365 account for the Teams organization you want
- to install the app to.
-4. Press F5, or select Debug > Start Debugging menu in Visual Studio to start your app
-![image](https://raw.githubusercontent.com/OfficeDev/TeamsFx/dev/docs/images/visualstudio/debug/debug-button.png)
-5. In the launched browser, select the Add button to load the app in Teams.
-6. You can search for NuGet package from the message input field or the command box.
-{{/enableTestToolByDefault}}
-
-> For local debugging using Teams Toolkit CLI, you need to do some extra steps described in [Set up your Teams Toolkit CLI for local debugging](https://aka.ms/teamsfx-cli-debugging).
-
-{{^enableTestToolByDefault}}
-## Debug in Test Tool
-Teams App Test Tool allows developers test and debug bots locally without needing Microsoft 365 accounts, development tunnels, or Teams app and bot registration. See https://aka.ms/teams-toolkit-vs-test-tool for more details.
-{{/enableTestToolByDefault}}
-
-## Run the app on other platforms
-
-The Teams app can run in other platforms like Outlook and Microsoft 365 app. See https://aka.ms/vs-ttk-debug-multi-profiles for more details.
-
-## Get more info
-
-- [Extend Microsoft 365 Copilot](https://aka.ms/teamsfx-copilot-plugin)
-
-## Report an issue
-
-Select Visual Studio > Help > Send Feedback > Report a Problem.
-Or, create an issue directly in our GitHub repository:
-https://github.com/OfficeDev/TeamsFx/issues
diff --git a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/launchSettings.json.tpl b/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/launchSettings.json.tpl
deleted file mode 100644
index 4c57989778..0000000000
--- a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/launchSettings.json.tpl
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "profiles": {
-{{#enableTestToolByDefault}}
- // Launch project within Teams App Test Tool
- "Teams App Test Tool (browser)": {
- "commandName": "Project",
- "launchTestTool": true,
- "launchUrl": "http://localhost:56150",
- },
-{{/enableTestToolByDefault}}
- // Debug project within Teams
- "Microsoft Teams (browser)": {
- "commandName": "Project",
- "launchUrl": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&appTenantId=${{TEAMS_APP_TENANT_ID}}&login_hint=${{TEAMSFX_M365_USER_NAME}}",
- },
- // Debug project within Copilot
- "Copilot (browser)": {
- "commandName": "Project",
- "launchUrl": "https://teams.microsoft.com?appTenantId=${{TEAMS_APP_TENANT_ID}}&login_hint=${{TEAMSFX_M365_USER_NAME}}",
- },
- // Debug project within Outlook
- "Outlook (browser)": {
- "commandName": "Project",
- "launchUrl": "https://outlook.office.com/mail?appTenantId=${{TEAMS_APP_TENANT_ID}}&login_hint=${{TEAMSFX_M365_USER_NAME}}",
- },
-{{^enableTestToolByDefault}}
- // Launch project within Teams App Test Tool
- "Teams App Test Tool (browser)": {
- "commandName": "Project",
- "launchTestTool": true,
- "launchUrl": "http://localhost:56150",
- },
-{{/enableTestToolByDefault}}
- }
-}
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/{{NewProjectTypeName}}.{{NewProjectTypeExt}}.tpl b/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/{{NewProjectTypeName}}.{{NewProjectTypeExt}}.tpl
deleted file mode 100644
index a31df153ea..0000000000
--- a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/{{NewProjectTypeName}}.{{NewProjectTypeExt}}.tpl
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/{{NewProjectTypeName}}.{{NewProjectTypeExt}}.user.tpl b/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/{{NewProjectTypeName}}.{{NewProjectTypeExt}}.user.tpl
deleted file mode 100644
index 541a09bd78..0000000000
--- a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/{{NewProjectTypeName}}.{{NewProjectTypeExt}}.user.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- ProjectDebugger
-
-
-{{#enableTestToolByDefault}}
- Teams App Test Tool (browser)
-{{/enableTestToolByDefault}}
-{{^enableTestToolByDefault}}
- Microsoft Teams (browser)
-{{/enableTestToolByDefault}}
-
-
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/{{ProjectName}}.slnLaunch.user.tpl b/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/{{ProjectName}}.slnLaunch.user.tpl
deleted file mode 100644
index 950205a451..0000000000
--- a/templates/csharp/message-extension-copilot/.{{NewProjectTypeName}}/{{ProjectName}}.slnLaunch.user.tpl
+++ /dev/null
@@ -1,124 +0,0 @@
-[
-{{#enableTestToolByDefault}}
- {
- "Name": "Teams App Test Tool (browser)",
- "Projects": [
- {
- "Path": "{{NewProjectTypeName}}\\{{NewProjectTypeName}}.{{NewProjectTypeExt}}",
- "Name": "{{NewProjectTypeName}}\\{{NewProjectTypeName}}.{{NewProjectTypeExt}}",
- "Action": "StartWithoutDebugging",
- "DebugTarget": "Teams App Test Tool (browser)"
- },
- {
-{{#PlaceProjectFileInSolutionDir}}
- "Path": "{{ProjectName}}.csproj",
- "Name": "{{ProjectName}}.csproj",
-{{/PlaceProjectFileInSolutionDir}}
-{{^PlaceProjectFileInSolutionDir}}
- "Path": "{{ProjectName}}\\{{ProjectName}}.csproj",
- "Name": "{{ProjectName}}\\{{ProjectName}}.csproj",
-{{/PlaceProjectFileInSolutionDir}}
- "Action": "Start",
- "DebugTarget": "Teams App Test Tool"
- }
- ]
- },
-{{/enableTestToolByDefault}}
- {
- "Name": "Microsoft Teams (browser)",
- "Projects": [
- {
- "Path": "{{NewProjectTypeName}}\\{{NewProjectTypeName}}.{{NewProjectTypeExt}}",
- "Name": "{{NewProjectTypeName}}\\{{NewProjectTypeName}}.{{NewProjectTypeExt}}",
- "Action": "StartWithoutDebugging",
- "DebugTarget": "Microsoft Teams (browser)"
- },
- {
-{{#PlaceProjectFileInSolutionDir}}
- "Path": "{{ProjectName}}.csproj",
- "Name": "{{ProjectName}}.csproj",
-{{/PlaceProjectFileInSolutionDir}}
-{{^PlaceProjectFileInSolutionDir}}
- "Path": "{{ProjectName}}\\{{ProjectName}}.csproj",
- "Name": "{{ProjectName}}\\{{ProjectName}}.csproj",
-{{/PlaceProjectFileInSolutionDir}}
- "Action": "Start",
- "DebugTarget": "Start Project"
- }
- ]
- },
- {
- "Name": "Copilot (browser)",
- "Projects": [
- {
- "Path": "{{NewProjectTypeName}}\\{{NewProjectTypeName}}.{{NewProjectTypeExt}}",
- "Name": "{{NewProjectTypeName}}\\{{NewProjectTypeName}}.{{NewProjectTypeExt}}",
- "Action": "StartWithoutDebugging",
- "DebugTarget": "Copilot (browser)"
- },
- {
-{{#PlaceProjectFileInSolutionDir}}
- "Path": "{{ProjectName}}.csproj",
- "Name": "{{ProjectName}}.csproj",
-{{/PlaceProjectFileInSolutionDir}}
-{{^PlaceProjectFileInSolutionDir}}
- "Path": "{{ProjectName}}\\{{ProjectName}}.csproj",
- "Name": "{{ProjectName}}\\{{ProjectName}}.csproj",
-{{/PlaceProjectFileInSolutionDir}}
- "Action": "Start",
- "DebugTarget": "Start Project"
- }
- ]
- },
- {
- "Name": "Outlook (browser)",
- "Projects": [
- {
- "Path": "{{NewProjectTypeName}}\\{{NewProjectTypeName}}.{{NewProjectTypeExt}}",
- "Name": "{{NewProjectTypeName}}\\{{NewProjectTypeName}}.{{NewProjectTypeExt}}",
- "Action": "StartWithoutDebugging",
- "DebugTarget": "Outlook (browser)"
- },
- {
-{{#PlaceProjectFileInSolutionDir}}
- "Path": "{{ProjectName}}.csproj",
- "Name": "{{ProjectName}}.csproj",
-{{/PlaceProjectFileInSolutionDir}}
-{{^PlaceProjectFileInSolutionDir}}
- "Path": "{{ProjectName}}\\{{ProjectName}}.csproj",
- "Name": "{{ProjectName}}\\{{ProjectName}}.csproj",
-{{/PlaceProjectFileInSolutionDir}}
- "Action": "Start",
- "DebugTarget": "Start Project"
- }
- ]
-{{#enableTestToolByDefault}}
- }
-{{/enableTestToolByDefault}}
-{{^enableTestToolByDefault}}
- },
- {
- "Name": "Teams App Test Tool (browser)",
- "Projects": [
- {
- "Path": "{{NewProjectTypeName}}\\{{NewProjectTypeName}}.{{NewProjectTypeExt}}",
- "Name": "{{NewProjectTypeName}}\\{{NewProjectTypeName}}.{{NewProjectTypeExt}}",
- "Action": "StartWithoutDebugging",
- "DebugTarget": "Teams App Test Tool (browser)"
- },
- {
-{{#PlaceProjectFileInSolutionDir}}
- "Path": "{{ProjectName}}.csproj",
- "Name": "{{ProjectName}}.csproj",
-{{/PlaceProjectFileInSolutionDir}}
-{{^PlaceProjectFileInSolutionDir}}
- "Path": "{{ProjectName}}\\{{ProjectName}}.csproj",
- "Name": "{{ProjectName}}\\{{ProjectName}}.csproj",
-{{/PlaceProjectFileInSolutionDir}}
- "Action": "Start",
- "DebugTarget": "Teams App Test Tool"
- }
- ]
- }
-{{/enableTestToolByDefault}}
-]
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/AdapterWithErrorHandler.cs.tpl b/templates/csharp/message-extension-copilot/AdapterWithErrorHandler.cs.tpl
deleted file mode 100644
index 7a6a34cadc..0000000000
--- a/templates/csharp/message-extension-copilot/AdapterWithErrorHandler.cs.tpl
+++ /dev/null
@@ -1,28 +0,0 @@
-using Microsoft.Bot.Builder.Integration.AspNet.Core;
-using Microsoft.Bot.Builder.TraceExtensions;
-using Microsoft.Bot.Connector.Authentication;
-
-namespace {{SafeProjectName}};
-
-public class AdapterWithErrorHandler : CloudAdapter
-{
- public AdapterWithErrorHandler(BotFrameworkAuthentication auth, ILogger logger)
- : base(auth, logger)
- {
- OnTurnError = async (turnContext, exception) =>
- {
- // Log any leaked exception from the application.
- // NOTE: In production environment, you should consider logging this to
- // Azure Application Insights. Visit https://aka.ms/bottelemetry to see how
- // to add telemetry capture to your bot.
- logger.LogError(exception, $"[OnTurnError] unhandled error : {exception.Message}");
-
- // Send a message to the user
- await turnContext.SendActivityAsync("The bot encountered an error or bug.");
- await turnContext.SendActivityAsync("To continue to run this bot, please fix the bot source code.");
-
- // Send a trace activity, which will be displayed in the Bot Framework Emulator
- await turnContext.TraceActivityAsync("OnTurnError Trace", exception.Message, "https://www.botframework.com/schemas/error", "TurnError");
- };
- }
-}
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/Config.cs.tpl b/templates/csharp/message-extension-copilot/Config.cs.tpl
deleted file mode 100644
index 273f115492..0000000000
--- a/templates/csharp/message-extension-copilot/Config.cs.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace {{SafeProjectName}}
-{
- public class ConfigOptions
- {
- public string BOT_ID { get; set; }
- public string BOT_PASSWORD { get; set; }
- public string BOT_TYPE { get; set; }
- public string BOT_TENANT_ID { get; set; }
- }
-}
diff --git a/templates/csharp/message-extension-copilot/Controllers/BotController.cs.tpl b/templates/csharp/message-extension-copilot/Controllers/BotController.cs.tpl
deleted file mode 100644
index 4278395740..0000000000
--- a/templates/csharp/message-extension-copilot/Controllers/BotController.cs.tpl
+++ /dev/null
@@ -1,30 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.Bot.Builder;
-using Microsoft.Bot.Builder.Integration.AspNet.Core;
-
-namespace {{SafeProjectName}}.Controllers;
-
-// This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot
-// implementation at runtime. Multiple different IBot implementations running at different endpoints can be
-// achieved by specifying a more specific type for the bot constructor argument.
-[Route("api/messages")]
-[ApiController]
-public class BotController : ControllerBase
-{
- private readonly IBotFrameworkHttpAdapter Adapter;
- private readonly IBot Bot;
-
- public BotController(IBotFrameworkHttpAdapter adapter, IBot bot)
- {
- Adapter = adapter;
- Bot = bot;
- }
-
- [HttpPost, HttpGet]
- public async Task PostAsync()
- {
- // Delegate the processing of the HTTP POST to the adapter.
- // The adapter will invoke the bot.
- await Adapter.ProcessAsync(Request, Response, Bot);
- }
-}
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/Program.cs.tpl b/templates/csharp/message-extension-copilot/Program.cs.tpl
deleted file mode 100644
index 2d3c0ed082..0000000000
--- a/templates/csharp/message-extension-copilot/Program.cs.tpl
+++ /dev/null
@@ -1,45 +0,0 @@
-using {{SafeProjectName}};
-using {{SafeProjectName}}.Search;
-using Microsoft.Bot.Builder;
-using Microsoft.Bot.Builder.Integration.AspNet.Core;
-using Microsoft.Bot.Connector.Authentication;
-
-var builder = WebApplication.CreateBuilder(args);
-
-builder.Services.AddControllers();
-builder.Services.AddHttpClient("WebClient", client => client.Timeout = TimeSpan.FromSeconds(600));
-builder.Services.AddHttpContextAccessor();
-
-// Create the Bot Framework Authentication to be used with the Bot Adapter.
-var config = builder.Configuration.Get();
-builder.Configuration["MicrosoftAppType"] = config.BOT_TYPE;
-builder.Configuration["MicrosoftAppId"] = config.BOT_ID;
-builder.Configuration["MicrosoftAppPassword"] = config.BOT_PASSWORD;
-builder.Configuration["MicrosoftAppTenantId"] = config.BOT_TENANT_ID;
-builder.Services.AddSingleton();
-
-// Create the Bot Framework Adapter with error handling enabled.
-builder.Services.AddSingleton();
-
-// Create the bot as a transient. In this case the ASP Controller is expecting an IBot.
-builder.Services.AddTransient();
-
-var app = builder.Build();
-
-if (app.Environment.IsDevelopment())
-{
- app.UseDeveloperExceptionPage();
-}
-app.UseStaticFiles();
-
-app.UseRouting();
-
-app.UseAuthentication();
-app.UseAuthorization();
-
-app.UseEndpoints(endpoints =>
-{
- endpoints.MapControllers();
-});
-
-app.Run();
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/Properties/launchSettings.json.tpl b/templates/csharp/message-extension-copilot/Properties/launchSettings.json.tpl
deleted file mode 100644
index c6335ce577..0000000000
--- a/templates/csharp/message-extension-copilot/Properties/launchSettings.json.tpl
+++ /dev/null
@@ -1,121 +0,0 @@
-{
- "profiles": {
-{{^isNewProjectTypeEnabled}}
-{{#enableTestToolByDefault}}
- // Debug project within Teams App Test Tool
- "Teams App Test Tool (browser)": {
- "commandName": "Project",
- "dotnetRunMessages": true,
- "launchBrowser": true,
- "launchTestTool": true,
- "launchUrl": "http://localhost:56150",
- "applicationUrl": "http://localhost:5130",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "TestTool",
- "TEAMSFX_NOTIFICATION_STORE_FILENAME": ".notification.testtoolstore.json"
- },
- "hotReloadProfile": "aspnetcore"
- },
-{{/enableTestToolByDefault}}
- // Debug project within Teams
- "Microsoft Teams (browser)": {
- "commandName": "Project",
- "dotnetRunMessages": true,
- "launchBrowser": true,
- "launchUrl": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&appTenantId=${{TEAMS_APP_TENANT_ID}}&login_hint=${{TEAMSFX_M365_USER_NAME}}",
- "applicationUrl": "https://localhost:7130;http://localhost:5130",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- },
- "hotReloadProfile": "aspnetcore"
- },
- // Debug project within Copilot
- "Copilot (browser)": {
- "commandName": "Project",
- "dotnetRunMessages": true,
- "launchBrowser": true,
- "launchUrl": "https://teams.microsoft.com?appTenantId=${{TEAMS_APP_TENANT_ID}}&login_hint=${{TEAMSFX_M365_USER_NAME}}",
- "applicationUrl": "https://localhost:7130;http://localhost:5130",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- },
- "hotReloadProfile": "aspnetcore"
- },
- // Debug project within Outlook
- "Outlook (browser)": {
- "commandName": "Project",
- "dotnetRunMessages": true,
- "launchBrowser": true,
- "launchUrl": "https://outlook.office.com/mail?appTenantId=${{TEAMS_APP_TENANT_ID}}&login_hint=${{TEAMSFX_M365_USER_NAME}}",
- "applicationUrl": "https://localhost:7130;http://localhost:5130",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- },
- "hotReloadProfile": "aspnetcore"
- },
-{{^enableTestToolByDefault}}
- // Debug project within Teams App Test Tool
- "Teams App Test Tool (browser)": {
- "commandName": "Project",
- "dotnetRunMessages": true,
- "launchBrowser": true,
- "launchTestTool": true,
- "launchUrl": "http://localhost:56150",
- "applicationUrl": "http://localhost:5130",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "TestTool",
- "TEAMSFX_NOTIFICATION_STORE_FILENAME": ".notification.testtoolstore.json"
- },
- "hotReloadProfile": "aspnetcore"
- },
-{{/enableTestToolByDefault}}
- //// Uncomment following profile to debug project only (without launching Teams)
- //,
- //"Start Project (not in Teams)": {
- // "commandName": "Project",
- // "dotnetRunMessages": true,
- // "launchBrowser": true,
- // "applicationUrl": "https://localhost:7130;http://localhost:5130",
- // "environmentVariables": {
- // "ASPNETCORE_ENVIRONMENT": "Development"
- // },
- // "hotReloadProfile": "aspnetcore"
- //}
-{{/isNewProjectTypeEnabled}}
-{{#isNewProjectTypeEnabled}}
-{{#enableTestToolByDefault}}
- "Teams App Test Tool": {
- "commandName": "Project",
- "dotnetRunMessages": true,
- "applicationUrl": "http://localhost:5130",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "TestTool",
- "TEAMSFX_NOTIFICATION_STORE_FILENAME": ".notification.testtoolstore.json"
- },
- "hotReloadProfile": "aspnetcore"
- },
-{{/enableTestToolByDefault}}
- "Start Project": {
- "commandName": "Project",
- "dotnetRunMessages": true,
- "applicationUrl": "https://localhost:7130;http://localhost:5130",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- },
- "hotReloadProfile": "aspnetcore"
- },
-{{^enableTestToolByDefault}}
- "Teams App Test Tool": {
- "commandName": "Project",
- "dotnetRunMessages": true,
- "applicationUrl": "http://localhost:5130",
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "TestTool",
- "TEAMSFX_NOTIFICATION_STORE_FILENAME": ".notification.testtoolstore.json"
- },
- "hotReloadProfile": "aspnetcore"
- },
-{{/enableTestToolByDefault}}
-{{/isNewProjectTypeEnabled}}
- }
-}
diff --git a/templates/csharp/message-extension-copilot/README.md.tpl b/templates/csharp/message-extension-copilot/README.md.tpl
deleted file mode 100644
index 1a8748fa9d..0000000000
--- a/templates/csharp/message-extension-copilot/README.md.tpl
+++ /dev/null
@@ -1,51 +0,0 @@
-# Welcome to Teams Toolkit!
-
-## Quick Start
-
-> **Prerequisites**
->
-> To run the app template in your local dev machine, you will need:
->
-> - [Visual Studio 2022](https://aka.ms/vs) 17.8 or higher and [install Teams Toolkit](https://aka.ms/install-teams-toolkit-vs).
-{{^enableTestToolByDefault}}
-> - A [Microsoft 365 account for development](https://docs.microsoft.com/microsoftteams/platform/toolkit/accounts).
-{{/enableTestToolByDefault}}
-> - [Microsoft 365 Copilot license](https://learn.microsoft.com/microsoft-365-copilot/extensibility/prerequisites#prerequisites)
-
-{{#enableTestToolByDefault}}
-1. Press F5 to start debugging which launches your app in Teams App Test Tool using a web browser.
-2. You can search NuGet package from compose message area, or from the command box.
-{{/enableTestToolByDefault}}
-{{^enableTestToolByDefault}}
-1. In the debug dropdown menu, select `Dev Tunnels > Create a Tunnel` (set authentication type to Public) or select an existing public dev tunnel.
-2. Right-click your project and select `Teams Toolkit > Prepare Teams App Dependencies`.
-3. If prompted, sign in with a Microsoft 365 account for the Teams organization you want
- to install the app to.
-4. To directly trigger the Message Extension in Teams, you can:
- 1. In the debug dropdown menu, select `Microsoft Teams (browser)`.
- 2. In the launched browser, select the Add button to load the app in Teams.
- 3. You can search NuGet package from compose message area, or from the command box.
-5. To trigger the Message Extension through Copilot, you can:
- 1. In the debug dropdown menu, select `Copilot (browser)`.
- 2. When Teams launches in the browser, click the Apps icon from Teams client left rail to open Teams app store and search for Copilot.
- 3. Open the `Copilot` app, select `Plugins`, and from the list of plugins, turn on the toggle for your message extension. Now, you can send a prompt to trigger your plugin.
- 4. Send a message to Copilot to find an NuGet package information. For example: Find the NuGet package info on Microsoft.CSharp.
- > Note: This prompt may not always make Copilot include a response from your message extension. If it happens, try some other prompts or leave a feedback to us by thumbing down the Copilot response and leave a message tagged with [MessageExtension].
-{{/enableTestToolByDefault}}
-
-> For local debugging using Teams Toolkit CLI, you need to do some extra steps described in [Set up your Teams Toolkit CLI for local debugging](https://aka.ms/teamsfx-cli-debugging).
-
-{{^enableTestToolByDefault}}
-## Debug in Test Tool
-Teams App Test Tool allows developers test and debug bots locally without needing Microsoft 365 accounts, development tunnels, or Teams app and bot registration. See https://aka.ms/teams-toolkit-vs-test-tool for more details.
-{{/enableTestToolByDefault}}
-
-## Learn more
-
-- [Extend Microsoft 365 Copilot](https://aka.ms/teamsfx-copilot-plugin)
-
-## Report an issue
-
-Select Visual Studio > Help > Send Feedback > Report a Problem.
-Or, you can create an issue directly in our GitHub repository:
-https://github.com/OfficeDev/TeamsFx/issues
diff --git a/templates/csharp/message-extension-copilot/Resources/helloWorldCard.json b/templates/csharp/message-extension-copilot/Resources/helloWorldCard.json
deleted file mode 100644
index dcab7e8a9b..0000000000
--- a/templates/csharp/message-extension-copilot/Resources/helloWorldCard.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "AdaptiveCard",
- "body": [
- {
- "type": "TextBlock",
- "text": "${name}",
- "wrap": true,
- "size": "Large"
- },
- {
- "type": "TextBlock",
- "text": "${description}",
- "wrap": true,
- "size": "Medium"
- }
- ],
- "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
- "version": "1.4"
-}
diff --git a/templates/csharp/message-extension-copilot/Search/SearchApp.cs.tpl b/templates/csharp/message-extension-copilot/Search/SearchApp.cs.tpl
deleted file mode 100644
index b35ecdeacb..0000000000
--- a/templates/csharp/message-extension-copilot/Search/SearchApp.cs.tpl
+++ /dev/null
@@ -1,72 +0,0 @@
-using Microsoft.Bot.Builder;
-using Microsoft.Bot.Builder.Teams;
-using Microsoft.Bot.Schema;
-using Microsoft.Bot.Schema.Teams;
-using AdaptiveCards;
-using Newtonsoft.Json.Linq;
-
-namespace {{SafeProjectName}}.Search;
-
-public class SearchApp : TeamsActivityHandler
-{
- private readonly string _adaptiveCardFilePath = Path.Combine(".", "Resources", "helloWorldCard.json");
- // Search
- protected override async Task OnTeamsMessagingExtensionQueryAsync(ITurnContext turnContext, MessagingExtensionQuery query, CancellationToken cancellationToken)
- {
- var templateJson = await System.IO.File.ReadAllTextAsync(_adaptiveCardFilePath, cancellationToken);
- var template = new AdaptiveCards.Templating.AdaptiveCardTemplate(templateJson);
-
- var text = query?.Parameters?[0]?.Value as string ?? string.Empty;
- var packages = await FindPackages(text);
- // We take every row of the results and wrap them in cards wrapped in in MessagingExtensionAttachment objects.
- var attachments = packages.Select(package =>
- {
- var previewCard = new ThumbnailCard { Title = package.Item1 };
-
- var adaptiveCardJson = template.Expand(new { name = package.Item1, description = package.Item3 });
- var adaptiveCard = AdaptiveCard.FromJson(adaptiveCardJson).Card;
- if (!string.IsNullOrEmpty(package.Item5))
- {
- previewCard.Images = new List() { new CardImage(package.Item5, "Icon") };
- adaptiveCard.Body.Insert(0, new AdaptiveImage()
- {
- Url = new Uri(package.Item5),
- Style = AdaptiveImageStyle.Person,
- Size = AdaptiveImageSize.Small,
- });
- }
- var attachment = new MessagingExtensionAttachment
- {
- ContentType = AdaptiveCard.ContentType,
- Content = adaptiveCard,
- Preview = previewCard.ToAttachment()
- };
-
- return attachment;
- }).ToList();
-
- return new MessagingExtensionResponse
- {
- ComposeExtension = new MessagingExtensionResult
- {
- Type = "result",
- AttachmentLayout = "list",
- Attachments = attachments
- }
- };
- }
-
- // Generate a set of substrings to illustrate the idea of a set of results coming back from a query.
- private async Task> FindPackages(string text)
- {
- var httpClient = new HttpClient();
- var response = await httpClient.GetStringAsync($"https://azuresearch-usnc.nuget.org/query?q=id:{text}&prerelease=true");
- var obj = JObject.Parse(response);
- return obj["data"].Select(item => (
- item["id"].ToString(),
- item["version"].ToString(),
- item["description"].ToString(),
- item["projectUrl"]?.ToString(),
- item["iconUrl"]?.ToString()));
- }
-}
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/appPackage/color.png b/templates/csharp/message-extension-copilot/appPackage/color.png
deleted file mode 100644
index 11e255fa0b..0000000000
Binary files a/templates/csharp/message-extension-copilot/appPackage/color.png and /dev/null differ
diff --git a/templates/csharp/message-extension-copilot/appPackage/manifest.json.tpl b/templates/csharp/message-extension-copilot/appPackage/manifest.json.tpl
deleted file mode 100644
index f108b45359..0000000000
--- a/templates/csharp/message-extension-copilot/appPackage/manifest.json.tpl
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "$schema": "https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json",
- "manifestVersion": "devPreview",
- "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": "{{appName}}${{APP_NAME_SUFFIX}}",
- "full": "full name for {{appName}}"
- },
- "description": {
- "short": "Find NuGet package according to the NuGet package name.",
- "full": "Find NuGet package according to the NuGet package name."
- },
- "accentColor": "#FFFFFF",
- "bots": [],
- "composeExtensions": [
- {
- "botId": "${{BOT_ID}}",
- "commands": [
- {
- "id": "findNuGetPackage",
- "context": [
- "compose",
- "commandBox"
- ],
- "description": "Find NuGet package according to the NuGet package name",
- "title": "Find NuGet Package",
- "type": "query",
- "semanticDescription": "This command retrieves detailed information about a NuGet package using the provided NuGet package name.",
- "parameters": [
- {
- "name": "NuGetPackageName",
- "title": "NuGet Package Name",
- "description": "The name of the NuGet package to be searched",
- "inputType": "text",
- "semanticDescription": "This parameter is used to identify the specific NuGet package to be queried. Users should provide the exact name of the NuGet package they want to retrieve information for as the value of this parameter."
- }
- ]
- }
- ]
- }
- ],
- "configurableTabs": [],
- "staticTabs": [],
- "permissions": [
- "identity",
- "messageTeamMembers"
- ],
- "validDomains": []
-}
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/appPackage/outline.png b/templates/csharp/message-extension-copilot/appPackage/outline.png
deleted file mode 100644
index f7a4c86447..0000000000
Binary files a/templates/csharp/message-extension-copilot/appPackage/outline.png and /dev/null differ
diff --git a/templates/csharp/message-extension-copilot/appsettings.json b/templates/csharp/message-extension-copilot/appsettings.json
deleted file mode 100644
index 9578f3c646..0000000000
--- a/templates/csharp/message-extension-copilot/appsettings.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft": "Warning",
- "Microsoft.Hosting.Lifetime": "Information"
- }
- },
- "AllowedHosts": "*",
- "BOT_ID": "",
- "BOT_PASSWORD": "",
- "BOT_TYPE": "",
- "BOT_TENANT_ID": ""
-}
diff --git a/templates/csharp/message-extension-copilot/env/.env.dev b/templates/csharp/message-extension-copilot/env/.env.dev
deleted file mode 100644
index df4f9da508..0000000000
--- a/templates/csharp/message-extension-copilot/env/.env.dev
+++ /dev/null
@@ -1,15 +0,0 @@
-# This file includes environment variables that will be committed to git by default.
-
-# Built-in environment variables
-TEAMSFX_ENV=dev
-APP_NAME_SUFFIX=dev
-
-# Updating AZURE_SUBSCRIPTION_ID or AZURE_RESOURCE_GROUP_NAME after provision may also require an update to RESOURCE_SUFFIX, because some services require a globally unique name across subscriptions/resource groups.
-AZURE_SUBSCRIPTION_ID=
-AZURE_RESOURCE_GROUP_NAME=
-RESOURCE_SUFFIX=
-
-# Generated during provision, you can also add your own variables.
-BOT_ID=
-TEAMS_APP_ID=
-BOT_AZURE_APP_SERVICE_RESOURCE_ID=
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/env/.env.dev.user b/templates/csharp/message-extension-copilot/env/.env.dev.user
deleted file mode 100644
index 5fb0bfb4f6..0000000000
--- a/templates/csharp/message-extension-copilot/env/.env.dev.user
+++ /dev/null
@@ -1,3 +0,0 @@
-# This file includes environment variables that will not be committed to git by default. You can set these environment variables in your CI/CD system for your project.
-
-# Secrets. Keys prefixed with `SECRET_` will be masked in Teams Toolkit logs.
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/env/.env.local b/templates/csharp/message-extension-copilot/env/.env.local
deleted file mode 100644
index 2646096121..0000000000
--- a/templates/csharp/message-extension-copilot/env/.env.local
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file includes environment variables that can be committed to git. It's gitignored by default because it represents your local development environment.
-
-# Built-in environment variables
-TEAMSFX_ENV=local
-APP_NAME_SUFFIX=local
-
-# Generated during provision, you can also add your own variables.
-BOT_ID=
-TEAMS_APP_ID=
-BOT_DOMAIN=
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/env/.env.local.user b/templates/csharp/message-extension-copilot/env/.env.local.user
deleted file mode 100644
index fccadc8773..0000000000
--- a/templates/csharp/message-extension-copilot/env/.env.local.user
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file includes environment variables that will not be committed to git by default. You can set these environment variables in your CI/CD system for your project.
-
-# Secrets. Keys prefixed with `SECRET_` will be masked in Teams Toolkit logs.
-SECRET_BOT_PASSWORD=
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/infra/azure.bicep b/templates/csharp/message-extension-copilot/infra/azure.bicep
deleted file mode 100644
index 622703e047..0000000000
--- a/templates/csharp/message-extension-copilot/infra/azure.bicep
+++ /dev/null
@@ -1,86 +0,0 @@
-@maxLength(20)
-@minLength(4)
-@description('Used to generate names for all resources in this file')
-param resourceBaseName string
-
-param webAppSKU string
-
-@maxLength(42)
-param botDisplayName string
-
-param serverfarmsName string = resourceBaseName
-param webAppName string = resourceBaseName
-param identityName string = resourceBaseName
-param location string = resourceGroup().location
-
-resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
- location: location
- name: identityName
-}
-
-// Compute resources for your Web App
-resource serverfarm 'Microsoft.Web/serverfarms@2021-02-01' = {
- kind: 'app'
- location: location
- name: serverfarmsName
- sku: {
- name: webAppSKU
- }
-}
-
-// Web App that hosts your bot
-resource webApp 'Microsoft.Web/sites@2021-02-01' = {
- kind: 'app'
- location: location
- name: webAppName
- properties: {
- serverFarmId: serverfarm.id
- httpsOnly: true
- siteConfig: {
- appSettings: [
- {
- name: 'WEBSITE_RUN_FROM_PACKAGE'
- value: '1'
- }
- {
- name: 'BOT_ID'
- value: identity.properties.clientId
- }
- {
- name: 'BOT_TENANT_ID'
- value: identity.properties.tenantId
- }
- {
- name: 'BOT_TYPE'
- value: 'UserAssignedMsi'
- }
- ]
- ftpsState: 'FtpsOnly'
- }
- }
- identity: {
- type: 'UserAssigned'
- userAssignedIdentities: {
- '${identity.id}': {}
- }
- }
-}
-
-// Register your web service as a bot with the Bot Framework
-module azureBotRegistration './botRegistration/azurebot.bicep' = {
- name: 'Azure-Bot-registration'
- params: {
- resourceBaseName: resourceBaseName
- identityClientId: identity.properties.clientId
- identityResourceId: identity.id
- identityTenantId: identity.properties.tenantId
- botAppDomain: webApp.properties.defaultHostName
- botDisplayName: botDisplayName
- }
-}
-
-// The output will be persisted in .env.{envName}. Visit https://aka.ms/teamsfx-actions/arm-deploy for more details.
-output BOT_AZURE_APP_SERVICE_RESOURCE_ID string = webApp.id
-output BOT_DOMAIN string = webApp.properties.defaultHostName
-output BOT_ID string = identity.properties.clientId
-output BOT_TENANT_ID string = identity.properties.tenantId
diff --git a/templates/csharp/message-extension-copilot/infra/azure.parameters.json.tpl b/templates/csharp/message-extension-copilot/infra/azure.parameters.json.tpl
deleted file mode 100644
index 3a4ada3675..0000000000
--- a/templates/csharp/message-extension-copilot/infra/azure.parameters.json.tpl
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "resourceBaseName": {
- "value": "me${{RESOURCE_SUFFIX}}"
- },
- "webAppSKU": {
- "value": "B1"
- },
- "botDisplayName": {
- "value": "{{appName}}"
- }
- }
- }
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/infra/botRegistration/azurebot.bicep b/templates/csharp/message-extension-copilot/infra/botRegistration/azurebot.bicep
deleted file mode 100644
index 11b7c449ef..0000000000
--- a/templates/csharp/message-extension-copilot/infra/botRegistration/azurebot.bicep
+++ /dev/null
@@ -1,52 +0,0 @@
-@maxLength(20)
-@minLength(4)
-@description('Used to generate names for all resources in this file')
-param resourceBaseName string
-
-@maxLength(42)
-param botDisplayName string
-
-param botServiceName string = resourceBaseName
-param botServiceSku string = 'F0'
-param identityResourceId string
-param identityClientId string
-param identityTenantId string
-param botAppDomain string
-
-// Register your web service as a bot with the Bot Framework
-resource botService 'Microsoft.BotService/botServices@2021-03-01' = {
- kind: 'azurebot'
- location: 'global'
- name: botServiceName
- properties: {
- displayName: botDisplayName
- endpoint: 'https://${botAppDomain}/api/messages'
- msaAppId: identityClientId
- msaAppMSIResourceId: identityResourceId
- msaAppTenantId:identityTenantId
- msaAppType:'UserAssignedMSI'
- }
- sku: {
- name: botServiceSku
- }
-}
-
-// Connect the bot service to Microsoft Teams
-resource botServiceMsTeamsChannel 'Microsoft.BotService/botServices/channels@2021-03-01' = {
- parent: botService
- location: 'global'
- name: 'MsTeamsChannel'
- properties: {
- channelName: 'MsTeamsChannel'
- }
-}
-
-// Connect the bot service to Outlook, and other Microsoft 365 applications
-resource botServiceM365ExtensionsChannel 'Microsoft.BotService/botServices/channels@2022-06-15-preview' = {
- parent: botService
- location: 'global'
- name: 'M365Extensions'
- properties: {
- channelName: 'M365Extensions'
- }
-}
diff --git a/templates/csharp/message-extension-copilot/infra/botRegistration/readme.md b/templates/csharp/message-extension-copilot/infra/botRegistration/readme.md
deleted file mode 100644
index d5416243cd..0000000000
--- a/templates/csharp/message-extension-copilot/infra/botRegistration/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-The `azurebot.bicep` module is provided to help you create Azure Bot service when you don't use Azure to host your app. If you use Azure as infrastrcture for your app, `azure.bicep` under infra folder already leverages this module to create Azure Bot service for you. You don't need to deploy `azurebot.bicep` again.
\ No newline at end of file
diff --git a/templates/csharp/message-extension-copilot/teamsapp.local.yml.tpl b/templates/csharp/message-extension-copilot/teamsapp.local.yml.tpl
deleted file mode 100644
index 98a52f9d60..0000000000
--- a/templates/csharp/message-extension-copilot/teamsapp.local.yml.tpl
+++ /dev/null
@@ -1,135 +0,0 @@
-# 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
-
-provision:
- # Creates a Teams app
- - uses: teamsApp/create
- with:
- # Teams app name
- name: {{appName}}${{APP_NAME_SUFFIX}}
- # Write the information of created resources into environment file for
- # the specified environment variable(s).
- writeToEnvironmentFile:
- teamsAppId: TEAMS_APP_ID
-
- # Create or reuse an existing Microsoft Entra application for bot.
- - uses: aadApp/create
- with:
- # The Microsoft Entra application's display name
- name: {{appName}}${{APP_NAME_SUFFIX}}
- generateClientSecret: true
- signInAudience: AzureADMultipleOrgs
- writeToEnvironmentFile:
- # The Microsoft Entra application's client id created for bot.
- clientId: BOT_ID
- # The Microsoft Entra application's client secret created for bot.
- clientSecret: SECRET_BOT_PASSWORD
- # The Microsoft Entra application's object id created for bot.
- objectId: BOT_OBJECT_ID
-
- # Generate runtime appsettings to JSON file
- - uses: file/createOrUpdateJsonFile
- with:
-{{#isNewProjectTypeEnabled}}
-{{#PlaceProjectFileInSolutionDir}}
- target: ../appsettings.Development.json
-{{/PlaceProjectFileInSolutionDir}}
-{{^PlaceProjectFileInSolutionDir}}
- target: ../{{appName}}/appsettings.Development.json
-{{/PlaceProjectFileInSolutionDir}}
-{{/isNewProjectTypeEnabled}}
-{{^isNewProjectTypeEnabled}}
- target: ./appsettings.Development.json
-{{/isNewProjectTypeEnabled}}
- content:
- BOT_TYPE: 'MultiTenant'
- BOT_ID: ${{BOT_ID}}
- BOT_PASSWORD: ${{SECRET_BOT_PASSWORD}}
-
- # Create or update the bot registration on dev.botframework.com
- - uses: botFramework/create
- with:
- botId: ${{BOT_ID}}
- name: {{appName}}
- messagingEndpoint: ${{BOT_ENDPOINT}}/api/messages
- description: ""
- channels:
- - name: msteams
- - name: m365extensions
-
- # Validate using manifest schema
- - uses: teamsApp/validateManifest
- with:
- # Path to manifest template
- manifestPath: ./appPackage/manifest.json
-
- # 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
-{{^isNewProjectTypeEnabled}}
-
- # Create or update debug profile in lauchsettings file
- - uses: file/createOrUpdateJsonFile
- with:
- target: ./Properties/launchSettings.json
- content:
- profiles:
- Microsoft Teams (browser):
- commandName: "Project"
- dotnetRunMessages: true
- launchBrowser: true
- launchUrl: "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&appTenantId=${{TEAMS_APP_TENANT_ID}}&login_hint=${{TEAMSFX_M365_USER_NAME}}"
- applicationUrl: "https://localhost:7130;http://localhost:5130"
- environmentVariables:
- ASPNETCORE_ENVIRONMENT: "Development"
- hotReloadProfile: "aspnetcore"
- Copilot (browser):
- commandName: "Project"
- dotnetRunMessages: true
- launchBrowser: true
- launchUrl: "https://teams.microsoft.com?appTenantId=${{TEAMS_APP_TENANT_ID}}&login_hint=${{TEAMSFX_M365_USER_NAME}}"
- applicationUrl: "https://localhost:7130;http://localhost:5130"
- environmentVariables:
- ASPNETCORE_ENVIRONMENT: "Development"
- hotReloadProfile: "aspnetcore"
- Outlook (browser):
- commandName: "Project"
- dotnetRunMessages: true
- launchBrowser: true
- launchUrl: "https://outlook.office.com/mail?appTenantId=${{TEAMS_APP_TENANT_ID}}&login_hint=${{TEAMSFX_M365_USER_NAME}}"
- applicationUrl: "https://localhost:7130;http://localhost:5130"
- environmentVariables:
- ASPNETCORE_ENVIRONMENT: "Development"
- hotReloadProfile: "aspnetcore"
-{{/isNewProjectTypeEnabled}}
diff --git a/templates/csharp/message-extension-copilot/teamsapp.yml.tpl b/templates/csharp/message-extension-copilot/teamsapp.yml.tpl
deleted file mode 100644
index 1a8d6a85c8..0000000000
--- a/templates/csharp/message-extension-copilot/teamsapp.yml.tpl
+++ /dev/null
@@ -1,116 +0,0 @@
-# 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: {{appName}}${{APP_NAME_SUFFIX}}
- # Write the information of created resources into environment file for
- # the specified environment variable(s).
- writeToEnvironmentFile:
- teamsAppId: TEAMS_APP_ID
-
- - uses: arm/deploy # Deploy given ARM templates parallelly.
- with:
- # AZURE_SUBSCRIPTION_ID is a built-in environment variable,
- # if its value is empty, TeamsFx will prompt you to select a subscription.
- # Referencing other environment variables with empty values
- # will skip the subscription selection prompt.
- subscriptionId: ${{AZURE_SUBSCRIPTION_ID}}
- # AZURE_RESOURCE_GROUP_NAME is a built-in environment variable,
- # if its value is empty, TeamsFx will prompt you to select or create one
- # resource group.
- # Referencing other environment variables with empty values
- # will skip the resource group selection prompt.
- resourceGroupName: ${{AZURE_RESOURCE_GROUP_NAME}}
- templates:
- - path: ./infra/azure.bicep # Relative path to this file
- # Relative path to this yaml file.
- # Placeholders will be replaced with corresponding environment
- # variable before ARM deployment.
- parameters: ./infra/azure.parameters.json
- # Required when deploying ARM template
- deploymentName: Create-resources-for-mxt
- # Teams Toolkit will download this bicep CLI version from github for you,
- # will use bicep CLI in PATH if you remove this config.
- bicepCliVersion: v0.9.1
-
- # Validate using manifest schema
- - uses: teamsApp/validateManifest
- with:
- # Path to manifest template
- manifestPath: ./appPackage/manifest.json
-
- # 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 deploy' is executed
-deploy:
- - uses: cli/runDotnetCommand
- with:
- args: publish --configuration Release {{ProjectName}}.csproj
-{{#isNewProjectTypeEnabled}}
-{{#PlaceProjectFileInSolutionDir}}
- workingDirectory: ..
-{{/PlaceProjectFileInSolutionDir}}
-{{^PlaceProjectFileInSolutionDir}}
- workingDirectory: ../{{ProjectName}}
-{{/PlaceProjectFileInSolutionDir}}
-{{/isNewProjectTypeEnabled}}
-
- # Deploy your application to Azure App Service using the zip deploy feature.
- # For additional details, refer to https://aka.ms/zip-deploy-to-app-services.
- - uses: azureAppService/zipDeploy
- with:
- # Deploy base folder
- artifactFolder: bin/Release/{{TargetFramework}}/publish
- # The resource id of the cloud resource to be deployed to.
- # This key will be generated by arm/deploy action automatically.
- # You can replace it with your existing Azure Resource id
- # or add it to your environment variable file.
- resourceId: ${{BOT_AZURE_APP_SERVICE_RESOURCE_ID}}
-{{#isNewProjectTypeEnabled}}
-{{#PlaceProjectFileInSolutionDir}}
- workingDirectory: ..
-{{/PlaceProjectFileInSolutionDir}}
-{{^PlaceProjectFileInSolutionDir}}
- workingDirectory: ../{{ProjectName}}
-{{/PlaceProjectFileInSolutionDir}}
-{{/isNewProjectTypeEnabled}}
diff --git a/templates/csharp/message-extension-copilot/{{ProjectName}}.csproj.tpl b/templates/csharp/message-extension-copilot/{{ProjectName}}.csproj.tpl
deleted file mode 100644
index 7ff0d2316e..0000000000
--- a/templates/csharp/message-extension-copilot/{{ProjectName}}.csproj.tpl
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- {{TargetFramework}}
- enable
-
-
-{{^isNewProjectTypeEnabled}}
-
-
-
-
-
-
-
-
-
-{{/isNewProjectTypeEnabled}}
-
-
-
-
-
-
-
-
-
-
diff --git a/templates/js/message-extension-copilot/.gitignore b/templates/js/message-extension-copilot/.gitignore
deleted file mode 100644
index e82f670672..0000000000
--- a/templates/js/message-extension-copilot/.gitignore
+++ /dev/null
@@ -1,17 +0,0 @@
-# TeamsFx files
-# env/.env.*.user
-# env/.env.local
-.localConfigs
-.localConfigs.testTool
-.notification.localstore.json
-.notification.testtoolstore.json
-/devTools
-appPackage/build
-
-# dependencies
-node_modules/
-
-# misc
-.env
-.deployment
-.DS_Store
diff --git a/templates/js/message-extension-copilot/.localConfigs b/templates/js/message-extension-copilot/.localConfigs
deleted file mode 100644
index 38398a297a..0000000000
--- a/templates/js/message-extension-copilot/.localConfigs
+++ /dev/null
@@ -1,3 +0,0 @@
-# A gitignored place holder file for local runtime configurations
-BOT_ID=
-BOT_PASSWORD=
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/.vscode/extensions.json b/templates/js/message-extension-copilot/.vscode/extensions.json
deleted file mode 100644
index aac0a6e347..0000000000
--- a/templates/js/message-extension-copilot/.vscode/extensions.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "recommendations": [
- "TeamsDevApp.ms-teams-vscode-extension"
- ]
-}
diff --git a/templates/js/message-extension-copilot/.vscode/launch.json.tpl b/templates/js/message-extension-copilot/.vscode/launch.json.tpl
deleted file mode 100644
index 8bb8cb138c..0000000000
--- a/templates/js/message-extension-copilot/.vscode/launch.json.tpl
+++ /dev/null
@@ -1,293 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Launch Remote in Teams (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}",
- "presentation": {
- "group": "group 1: Teams",
- "order": 4
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Teams (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}",
- "presentation": {
- "group": "group 1: Teams",
- "order": 5
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Outlook (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://outlook.office.com/mail?${account-hint}",
- "presentation": {
- "group": "group 2: Outlook",
- "order": 3
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Outlook (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://outlook.office.com/mail?${account-hint}",
- "presentation": {
- "group": "group 2: Outlook",
- "order": 3
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Copilot (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://teams.microsoft.com?${account-hint}",
- "presentation": {
- "group": "group 2: Copilot",
- "order": 3
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Copilot (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://teams.microsoft.com?${account-hint}",
- "presentation": {
- "group": "group 2: Copilot",
- "order": 3
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch App in Teams (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Launch App in Teams (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Launch App in Outlook (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://outlook.office.com/mail?${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Launch App in Outlook (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://outlook.office.com/mail?${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Launch App in Copilot (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://teams.microsoft.com?${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Launch App in Copilot (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://teams.microsoft.com?${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Attach to Local Service",
- "type": "node",
- "request": "attach",
- "port": 9239,
- "restart": true,
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Teams (Desktop)",
- "type": "node",
- "request": "launch",
- "preLaunchTask": "Start Teams App in Desktop Client (Remote)",
- "presentation": {
- "group": "group 1: Teams",
- "order": 6
- },
- "internalConsoleOptions": "neverOpen",
- }
- ],
- "compounds": [
- {
- "name": "Debug in Test Tool",
- "configurations": [
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App (Test Tool)",
- "presentation": {
-{{#enableMETestToolByDefault}}
- "group": "group 0: Teams App Test Tool",
-{{/enableMETestToolByDefault}}
-{{^enableMETestToolByDefault}}
- "group": "group 3: Teams App Test Tool",
-{{/enableMETestToolByDefault}}
- "order": 1
- },
- "stopAll": true
- },
- {
- "name": "Debug in Teams (Edge)",
- "configurations": [
- "Launch App in Teams (Edge)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally",
- "presentation": {
- "group": "group 1: Teams",
- "order": 1
- },
- "stopAll": true
- },
- {
- "name": "Debug in Teams (Chrome)",
- "configurations": [
- "Launch App in Teams (Chrome)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally",
- "presentation": {
- "group": "group 1: Teams",
- "order": 2
- },
- "stopAll": true
- },
- {
- "name": "Debug in Teams (Desktop)",
- "configurations": [
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App in Desktop Client",
- "presentation": {
- "group": "group 1: Teams",
- "order": 3
- },
- "stopAll": true
- },
- {
- "name": "Debug in Outlook (Edge)",
- "configurations": [
- "Launch App in Outlook (Edge)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally",
- "presentation": {
- "group": "group 2: Outlook",
- "order": 1
- },
- "stopAll": true
- },
- {
- "name": "Debug in Outlook (Chrome)",
- "configurations": [
- "Launch App in Outlook (Chrome)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally",
- "presentation": {
- "group": "group 2: Outlook",
- "order": 2
- },
- "stopAll": true
- },
- {
- "name": "Debug in Copilot (Edge)",
- "configurations": [
- "Launch App in Copilot (Edge)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally (Copilot)",
- "presentation": {
- "group": "group 2: Copilot",
- "order": 1
- },
- "stopAll": true
- },
- {
- "name": "Debug in Copilot (Chrome)",
- "configurations": [
- "Launch App in Copilot (Chrome)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally (Copilot)",
- "presentation": {
- "group": "group 2: Copilot",
- "order": 2
- },
- "stopAll": true
- }
- ]
-}
diff --git a/templates/js/message-extension-copilot/.vscode/settings.json b/templates/js/message-extension-copilot/.vscode/settings.json
deleted file mode 100644
index 4299620253..0000000000
--- a/templates/js/message-extension-copilot/.vscode/settings.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "debug.onTaskErrors": "abort",
- "json.schemas": [
- {
- "fileMatch": [
- "/aad.*.json"
- ],
- "schema": {}
- }
- ]
-}
diff --git a/templates/js/message-extension-copilot/.vscode/tasks.json b/templates/js/message-extension-copilot/.vscode/tasks.json
deleted file mode 100644
index 2e9b16cefc..0000000000
--- a/templates/js/message-extension-copilot/.vscode/tasks.json
+++ /dev/null
@@ -1,256 +0,0 @@
-// This file is automatically generated by Teams Toolkit.
-// The teamsfx tasks defined in this file require Teams Toolkit version >= 5.0.0.
-// See https://aka.ms/teamsfx-tasks for details on how to customize each task.
-{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "Start Teams App (Test Tool)",
- "dependsOn": [
- "Validate prerequisites (Test Tool)",
- "Deploy (Test Tool)",
- "Start application (Test Tool)",
- "Start Test Tool"
- ],
- "dependsOrder": "sequence"
- },
- {
- // Check all required prerequisites.
- // See https://aka.ms/teamsfx-tasks/check-prerequisites to know the details and how to customize the args.
- "label": "Validate prerequisites (Test Tool)",
- "type": "teamsfx",
- "command": "debug-check-prerequisites",
- "args": {
- "prerequisites": [
- "nodejs", // Validate if Node.js is installed.
- "portOccupancy" // Validate available ports to ensure those debug ones are not occupied.
- ],
- "portOccupancy": [
- 3978, // app service port
- 9239, // app inspector port for Node.js debugger
- 56150 // test tool port
- ]
- }
- },
- {
- // Build project.
- // See https://aka.ms/teamsfx-tasks/deploy to know the details and how to customize the args.
- "label": "Deploy (Test Tool)",
- "type": "teamsfx",
- "command": "deploy",
- "args": {
- "env": "testtool"
- }
- },
- {
- "label": "Start application (Test Tool)",
- "type": "shell",
- "command": "npm run dev:teamsfx:testtool",
- "isBackground": true,
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": {
- "pattern": [
- {
- "regexp": "^.*$",
- "file": 0,
- "location": 1,
- "message": 2
- }
- ],
- "background": {
- "activeOnStart": true,
- "beginsPattern": "[nodemon] starting",
- "endsPattern": "app listening to|Bot/ME service listening at|[nodemon] app crashed"
- }
- }
- },
- {
- "label": "Start Test Tool",
- "type": "shell",
- "command": "npm run dev:teamsfx:launch-testtool",
- "isBackground": true,
- "options": {
- "env": {
- "PATH": "${workspaceFolder}/devTools/teamsapptester/node_modules/.bin:${env:PATH}"
- }
- },
- "windows": {
- "options": {
- "env": {
- "PATH": "${workspaceFolder}/devTools/teamsapptester/node_modules/.bin;${env:PATH}"
- }
- }
- },
- "problemMatcher": {
- "pattern": [
- {
- "regexp": "^.*$",
- "file": 0,
- "location": 1,
- "message": 2
- }
- ],
- "background": {
- "activeOnStart": true,
- "beginsPattern": ".*",
- "endsPattern": "Listening on"
- }
- },
- "presentation": {
- "panel": "dedicated",
- "reveal": "silent"
- }
- },
- {
- "label": "Start Teams App Locally",
- "dependsOn": [
- "Validate prerequisites",
- "Start local tunnel",
- "Provision",
- "Deploy",
- "Start application"
- ],
- "dependsOrder": "sequence"
- },
- {
- "label": "Start Teams App Locally (Copilot)",
- "dependsOn": [
- "Validate prerequisites",
- "Validate Copilot access",
- "Start local tunnel",
- "Provision",
- "Deploy",
- "Start application"
- ],
- "dependsOrder": "sequence"
- },
- {
- // Check all required prerequisites.
- // See https://aka.ms/teamsfx-tasks/check-prerequisites to know the details and how to customize the args.
- "label": "Validate prerequisites",
- "type": "teamsfx",
- "command": "debug-check-prerequisites",
- "args": {
- "prerequisites": [
- "nodejs", // Validate if Node.js is installed.
- "m365Account", // Sign-in prompt for Microsoft 365 account, then validate if the account enables the sideloading permission.
- "portOccupancy" // Validate available ports to ensure those debug ones are not occupied.
- ],
- "portOccupancy": [
- 3978, // app service port
- 9239 // app inspector port for Node.js debugger
- ]
- }
- },
- {
- // Check Copilot access.
- // See https://aka.ms/teamsfx-tasks/check-prerequisites to know the details and how to customize the args.
- "label": "Validate Copilot access",
- "type": "teamsfx",
- "command": "debug-check-prerequisites",
- "args": {
- "prerequisites": [
- "copilotAccess" // Validate if the account has Copilot access.
- ]
- }
- },
- {
- // Start the local tunnel service to forward public URL to local port and inspect traffic.
- // See https://aka.ms/teamsfx-tasks/local-tunnel for the detailed args definitions.
- "label": "Start local tunnel",
- "type": "teamsfx",
- "command": "debug-start-local-tunnel",
- "args": {
- "type": "dev-tunnel",
- "ports": [
- {
- "portNumber": 3978,
- "protocol": "http",
- "access": "public",
- "writeToEnvironmentFile": {
- "endpoint": "BOT_ENDPOINT", // output tunnel endpoint as BOT_ENDPOINT
- "domain": "BOT_DOMAIN" // output tunnel domain as BOT_DOMAIN
- }
- }
- ],
- "env": "local"
- },
- "isBackground": true,
- "problemMatcher": "$teamsfx-local-tunnel-watch"
- },
- {
- // Create the debug resources.
- // See https://aka.ms/teamsfx-tasks/provision to know the details and how to customize the args.
- "label": "Provision",
- "type": "teamsfx",
- "command": "provision",
- "args": {
- "env": "local"
- }
- },
- {
- // Build project.
- // See https://aka.ms/teamsfx-tasks/deploy to know the details and how to customize the args.
- "label": "Deploy",
- "type": "teamsfx",
- "command": "deploy",
- "args": {
- "env": "local"
- }
- },
- {
- "label": "Start application",
- "type": "shell",
- "command": "npm run dev:teamsfx",
- "isBackground": true,
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": {
- "pattern": [
- {
- "regexp": "^.*$",
- "file": 0,
- "location": 1,
- "message": 2
- }
- ],
- "background": {
- "activeOnStart": true,
- "beginsPattern": "[nodemon] starting",
- "endsPattern": "app listening to|Bot/ME service listening at|[nodemon] app crashed"
- }
- }
- },
- {
- "label": "Start Teams App in Desktop Client",
- "dependsOn": [
- "Validate prerequisites",
- "Start local tunnel",
- "Provision",
- "Deploy",
- "Start application",
- "Start desktop client"
- ],
- "dependsOrder": "sequence"
- },
- {
- "label": "Start desktop client",
- "type": "teamsfx",
- "command": "launch-desktop-client",
- "args": {
- "url": "teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true"
- }
- },
- {
- "label": "Start Teams App in Desktop Client (Remote)",
- "type": "teamsfx",
- "command": "launch-desktop-client",
- "args": {
- "url": "teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true"
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/.webappignore b/templates/js/message-extension-copilot/.webappignore
deleted file mode 100644
index 50d2cf4484..0000000000
--- a/templates/js/message-extension-copilot/.webappignore
+++ /dev/null
@@ -1,28 +0,0 @@
-.webappignore
-.fx
-.deployment
-.localConfigs
-.localConfigs.testTool
-.notification.localstore.json
-.notification.testtoolstore.json
-/devTools
-.vscode
-*.js.map
-*.ts.map
-*.ts
-.git*
-.tsbuildinfo
-CHANGELOG.md
-readme.md
-local.settings.json
-test
-tsconfig.json
-.DS_Store
-teamsapp.yml
-teamsapp.*.yml
-/env/
-/node_modules/.bin
-/node_modules/ts-node
-/node_modules/typescript
-/appPackage/
-/infra/
diff --git a/templates/js/message-extension-copilot/README.md.tpl b/templates/js/message-extension-copilot/README.md.tpl
deleted file mode 100644
index 60a9c618b6..0000000000
--- a/templates/js/message-extension-copilot/README.md.tpl
+++ /dev/null
@@ -1,85 +0,0 @@
-# Overview of Custom Search Results template
-
-This app template is a search-based [message extension](https://docs.microsoft.com/microsoftteams/platform/messaging-extensions/what-are-messaging-extensions?tabs=nodejs) that allows users to search an external system and share results through the compose message area of the Microsoft Teams client. You can now build and run your search-based message extensions in Teams, Copilot for Windows desktop and web experiences.
-
-## Get started with the template
-
-> **Prerequisites**
->
-> To run the template in your local dev machine, you will need:
->
-> - [Node.js](https://nodejs.org/), supported versions: 18, 20
-> - A [Microsoft 365 account for development](https://docs.microsoft.com/microsoftteams/platform/toolkit/accounts)
-> - [Set up your dev environment for extending Teams apps across Microsoft 365](https://aka.ms/teamsfx-m365-apps-prerequisites)
-> Please note that after you enrolled your developer tenant in Office 365 Target Release, it may take couple days for the enrollment to take effect.
-> - [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)
-
-> For local debugging using Teams Toolkit CLI, you need to do some extra steps described in [Set up your Teams Toolkit CLI for local debugging](https://aka.ms/teamsfx-cli-debugging).
-
-1. First, select the Teams Toolkit icon on the left in the VS Code toolbar.
-{{^enableMETestToolByDefault}}
-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.
-{{/enableMETestToolByDefault}}
-{{#enableMETestToolByDefault}}
-3. To directly trigger the Message Extension in Teams App Test Tool, you can:
- 1. Press F5 to start debugging which launches your app in Teams App Test Tool using a web browser. Select `Debug in Test Tool`.
- 2. When Test Tool launches in the browser, click the `+` in compose message area and select `Search command` to trigger the search commands.
-{{/enableMETestToolByDefault}}
-3. To directly trigger the Message Extension in Teams, you can:
- 1. Press F5 to start debugging which launches your app in Teams using a web browser. Select `Debug in Teams (Edge)` or `Debug in Teams (Chrome)`.
- 2. When Teams launches in the browser, select the Add button in the dialog to install your app to Teams.
- 3. `@mention` Your message extension from the `search box area`, `@mention` your message extension from the `compose message area` or click the `...` under compose message area to find your message extension.
-4. To trigger the Message Extension through Copilot, you can:
- 1. Select `Debug in Copilot (Edge)` or `Debug in Copilot (Chrome)` from the launch configuration dropdown.
- 2. When Teams launches in the browser, click the `Apps` icon from Teams client left rail to open Teams app store and search for `Copilot`.
- 3. Open the `Copilot` app, select `Plugins`, and from the list of plugins, turn on the toggle for your message extension. Now, you can send a prompt to trigger your plugin.
- 4. Send a message to Copilot to find an NPM package information. For example: `Find the npm package info on teamsfx-react`.
- > Note: This prompt may not always make Copilot include a response from your message extension. If it happens, try some other prompts or leave a feedback to us by thumbing down the Copilot response and leave a message tagged with [MessageExtension].
-
-**Congratulations**! You are running an application that can now search npm registries in Teams and Copilot.
-
-![Search ME Copilot](https://github.com/OfficeDev/TeamsFx/assets/107838226/0beaa86e-d446-4ab3-a701-eec205d1b367)
-
-## What's included in the template
-
-| Folder | Contents |
-| ------------- | -------------------------------------------- |
-| `.vscode/` | VSCode files for debugging |
-| `appPackage/` | Templates for the Teams application manifest |
-| `env/` | Environment files |
-| `infra/` | Templates for provisioning Azure resources |
-| `src/` | The source code for the search application |
-
-The following files can be customized and demonstrate an example implementation to get you started.
-
-| File | Contents |
-| ------------------ | ---------------------------------------------------------------------------------------------- |
-| `src/searchApp.js` | Handles the business logic for this app template to query npm registry and return result list. |
-| `src/index.js` | `index.js` is used to setup and configure the Message Extension. |
-
-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. |
-| `teamsapp.local.yml` | This overrides `teamsapp.yml` with actions that enable local execution and debugging. |
-| `teamsapp.testtool.yml`| This overrides `teamsapp.yml` with actions that enable local execution and debugging in Teams App Test Tool. |
-
-## Extend the template
-
-Following documentation will help you to extend the template.
-
-- [Add or manage the environment](https://learn.microsoft.com/microsoftteams/platform/toolkit/teamsfx-multi-env)
-- [Create multi-capability app](https://learn.microsoft.com/microsoftteams/platform/toolkit/add-capability)
-- [Add single sign on to your app](https://learn.microsoft.com/microsoftteams/platform/toolkit/add-single-sign-on)
-- [Access data in Microsoft Graph](https://learn.microsoft.com/microsoftteams/platform/toolkit/teamsfx-sdk#microsoft-graph-scenarios)
-- [Use an existing Microsoft Entra application](https://learn.microsoft.com/microsoftteams/platform/toolkit/use-existing-aad-app)
-- [Customize the Teams app manifest](https://learn.microsoft.com/microsoftteams/platform/toolkit/teamsfx-preview-and-customize-app-manifest)
-- Host your app in Azure by [provision cloud resources](https://learn.microsoft.com/microsoftteams/platform/toolkit/provision) and [deploy the code to cloud](https://learn.microsoft.com/microsoftteams/platform/toolkit/deploy)
-- [Collaborate on app development](https://learn.microsoft.com/microsoftteams/platform/toolkit/teamsfx-collaboration)
-- [Set up the CI/CD pipeline](https://learn.microsoft.com/microsoftteams/platform/toolkit/use-cicd-template)
-- [Publish the app to your organization or the Microsoft Teams app store](https://learn.microsoft.com/microsoftteams/platform/toolkit/publish)
-- [Develop with Teams Toolkit CLI](https://aka.ms/teams-toolkit-cli/debug)
-- [Preview the app on mobile clients](https://aka.ms/teamsfx-mobile)
-- [Extend Microsoft 365 Copilot](https://aka.ms/teamsfx-copilot-plugin)
diff --git a/templates/js/message-extension-copilot/appPackage/color.png b/templates/js/message-extension-copilot/appPackage/color.png
deleted file mode 100644
index 11e255fa0b..0000000000
Binary files a/templates/js/message-extension-copilot/appPackage/color.png and /dev/null differ
diff --git a/templates/js/message-extension-copilot/appPackage/manifest.json.tpl b/templates/js/message-extension-copilot/appPackage/manifest.json.tpl
deleted file mode 100644
index b5b8e7221c..0000000000
--- a/templates/js/message-extension-copilot/appPackage/manifest.json.tpl
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "$schema": "https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json",
- "manifestVersion": "devPreview",
- "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": "{{appName}}${{APP_NAME_SUFFIX}}",
- "full": "full name for {{appName}}"
- },
- "description": {
- "short": "Find npm package by name.",
- "full": "Find npm package according to the npm package name."
- },
- "accentColor": "#FFFFFF",
- "bots": [],
- "composeExtensions": [
- {
- "botId": "${{BOT_ID}}",
- "commands": [
- {
- "id": "findNpmPackage",
- "context": [
- "compose",
- "commandBox"
- ],
- "description": "Find npm package according to the npm package name",
- "title": "Find Npm Package",
- "type": "query",
- "semanticDescription": "This command retrieves detailed information about an npm package using the provided npm package name.",
- "parameters": [
- {
- "name": "NpmPackageName",
- "title": "Npm Package Name",
- "description": "The name of the npm package to be searched",
- "inputType": "text",
- "semanticDescription": "This parameter is used to identify the specific npm package to be queried. Users should provide the exact name of the npm package they want to retrieve information for as the value of this parameter."
- }
- ]
- }
- ]
- }
- ],
- "configurableTabs": [],
- "staticTabs": [],
- "permissions": [
- "identity",
- "messageTeamMembers"
- ],
- "validDomains": []
-}
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/appPackage/outline.png b/templates/js/message-extension-copilot/appPackage/outline.png
deleted file mode 100644
index f7a4c86447..0000000000
Binary files a/templates/js/message-extension-copilot/appPackage/outline.png and /dev/null differ
diff --git a/templates/js/message-extension-copilot/env/.env.dev b/templates/js/message-extension-copilot/env/.env.dev
deleted file mode 100644
index 4b07861c03..0000000000
--- a/templates/js/message-extension-copilot/env/.env.dev
+++ /dev/null
@@ -1,16 +0,0 @@
-# This file includes environment variables that will be committed to git by default.
-
-# Built-in environment variables
-TEAMSFX_ENV=dev
-APP_NAME_SUFFIX=dev
-
-# Updating AZURE_SUBSCRIPTION_ID or AZURE_RESOURCE_GROUP_NAME after provision may also require an update to RESOURCE_SUFFIX, because some services require a globally unique name across subscriptions/resource groups.
-AZURE_SUBSCRIPTION_ID=
-AZURE_RESOURCE_GROUP_NAME=
-RESOURCE_SUFFIX=
-
-# Generated during provision, you can also add your own variables.
-BOT_ID=
-TEAMS_APP_ID=
-BOT_AZURE_APP_SERVICE_RESOURCE_ID=
-BOT_DOMAIN=
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/env/.env.dev.user b/templates/js/message-extension-copilot/env/.env.dev.user
deleted file mode 100644
index 2bf4ab048e..0000000000
--- a/templates/js/message-extension-copilot/env/.env.dev.user
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file includes environment variables that will not be committed to git by default. You can set these environment variables in your CI/CD system for your project.
-
-# If you're adding a secret value, add SECRET_ prefix to the name so Teams Toolkit can handle them properly
-# Secrets. Keys prefixed with `SECRET_` will be masked in Teams Toolkit logs.
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/env/.env.local b/templates/js/message-extension-copilot/env/.env.local
deleted file mode 100644
index f3a75f8723..0000000000
--- a/templates/js/message-extension-copilot/env/.env.local
+++ /dev/null
@@ -1,11 +0,0 @@
-# This file includes environment variables that can be committed to git. It's gitignored by default because it represents your local development environment.
-
-# Built-in environment variables
-TEAMSFX_ENV=local
-APP_NAME_SUFFIX=local
-
-# Generated during provision, you can also add your own variables.
-BOT_ID=
-TEAMS_APP_ID=
-BOT_DOMAIN=
-BOT_ENDPOINT=
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/env/.env.local.user b/templates/js/message-extension-copilot/env/.env.local.user
deleted file mode 100644
index 46f98fc36b..0000000000
--- a/templates/js/message-extension-copilot/env/.env.local.user
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file includes environment variables that will not be committed to git by default. You can set these environment variables in your CI/CD system for your project.
-
-# If you're adding a secret value, add SECRET_ prefix to the name so Teams Toolkit can handle them properly
-# Secrets. Keys prefixed with `SECRET_` will be masked in Teams Toolkit logs.
-SECRET_BOT_PASSWORD=
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/env/.env.testtool b/templates/js/message-extension-copilot/env/.env.testtool
deleted file mode 100644
index 43ce12aad3..0000000000
--- a/templates/js/message-extension-copilot/env/.env.testtool
+++ /dev/null
@@ -1,8 +0,0 @@
-# This file includes environment variables that can be committed to git. It's gitignored by default because it represents your local development environment.
-
-# Built-in environment variables
-TEAMSFX_ENV=testtool
-
-# Environment variables used by test tool
-TEAMSAPPTESTER_PORT=56150
-TEAMSFX_NOTIFICATION_STORE_FILENAME=.notification.testtoolstore.json
diff --git a/templates/js/message-extension-copilot/infra/azure.bicep b/templates/js/message-extension-copilot/infra/azure.bicep
deleted file mode 100644
index e2bf38d575..0000000000
--- a/templates/js/message-extension-copilot/infra/azure.bicep
+++ /dev/null
@@ -1,95 +0,0 @@
-@maxLength(20)
-@minLength(4)
-@description('Used to generate names for all resources in this file')
-param resourceBaseName string
-
-param webAppSKU string
-
-@maxLength(42)
-param botDisplayName string
-
-param serverfarmsName string = resourceBaseName
-param webAppName string = resourceBaseName
-param identityName string = resourceBaseName
-param location string = resourceGroup().location
-
-resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
- location: location
- name: identityName
-}
-
-// Compute resources for your Web App
-resource serverfarm 'Microsoft.Web/serverfarms@2021-02-01' = {
- kind: 'app'
- location: location
- name: serverfarmsName
- sku: {
- name: webAppSKU
- }
-}
-
-// Web App that hosts your bot
-resource webApp 'Microsoft.Web/sites@2021-02-01' = {
- kind: 'app'
- location: location
- name: webAppName
- properties: {
- serverFarmId: serverfarm.id
- httpsOnly: true
- siteConfig: {
- alwaysOn: true
- appSettings: [
- {
- name: 'WEBSITE_RUN_FROM_PACKAGE'
- value: '1' // Run Azure APP Service from a package file
- }
- {
- name: 'WEBSITE_NODE_DEFAULT_VERSION'
- value: '~18' // Set NodeJS version to 18.x for your site
- }
- {
- name: 'RUNNING_ON_AZURE'
- value: '1'
- }
- {
- name: 'BOT_ID'
- value: identity.properties.clientId
- }
- {
- name: 'BOT_TENANT_ID'
- value: identity.properties.tenantId
- }
- {
- name: 'BOT_TYPE'
- value: 'UserAssignedMsi'
- }
- ]
- ftpsState: 'FtpsOnly'
- }
- }
- identity: {
- type: 'UserAssigned'
- userAssignedIdentities: {
- '${identity.id}': {}
- }
- }
-}
-
-// Register your web service as a bot with the Bot Framework
-module azureBotRegistration './botRegistration/azurebot.bicep' = {
- name: 'Azure-Bot-registration'
- params: {
- resourceBaseName: resourceBaseName
- identityClientId: identity.properties.clientId
- identityResourceId: identity.id
- identityTenantId: identity.properties.tenantId
- botAppDomain: webApp.properties.defaultHostName
- botDisplayName: botDisplayName
- }
-}
-
-// The output will be persisted in .env.{envName}. Visit https://aka.ms/teamsfx-actions/arm-deploy for more details.
-output BOT_AZURE_APP_SERVICE_RESOURCE_ID string = webApp.id
-output BOT_DOMAIN string = webApp.properties.defaultHostName
-output BOT_ID string = identity.properties.clientId
-output BOT_TENANT_ID string = identity.properties.tenantId
diff --git a/templates/js/message-extension-copilot/infra/azure.parameters.json.tpl b/templates/js/message-extension-copilot/infra/azure.parameters.json.tpl
deleted file mode 100644
index f7b8541939..0000000000
--- a/templates/js/message-extension-copilot/infra/azure.parameters.json.tpl
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "resourceBaseName": {
- "value": "ME${{RESOURCE_SUFFIX}}"
- },
- "webAppSKU": {
- "value": "B1"
- },
- "botDisplayName": {
- "value": "{{appName}}"
- }
- }
-}
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/infra/botRegistration/azurebot.bicep b/templates/js/message-extension-copilot/infra/botRegistration/azurebot.bicep
deleted file mode 100644
index 11b7c449ef..0000000000
--- a/templates/js/message-extension-copilot/infra/botRegistration/azurebot.bicep
+++ /dev/null
@@ -1,52 +0,0 @@
-@maxLength(20)
-@minLength(4)
-@description('Used to generate names for all resources in this file')
-param resourceBaseName string
-
-@maxLength(42)
-param botDisplayName string
-
-param botServiceName string = resourceBaseName
-param botServiceSku string = 'F0'
-param identityResourceId string
-param identityClientId string
-param identityTenantId string
-param botAppDomain string
-
-// Register your web service as a bot with the Bot Framework
-resource botService 'Microsoft.BotService/botServices@2021-03-01' = {
- kind: 'azurebot'
- location: 'global'
- name: botServiceName
- properties: {
- displayName: botDisplayName
- endpoint: 'https://${botAppDomain}/api/messages'
- msaAppId: identityClientId
- msaAppMSIResourceId: identityResourceId
- msaAppTenantId:identityTenantId
- msaAppType:'UserAssignedMSI'
- }
- sku: {
- name: botServiceSku
- }
-}
-
-// Connect the bot service to Microsoft Teams
-resource botServiceMsTeamsChannel 'Microsoft.BotService/botServices/channels@2021-03-01' = {
- parent: botService
- location: 'global'
- name: 'MsTeamsChannel'
- properties: {
- channelName: 'MsTeamsChannel'
- }
-}
-
-// Connect the bot service to Outlook, and other Microsoft 365 applications
-resource botServiceM365ExtensionsChannel 'Microsoft.BotService/botServices/channels@2022-06-15-preview' = {
- parent: botService
- location: 'global'
- name: 'M365Extensions'
- properties: {
- channelName: 'M365Extensions'
- }
-}
diff --git a/templates/js/message-extension-copilot/infra/botRegistration/readme.md b/templates/js/message-extension-copilot/infra/botRegistration/readme.md
deleted file mode 100644
index d5416243cd..0000000000
--- a/templates/js/message-extension-copilot/infra/botRegistration/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-The `azurebot.bicep` module is provided to help you create Azure Bot service when you don't use Azure to host your app. If you use Azure as infrastrcture for your app, `azure.bicep` under infra folder already leverages this module to create Azure Bot service for you. You don't need to deploy `azurebot.bicep` again.
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/package.json.tpl b/templates/js/message-extension-copilot/package.json.tpl
deleted file mode 100644
index 407e18cc7a..0000000000
--- a/templates/js/message-extension-copilot/package.json.tpl
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "{{SafeProjectNameLowerCase}}",
- "version": "1.0.0",
- "msteams": {
- "teamsAppId": null
- },
- "description": "Microsoft Teams Toolkit message extension search sample",
- "engines": {
- "node": "18 || 20"
- },
- "author": "Microsoft",
- "license": "MIT",
- "main": "./src/index.js",
- "scripts": {
- "dev:teamsfx": "env-cmd --silent -f .localConfigs npm run dev",
- "dev:teamsfx:testtool": "env-cmd --silent -f .localConfigs.testTool npm run dev",
- "dev:teamsfx:launch-testtool": "env-cmd --silent -f env/.env.testtool teamsapptester start",
- "dev": "nodemon --inspect=9239 --signal SIGINT ./src/index.js",
- "start": "node ./src/index.js",
- "watch": "nodemon ./src/index.js"
- },
- "dependencies": {
- "adaptive-expressions": "^4.20.0",
- "adaptivecards-templating": "^2.3.1",
- "adaptivecards": "^3.0.1",
- "botbuilder": "^4.23.1",
- "express": "^5.0.1"
- },
- "devDependencies": {
- "env-cmd": "^10.1.0",
- "nodemon": "^3.0.1"
- }
-}
diff --git a/templates/js/message-extension-copilot/src/adaptiveCards/helloWorldCard.json b/templates/js/message-extension-copilot/src/adaptiveCards/helloWorldCard.json
deleted file mode 100644
index 4da34b7db5..0000000000
--- a/templates/js/message-extension-copilot/src/adaptiveCards/helloWorldCard.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "AdaptiveCard",
- "body": [
- {
- "type": "TextBlock",
- "text": "${name}",
- "wrap": true,
- "size": "Large"
- },
- {
- "type": "TextBlock",
- "text": "${description}",
- "wrap": true,
- "size": "Medium"
- }
- ],
- "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
- "version": "1.4"
-}
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/src/config.js b/templates/js/message-extension-copilot/src/config.js
deleted file mode 100644
index ea6b1a595c..0000000000
--- a/templates/js/message-extension-copilot/src/config.js
+++ /dev/null
@@ -1,8 +0,0 @@
-const config = {
- MicrosoftAppId: process.env.BOT_ID,
- MicrosoftAppType: process.env.BOT_TYPE,
- MicrosoftAppTenantId: process.env.BOT_TENANT_ID,
- MicrosoftAppPassword: process.env.BOT_PASSWORD,
-};
-
-module.exports = config;
diff --git a/templates/js/message-extension-copilot/src/index.js b/templates/js/message-extension-copilot/src/index.js
deleted file mode 100644
index 6d7cb11540..0000000000
--- a/templates/js/message-extension-copilot/src/index.js
+++ /dev/null
@@ -1,62 +0,0 @@
-// index.js is used to setup and configure your bot
-
-// Import required packages
-const express = require("express");
-
-// Import required bot services.
-// See https://aka.ms/bot-services to learn more about the different parts of a bot.
-const {
- CloudAdapter,
- ConfigurationServiceClientCredentialFactory,
- ConfigurationBotFrameworkAuthentication,
-} = require("botbuilder");
-const { SearchApp } = require("./searchApp");
-const config = require("./config");
-
-// Create adapter.
-// See https://aka.ms/about-bot-adapter to learn more about adapters.
-const credentialsFactory = new ConfigurationServiceClientCredentialFactory(config);
-
-const botFrameworkAuthentication = new ConfigurationBotFrameworkAuthentication(
- {},
- credentialsFactory
-);
-
-const adapter = new CloudAdapter(botFrameworkAuthentication);
-
-adapter.onTurnError = async (context, error) => {
- // This check writes out errors to console log .vs. app insights.
- // NOTE: In production environment, you should consider logging this to Azure
- // application insights. See https://aka.ms/bottelemetry for telemetry
- // configuration instructions.
- console.error(`\n [onTurnError] unhandled error: ${error}`);
-
- // Send a message to the user
- await context.sendActivity(`The bot encountered an unhandled error:\n ${error.message}`);
- await context.sendActivity("To continue to run this bot, please fix the bot source code.");
-};
-
-// Create the bot that will handle incoming messages.
-const searchApp = new SearchApp();
-
-// Create express application.
-const expressApp = express();
-expressApp.use(express.json());
-
-const server = expressApp.listen(process.env.port || process.env.PORT || 3978, () => {
- console.log(`\nBot Started, ${expressApp.name} listening to`, server.address());
-});
-
-// Listen for incoming requests.
-expressApp.post("/api/messages", async (req, res) => {
- await adapter.process(req, res, async (context) => {
- await searchApp.run(context);
- });
-});
-
-// Gracefully shutdown HTTP server
-["exit", "uncaughtException", "SIGINT", "SIGTERM", "SIGUSR1", "SIGUSR2"].forEach((event) => {
- process.on(event, () => {
- server.close();
- });
-});
diff --git a/templates/js/message-extension-copilot/src/searchApp.js b/templates/js/message-extension-copilot/src/searchApp.js
deleted file mode 100644
index 7f8e8e7076..0000000000
--- a/templates/js/message-extension-copilot/src/searchApp.js
+++ /dev/null
@@ -1,59 +0,0 @@
-const axios = require("axios");
-const querystring = require("querystring");
-const { TeamsActivityHandler, CardFactory } = require("botbuilder");
-const ACData = require("adaptivecards-templating");
-const helloWorldCard = require("./adaptiveCards/helloWorldCard.json");
-
-class SearchApp extends TeamsActivityHandler {
- constructor() {
- super();
- }
-
- // Message extension Code
- // Search.
- async handleTeamsMessagingExtensionQuery(context, query) {
- const searchQuery = query.parameters[0].value;
-
- // Due to npmjs search limitations, do not search if input length < 2
- if (searchQuery.length < 2) {
- return {
- composeExtension: {
- type: "result",
- attachmentLayout: "list",
- attachments: [],
- },
- };
- }
-
- const response = await axios.get(
- `http://registry.npmjs.com/-/v1/search?${querystring.stringify({
- text: searchQuery,
- size: 8,
- })}`
- );
-
- const attachments = [];
- response.data.objects.forEach((obj) => {
- const template = new ACData.Template(helloWorldCard);
- const card = template.expand({
- $root: {
- name: obj.package.name,
- description: obj.package.description,
- },
- });
- const preview = CardFactory.heroCard(obj.package.name);
- const attachment = { ...CardFactory.adaptiveCard(card), preview };
- attachments.push(attachment);
- });
-
- return {
- composeExtension: {
- type: "result",
- attachmentLayout: "list",
- attachments: attachments,
- },
- };
- }
-}
-
-module.exports.SearchApp = SearchApp;
diff --git a/templates/js/message-extension-copilot/teamsapp.local.yml.tpl b/templates/js/message-extension-copilot/teamsapp.local.yml.tpl
deleted file mode 100644
index cc2946b64a..0000000000
--- a/templates/js/message-extension-copilot/teamsapp.local.yml.tpl
+++ /dev/null
@@ -1,94 +0,0 @@
-# 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
-
-provision:
- # Creates a Teams app
- - uses: teamsApp/create
- with:
- # Teams app name
- name: {{appName}}${{APP_NAME_SUFFIX}}
- # Write the information of created resources into environment file for
- # the specified environment variable(s).
- writeToEnvironmentFile:
- teamsAppId: TEAMS_APP_ID
-
- # Create or reuse an existing Microsoft Entra application for bot.
- - uses: aadApp/create
- with:
- # The Microsoft Entra application's display name
- name: {{appName}}${{APP_NAME_SUFFIX}}
- generateClientSecret: true
- signInAudience: AzureADMultipleOrgs
- writeToEnvironmentFile:
- # The Microsoft Entra application's client id created for bot.
- clientId: BOT_ID
- # The Microsoft Entra application's client secret created for bot.
- clientSecret: SECRET_BOT_PASSWORD
- # The Microsoft Entra application's object id created for bot.
- objectId: BOT_OBJECT_ID
-
- # Create or update the bot registration on dev.botframework.com
- - uses: botFramework/create
- with:
- botId: ${{BOT_ID}}
- name: {{appName}}
- messagingEndpoint: ${{BOT_ENDPOINT}}/api/messages
- description: ""
- channels:
- - name: msteams
- - name: m365extensions
-
- # Validate using manifest schema
- - uses: teamsApp/validateManifest
- with:
- # Path to manifest template
- manifestPath: ./appPackage/manifest.json
-
- # 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
-
-deploy:
- # Run npm command
- - uses: cli/runNpmCommand
- name: install dependencies
- with:
- args: install --no-audit
- # Generate runtime environment variables
- - uses: file/createOrUpdateEnvironmentFile
- with:
- target: ./.localConfigs
- envs:
- BOT_ID: ${{BOT_ID}}
- BOT_PASSWORD: ${{SECRET_BOT_PASSWORD}}
- BOT_TYPE: 'MultiTenant'
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/teamsapp.testtool.yml b/templates/js/message-extension-copilot/teamsapp.testtool.yml
deleted file mode 100644
index a069dd7de9..0000000000
--- a/templates/js/message-extension-copilot/teamsapp.testtool.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-# yaml-language-server: $schema=https://aka.ms/teams-toolkit/v1.3/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.3
-
-deploy:
- # Install development tool(s)
- - uses: devTool/install
- with:
- testTool:
- version: ~0.2.1
- symlinkDir: ./devTools/teamsapptester
-
- # Run npm command
- - uses: cli/runNpmCommand
- with:
- args: install --no-audit
-
- # Generate runtime environment variables
- - uses: file/createOrUpdateEnvironmentFile
- with:
- target: ./.localConfigs.testTool
- envs:
- TEAMSFX_NOTIFICATION_STORE_FILENAME: ${{TEAMSFX_NOTIFICATION_STORE_FILENAME}}
\ No newline at end of file
diff --git a/templates/js/message-extension-copilot/teamsapp.yml.tpl b/templates/js/message-extension-copilot/teamsapp.yml.tpl
deleted file mode 100644
index b9b76961d3..0000000000
--- a/templates/js/message-extension-copilot/teamsapp.yml.tpl
+++ /dev/null
@@ -1,136 +0,0 @@
-# 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: {{appName}}${{APP_NAME_SUFFIX}}
- # Write the information of created resources into environment file for
- # the specified environment variable(s).
- writeToEnvironmentFile:
- teamsAppId: TEAMS_APP_ID
-
- - uses: arm/deploy # Deploy given ARM templates parallelly.
- with:
- # AZURE_SUBSCRIPTION_ID is a built-in environment variable,
- # if its value is empty, TeamsFx will prompt you to select a subscription.
- # Referencing other environment variables with empty values
- # will skip the subscription selection prompt.
- subscriptionId: ${{AZURE_SUBSCRIPTION_ID}}
- # AZURE_RESOURCE_GROUP_NAME is a built-in environment variable,
- # if its value is empty, TeamsFx will prompt you to select or create one
- # resource group.
- # Referencing other environment variables with empty values
- # will skip the resource group selection prompt.
- resourceGroupName: ${{AZURE_RESOURCE_GROUP_NAME}}
- templates:
- - path: ./infra/azure.bicep # Relative path to this file
- # Relative path to this yaml file.
- # Placeholders will be replaced with corresponding environment
- # variable before ARM deployment.
- parameters: ./infra/azure.parameters.json
- # Required when deploying ARM template
- deploymentName: Create-resources-for-me
- # Teams Toolkit will download this bicep CLI version from github for you,
- # will use bicep CLI in PATH if you remove this config.
- bicepCliVersion: v0.9.1
-
- # Validate using manifest schema
- - uses: teamsApp/validateManifest
- with:
- # Path to manifest template
- manifestPath: ./appPackage/manifest.json
- # 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 deploy' is executed
-deploy:
- # Run npm command
- - uses: cli/runNpmCommand
- name: install dependencies
- with:
- args: install --production
- # Deploy your application to Azure App Service using the zip deploy feature.
- # For additional details, refer to https://aka.ms/zip-deploy-to-app-services.
- - uses: azureAppService/zipDeploy
- with:
- # Deploy base folder
- artifactFolder: .
- # Ignore file location, leave blank will ignore nothing
- ignoreFile: .webappignore
- # The resource id of the cloud resource to be deployed to.
- # This key will be generated by arm/deploy action automatically.
- # You can replace it with your existing Azure Resource id
- # or add it to your environment variable file.
- resourceId: ${{BOT_AZURE_APP_SERVICE_RESOURCE_ID}}
-
-# Triggered when 'teamsapp publish' is executed
-publish:
- # Validate using manifest schema
- - uses: teamsApp/validateManifest
- with:
- # Path to manifest template
- manifestPath: ./appPackage/manifest.json
- # 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
diff --git a/templates/js/message-extension-copilot/web.config b/templates/js/message-extension-copilot/web.config
deleted file mode 100644
index c766d73352..0000000000
--- a/templates/js/message-extension-copilot/web.config
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/templates/ts/message-extension-copilot/.gitignore b/templates/ts/message-extension-copilot/.gitignore
deleted file mode 100644
index b891a68cb1..0000000000
--- a/templates/ts/message-extension-copilot/.gitignore
+++ /dev/null
@@ -1,20 +0,0 @@
-# TeamsFx files
-env/.env.*.user
-env/.env.local
-.localConfigs
-.localConfigs.testTool
-.notification.localstore.json
-.notification.testtoolstore.json
-/devTools
-appPackage/build
-
-# dependencies
-node_modules/
-
-# misc
-.env
-.deployment
-.DS_Store
-
-# build
-lib/
diff --git a/templates/ts/message-extension-copilot/.localConfigs b/templates/ts/message-extension-copilot/.localConfigs
deleted file mode 100644
index 38398a297a..0000000000
--- a/templates/ts/message-extension-copilot/.localConfigs
+++ /dev/null
@@ -1,3 +0,0 @@
-# A gitignored place holder file for local runtime configurations
-BOT_ID=
-BOT_PASSWORD=
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/.vscode/extensions.json b/templates/ts/message-extension-copilot/.vscode/extensions.json
deleted file mode 100644
index aac0a6e347..0000000000
--- a/templates/ts/message-extension-copilot/.vscode/extensions.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "recommendations": [
- "TeamsDevApp.ms-teams-vscode-extension"
- ]
-}
diff --git a/templates/ts/message-extension-copilot/.vscode/launch.json.tpl b/templates/ts/message-extension-copilot/.vscode/launch.json.tpl
deleted file mode 100644
index 8bb8cb138c..0000000000
--- a/templates/ts/message-extension-copilot/.vscode/launch.json.tpl
+++ /dev/null
@@ -1,293 +0,0 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Launch Remote in Teams (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}",
- "presentation": {
- "group": "group 1: Teams",
- "order": 4
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Teams (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}",
- "presentation": {
- "group": "group 1: Teams",
- "order": 5
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Outlook (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://outlook.office.com/mail?${account-hint}",
- "presentation": {
- "group": "group 2: Outlook",
- "order": 3
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Outlook (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://outlook.office.com/mail?${account-hint}",
- "presentation": {
- "group": "group 2: Outlook",
- "order": 3
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Copilot (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://teams.microsoft.com?${account-hint}",
- "presentation": {
- "group": "group 2: Copilot",
- "order": 3
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Copilot (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://teams.microsoft.com?${account-hint}",
- "presentation": {
- "group": "group 2: Copilot",
- "order": 3
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch App in Teams (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Launch App in Teams (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true&webjoin=true&${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Launch App in Outlook (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://outlook.office.com/mail?${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Launch App in Outlook (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://outlook.office.com/mail?${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Launch App in Copilot (Edge)",
- "type": "msedge",
- "request": "launch",
- "url": "https://teams.microsoft.com?${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Launch App in Copilot (Chrome)",
- "type": "chrome",
- "request": "launch",
- "url": "https://teams.microsoft.com?${account-hint}",
- "cascadeTerminateToConfigurations": [
- "Attach to Local Service"
- ],
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen",
- "perScriptSourcemaps": "yes"
- },
- {
- "name": "Attach to Local Service",
- "type": "node",
- "request": "attach",
- "port": 9239,
- "restart": true,
- "presentation": {
- "group": "all",
- "hidden": true
- },
- "internalConsoleOptions": "neverOpen"
- },
- {
- "name": "Launch Remote in Teams (Desktop)",
- "type": "node",
- "request": "launch",
- "preLaunchTask": "Start Teams App in Desktop Client (Remote)",
- "presentation": {
- "group": "group 1: Teams",
- "order": 6
- },
- "internalConsoleOptions": "neverOpen",
- }
- ],
- "compounds": [
- {
- "name": "Debug in Test Tool",
- "configurations": [
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App (Test Tool)",
- "presentation": {
-{{#enableMETestToolByDefault}}
- "group": "group 0: Teams App Test Tool",
-{{/enableMETestToolByDefault}}
-{{^enableMETestToolByDefault}}
- "group": "group 3: Teams App Test Tool",
-{{/enableMETestToolByDefault}}
- "order": 1
- },
- "stopAll": true
- },
- {
- "name": "Debug in Teams (Edge)",
- "configurations": [
- "Launch App in Teams (Edge)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally",
- "presentation": {
- "group": "group 1: Teams",
- "order": 1
- },
- "stopAll": true
- },
- {
- "name": "Debug in Teams (Chrome)",
- "configurations": [
- "Launch App in Teams (Chrome)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally",
- "presentation": {
- "group": "group 1: Teams",
- "order": 2
- },
- "stopAll": true
- },
- {
- "name": "Debug in Teams (Desktop)",
- "configurations": [
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App in Desktop Client",
- "presentation": {
- "group": "group 1: Teams",
- "order": 3
- },
- "stopAll": true
- },
- {
- "name": "Debug in Outlook (Edge)",
- "configurations": [
- "Launch App in Outlook (Edge)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally",
- "presentation": {
- "group": "group 2: Outlook",
- "order": 1
- },
- "stopAll": true
- },
- {
- "name": "Debug in Outlook (Chrome)",
- "configurations": [
- "Launch App in Outlook (Chrome)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally",
- "presentation": {
- "group": "group 2: Outlook",
- "order": 2
- },
- "stopAll": true
- },
- {
- "name": "Debug in Copilot (Edge)",
- "configurations": [
- "Launch App in Copilot (Edge)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally (Copilot)",
- "presentation": {
- "group": "group 2: Copilot",
- "order": 1
- },
- "stopAll": true
- },
- {
- "name": "Debug in Copilot (Chrome)",
- "configurations": [
- "Launch App in Copilot (Chrome)",
- "Attach to Local Service"
- ],
- "preLaunchTask": "Start Teams App Locally (Copilot)",
- "presentation": {
- "group": "group 2: Copilot",
- "order": 2
- },
- "stopAll": true
- }
- ]
-}
diff --git a/templates/ts/message-extension-copilot/.vscode/settings.json b/templates/ts/message-extension-copilot/.vscode/settings.json
deleted file mode 100644
index 4299620253..0000000000
--- a/templates/ts/message-extension-copilot/.vscode/settings.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "debug.onTaskErrors": "abort",
- "json.schemas": [
- {
- "fileMatch": [
- "/aad.*.json"
- ],
- "schema": {}
- }
- ]
-}
diff --git a/templates/ts/message-extension-copilot/.vscode/tasks.json b/templates/ts/message-extension-copilot/.vscode/tasks.json
deleted file mode 100644
index 2e9b16cefc..0000000000
--- a/templates/ts/message-extension-copilot/.vscode/tasks.json
+++ /dev/null
@@ -1,256 +0,0 @@
-// This file is automatically generated by Teams Toolkit.
-// The teamsfx tasks defined in this file require Teams Toolkit version >= 5.0.0.
-// See https://aka.ms/teamsfx-tasks for details on how to customize each task.
-{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "Start Teams App (Test Tool)",
- "dependsOn": [
- "Validate prerequisites (Test Tool)",
- "Deploy (Test Tool)",
- "Start application (Test Tool)",
- "Start Test Tool"
- ],
- "dependsOrder": "sequence"
- },
- {
- // Check all required prerequisites.
- // See https://aka.ms/teamsfx-tasks/check-prerequisites to know the details and how to customize the args.
- "label": "Validate prerequisites (Test Tool)",
- "type": "teamsfx",
- "command": "debug-check-prerequisites",
- "args": {
- "prerequisites": [
- "nodejs", // Validate if Node.js is installed.
- "portOccupancy" // Validate available ports to ensure those debug ones are not occupied.
- ],
- "portOccupancy": [
- 3978, // app service port
- 9239, // app inspector port for Node.js debugger
- 56150 // test tool port
- ]
- }
- },
- {
- // Build project.
- // See https://aka.ms/teamsfx-tasks/deploy to know the details and how to customize the args.
- "label": "Deploy (Test Tool)",
- "type": "teamsfx",
- "command": "deploy",
- "args": {
- "env": "testtool"
- }
- },
- {
- "label": "Start application (Test Tool)",
- "type": "shell",
- "command": "npm run dev:teamsfx:testtool",
- "isBackground": true,
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": {
- "pattern": [
- {
- "regexp": "^.*$",
- "file": 0,
- "location": 1,
- "message": 2
- }
- ],
- "background": {
- "activeOnStart": true,
- "beginsPattern": "[nodemon] starting",
- "endsPattern": "app listening to|Bot/ME service listening at|[nodemon] app crashed"
- }
- }
- },
- {
- "label": "Start Test Tool",
- "type": "shell",
- "command": "npm run dev:teamsfx:launch-testtool",
- "isBackground": true,
- "options": {
- "env": {
- "PATH": "${workspaceFolder}/devTools/teamsapptester/node_modules/.bin:${env:PATH}"
- }
- },
- "windows": {
- "options": {
- "env": {
- "PATH": "${workspaceFolder}/devTools/teamsapptester/node_modules/.bin;${env:PATH}"
- }
- }
- },
- "problemMatcher": {
- "pattern": [
- {
- "regexp": "^.*$",
- "file": 0,
- "location": 1,
- "message": 2
- }
- ],
- "background": {
- "activeOnStart": true,
- "beginsPattern": ".*",
- "endsPattern": "Listening on"
- }
- },
- "presentation": {
- "panel": "dedicated",
- "reveal": "silent"
- }
- },
- {
- "label": "Start Teams App Locally",
- "dependsOn": [
- "Validate prerequisites",
- "Start local tunnel",
- "Provision",
- "Deploy",
- "Start application"
- ],
- "dependsOrder": "sequence"
- },
- {
- "label": "Start Teams App Locally (Copilot)",
- "dependsOn": [
- "Validate prerequisites",
- "Validate Copilot access",
- "Start local tunnel",
- "Provision",
- "Deploy",
- "Start application"
- ],
- "dependsOrder": "sequence"
- },
- {
- // Check all required prerequisites.
- // See https://aka.ms/teamsfx-tasks/check-prerequisites to know the details and how to customize the args.
- "label": "Validate prerequisites",
- "type": "teamsfx",
- "command": "debug-check-prerequisites",
- "args": {
- "prerequisites": [
- "nodejs", // Validate if Node.js is installed.
- "m365Account", // Sign-in prompt for Microsoft 365 account, then validate if the account enables the sideloading permission.
- "portOccupancy" // Validate available ports to ensure those debug ones are not occupied.
- ],
- "portOccupancy": [
- 3978, // app service port
- 9239 // app inspector port for Node.js debugger
- ]
- }
- },
- {
- // Check Copilot access.
- // See https://aka.ms/teamsfx-tasks/check-prerequisites to know the details and how to customize the args.
- "label": "Validate Copilot access",
- "type": "teamsfx",
- "command": "debug-check-prerequisites",
- "args": {
- "prerequisites": [
- "copilotAccess" // Validate if the account has Copilot access.
- ]
- }
- },
- {
- // Start the local tunnel service to forward public URL to local port and inspect traffic.
- // See https://aka.ms/teamsfx-tasks/local-tunnel for the detailed args definitions.
- "label": "Start local tunnel",
- "type": "teamsfx",
- "command": "debug-start-local-tunnel",
- "args": {
- "type": "dev-tunnel",
- "ports": [
- {
- "portNumber": 3978,
- "protocol": "http",
- "access": "public",
- "writeToEnvironmentFile": {
- "endpoint": "BOT_ENDPOINT", // output tunnel endpoint as BOT_ENDPOINT
- "domain": "BOT_DOMAIN" // output tunnel domain as BOT_DOMAIN
- }
- }
- ],
- "env": "local"
- },
- "isBackground": true,
- "problemMatcher": "$teamsfx-local-tunnel-watch"
- },
- {
- // Create the debug resources.
- // See https://aka.ms/teamsfx-tasks/provision to know the details and how to customize the args.
- "label": "Provision",
- "type": "teamsfx",
- "command": "provision",
- "args": {
- "env": "local"
- }
- },
- {
- // Build project.
- // See https://aka.ms/teamsfx-tasks/deploy to know the details and how to customize the args.
- "label": "Deploy",
- "type": "teamsfx",
- "command": "deploy",
- "args": {
- "env": "local"
- }
- },
- {
- "label": "Start application",
- "type": "shell",
- "command": "npm run dev:teamsfx",
- "isBackground": true,
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": {
- "pattern": [
- {
- "regexp": "^.*$",
- "file": 0,
- "location": 1,
- "message": 2
- }
- ],
- "background": {
- "activeOnStart": true,
- "beginsPattern": "[nodemon] starting",
- "endsPattern": "app listening to|Bot/ME service listening at|[nodemon] app crashed"
- }
- }
- },
- {
- "label": "Start Teams App in Desktop Client",
- "dependsOn": [
- "Validate prerequisites",
- "Start local tunnel",
- "Provision",
- "Deploy",
- "Start application",
- "Start desktop client"
- ],
- "dependsOrder": "sequence"
- },
- {
- "label": "Start desktop client",
- "type": "teamsfx",
- "command": "launch-desktop-client",
- "args": {
- "url": "teams.microsoft.com/l/app/${{local:TEAMS_APP_ID}}?installAppPackage=true"
- }
- },
- {
- "label": "Start Teams App in Desktop Client (Remote)",
- "type": "teamsfx",
- "command": "launch-desktop-client",
- "args": {
- "url": "teams.microsoft.com/l/app/${{TEAMS_APP_ID}}?installAppPackage=true"
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/.webappignore b/templates/ts/message-extension-copilot/.webappignore
deleted file mode 100644
index 50d2cf4484..0000000000
--- a/templates/ts/message-extension-copilot/.webappignore
+++ /dev/null
@@ -1,28 +0,0 @@
-.webappignore
-.fx
-.deployment
-.localConfigs
-.localConfigs.testTool
-.notification.localstore.json
-.notification.testtoolstore.json
-/devTools
-.vscode
-*.js.map
-*.ts.map
-*.ts
-.git*
-.tsbuildinfo
-CHANGELOG.md
-readme.md
-local.settings.json
-test
-tsconfig.json
-.DS_Store
-teamsapp.yml
-teamsapp.*.yml
-/env/
-/node_modules/.bin
-/node_modules/ts-node
-/node_modules/typescript
-/appPackage/
-/infra/
diff --git a/templates/ts/message-extension-copilot/README.md.tpl b/templates/ts/message-extension-copilot/README.md.tpl
deleted file mode 100644
index bff9beea4a..0000000000
--- a/templates/ts/message-extension-copilot/README.md.tpl
+++ /dev/null
@@ -1,85 +0,0 @@
-# Overview of Custom Search Results template
-
-This app template is a search-based [message extension](https://docs.microsoft.com/microsoftteams/platform/messaging-extensions/what-are-messaging-extensions?tabs=nodejs) that allows users to search an external system and share results through the compose message area of the Microsoft Teams client. You can now build and run your search-based message extensions in Teams, Copilot for Windows desktop and web experiences.
-
-## Get started with the template
-
-> **Prerequisites**
->
-> To run the template in your local dev machine, you will need:
->
-> - [Node.js](https://nodejs.org/), supported versions: 18, 20
-> - A [Microsoft 365 account for development](https://docs.microsoft.com/microsoftteams/platform/toolkit/accounts)
-> - [Set up your dev environment for extending Teams apps across Microsoft 365](https://aka.ms/teamsfx-m365-apps-prerequisites)
-> Please note that after you enrolled your developer tenant in Office 365 Target Release, it may take couple days for the enrollment to take effect.
-> - [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)
-
-> For local debugging using Teams Toolkit CLI, you need to do some extra steps described in [Set up your Teams Toolkit CLI for local debugging](https://aka.ms/teamsfx-cli-debugging).
-
-1. First, select the Teams Toolkit icon on the left in the VS Code toolbar.
-{{^enableMETestToolByDefault}}
-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.
-{{/enableMETestToolByDefault}}
-{{#enableMETestToolByDefault}}
-3. To directly trigger the Message Extension in Teams App Test Tool, you can:
- 1. Press F5 to start debugging which launches your app in Teams App Test Tool using a web browser. Select `Debug in Test Tool`.
- 2. When Test Tool launches in the browser, click the `+` in compose message area and select `Search command` to trigger the search commands.
-{{/enableMETestToolByDefault}}
-3. To directly trigger the Message Extension in Teams, you can:
- 1. Press F5 to start debugging which launches your app in Teams using a web browser. Select `Debug in Teams (Edge)` or `Debug in Teams (Chrome)`.
- 2. When Teams launches in the browser, select the Add button in the dialog to install your app to Teams.
- 3. `@mention` Your message extension from the `search box area`, `@mention` your message extension from the `compose message area` or click the `...` under compose message area to find your message extension.
-4. To trigger the Message Extension through Copilot, you can:
- 1. Select `Debug in Copilot (Edge)` or `Debug in Copilot (Chrome)` from the launch configuration dropdown.
- 2. When Teams launches in the browser, click the `Apps` icon from Teams client left rail to open Teams app store and search for `Copilot`.
- 3. Open the `Copilot` app, select `Plugins`, and from the list of plugins, turn on the toggle for your message extension. Now, you can send a prompt to trigger your plugin.
- 4. Send a message to Copilot to find an NPM package information. For example: `Find the npm package info on teamsfx-react`.
- > Note: This prompt may not always make Copilot include a response from your message extension. If it happens, try some other prompts or leave a feedback to us by thumbing down the Copilot response and leave a message tagged with [MessageExtension].
-
-**Congratulations**! You are running an application that can now search npm registries in Teams and Copilot.
-
-![Search ME Copilot](https://github.com/OfficeDev/TeamsFx/assets/107838226/0beaa86e-d446-4ab3-a701-eec205d1b367)
-
-## What's included in the template
-
-| Folder | Contents |
-| ------------- | -------------------------------------------- |
-| `.vscode/` | VSCode files for debugging |
-| `appPackage/` | Templates for the Teams application manifest |
-| `env/` | Environment files |
-| `infra/` | Templates for provisioning Azure resources |
-| `src/` | The source code for the search application |
-
-The following files can be customized and demonstrate an example implementation to get you started.
-
-| File | Contents |
-| ------------------ | ---------------------------------------------------------------------------------------------- |
-| `src/searchApp.ts` | Handles the business logic for this app template to query npm registry and return result list. |
-| `src/index.ts` | `index.ts` is used to setup and configure the Message Extension. |
-
-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. |
-| `teamsapp.local.yml` | This overrides `teamsapp.yml` with actions that enable local execution and debugging. |
-| `teamsapp.testtool.yml`| This overrides `teamsapp.yml` with actions that enable local execution and debugging in Teams App Test Tool. |
-
-## Extend the template
-
-Following documentation will help you to extend the template.
-
-- [Add or manage the environment](https://learn.microsoft.com/microsoftteams/platform/toolkit/teamsfx-multi-env)
-- [Create multi-capability app](https://learn.microsoft.com/microsoftteams/platform/toolkit/add-capability)
-- [Add single sign on to your app](https://learn.microsoft.com/microsoftteams/platform/toolkit/add-single-sign-on)
-- [Access data in Microsoft Graph](https://learn.microsoft.com/microsoftteams/platform/toolkit/teamsfx-sdk#microsoft-graph-scenarios)
-- [Use an existing Microsoft Entra application](https://learn.microsoft.com/microsoftteams/platform/toolkit/use-existing-aad-app)
-- [Customize the Teams app manifest](https://learn.microsoft.com/microsoftteams/platform/toolkit/teamsfx-preview-and-customize-app-manifest)
-- Host your app in Azure by [provision cloud resources](https://learn.microsoft.com/microsoftteams/platform/toolkit/provision) and [deploy the code to cloud](https://learn.microsoft.com/microsoftteams/platform/toolkit/deploy)
-- [Collaborate on app development](https://learn.microsoft.com/microsoftteams/platform/toolkit/teamsfx-collaboration)
-- [Set up the CI/CD pipeline](https://learn.microsoft.com/microsoftteams/platform/toolkit/use-cicd-template)
-- [Publish the app to your organization or the Microsoft Teams app store](https://learn.microsoft.com/microsoftteams/platform/toolkit/publish)
-- [Develop with Teams Toolkit CLI](https://aka.ms/teams-toolkit-cli/debug)
-- [Preview the app on mobile clients](https://aka.ms/teamsfx-mobile)
-- [Extend Microsoft 365 Copilot](https://aka.ms/teamsfx-copilot-plugin)
diff --git a/templates/ts/message-extension-copilot/appPackage/color.png b/templates/ts/message-extension-copilot/appPackage/color.png
deleted file mode 100644
index 11e255fa0b..0000000000
Binary files a/templates/ts/message-extension-copilot/appPackage/color.png and /dev/null differ
diff --git a/templates/ts/message-extension-copilot/appPackage/manifest.json.tpl b/templates/ts/message-extension-copilot/appPackage/manifest.json.tpl
deleted file mode 100644
index b5b8e7221c..0000000000
--- a/templates/ts/message-extension-copilot/appPackage/manifest.json.tpl
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "$schema": "https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json",
- "manifestVersion": "devPreview",
- "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": "{{appName}}${{APP_NAME_SUFFIX}}",
- "full": "full name for {{appName}}"
- },
- "description": {
- "short": "Find npm package by name.",
- "full": "Find npm package according to the npm package name."
- },
- "accentColor": "#FFFFFF",
- "bots": [],
- "composeExtensions": [
- {
- "botId": "${{BOT_ID}}",
- "commands": [
- {
- "id": "findNpmPackage",
- "context": [
- "compose",
- "commandBox"
- ],
- "description": "Find npm package according to the npm package name",
- "title": "Find Npm Package",
- "type": "query",
- "semanticDescription": "This command retrieves detailed information about an npm package using the provided npm package name.",
- "parameters": [
- {
- "name": "NpmPackageName",
- "title": "Npm Package Name",
- "description": "The name of the npm package to be searched",
- "inputType": "text",
- "semanticDescription": "This parameter is used to identify the specific npm package to be queried. Users should provide the exact name of the npm package they want to retrieve information for as the value of this parameter."
- }
- ]
- }
- ]
- }
- ],
- "configurableTabs": [],
- "staticTabs": [],
- "permissions": [
- "identity",
- "messageTeamMembers"
- ],
- "validDomains": []
-}
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/appPackage/outline.png b/templates/ts/message-extension-copilot/appPackage/outline.png
deleted file mode 100644
index f7a4c86447..0000000000
Binary files a/templates/ts/message-extension-copilot/appPackage/outline.png and /dev/null differ
diff --git a/templates/ts/message-extension-copilot/env/.env.dev b/templates/ts/message-extension-copilot/env/.env.dev
deleted file mode 100644
index 4b07861c03..0000000000
--- a/templates/ts/message-extension-copilot/env/.env.dev
+++ /dev/null
@@ -1,16 +0,0 @@
-# This file includes environment variables that will be committed to git by default.
-
-# Built-in environment variables
-TEAMSFX_ENV=dev
-APP_NAME_SUFFIX=dev
-
-# Updating AZURE_SUBSCRIPTION_ID or AZURE_RESOURCE_GROUP_NAME after provision may also require an update to RESOURCE_SUFFIX, because some services require a globally unique name across subscriptions/resource groups.
-AZURE_SUBSCRIPTION_ID=
-AZURE_RESOURCE_GROUP_NAME=
-RESOURCE_SUFFIX=
-
-# Generated during provision, you can also add your own variables.
-BOT_ID=
-TEAMS_APP_ID=
-BOT_AZURE_APP_SERVICE_RESOURCE_ID=
-BOT_DOMAIN=
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/env/.env.dev.user b/templates/ts/message-extension-copilot/env/.env.dev.user
deleted file mode 100644
index 2bf4ab048e..0000000000
--- a/templates/ts/message-extension-copilot/env/.env.dev.user
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file includes environment variables that will not be committed to git by default. You can set these environment variables in your CI/CD system for your project.
-
-# If you're adding a secret value, add SECRET_ prefix to the name so Teams Toolkit can handle them properly
-# Secrets. Keys prefixed with `SECRET_` will be masked in Teams Toolkit logs.
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/env/.env.local b/templates/ts/message-extension-copilot/env/.env.local
deleted file mode 100644
index f3a75f8723..0000000000
--- a/templates/ts/message-extension-copilot/env/.env.local
+++ /dev/null
@@ -1,11 +0,0 @@
-# This file includes environment variables that can be committed to git. It's gitignored by default because it represents your local development environment.
-
-# Built-in environment variables
-TEAMSFX_ENV=local
-APP_NAME_SUFFIX=local
-
-# Generated during provision, you can also add your own variables.
-BOT_ID=
-TEAMS_APP_ID=
-BOT_DOMAIN=
-BOT_ENDPOINT=
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/env/.env.local.user b/templates/ts/message-extension-copilot/env/.env.local.user
deleted file mode 100644
index 46f98fc36b..0000000000
--- a/templates/ts/message-extension-copilot/env/.env.local.user
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file includes environment variables that will not be committed to git by default. You can set these environment variables in your CI/CD system for your project.
-
-# If you're adding a secret value, add SECRET_ prefix to the name so Teams Toolkit can handle them properly
-# Secrets. Keys prefixed with `SECRET_` will be masked in Teams Toolkit logs.
-SECRET_BOT_PASSWORD=
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/env/.env.testtool b/templates/ts/message-extension-copilot/env/.env.testtool
deleted file mode 100644
index 43ce12aad3..0000000000
--- a/templates/ts/message-extension-copilot/env/.env.testtool
+++ /dev/null
@@ -1,8 +0,0 @@
-# This file includes environment variables that can be committed to git. It's gitignored by default because it represents your local development environment.
-
-# Built-in environment variables
-TEAMSFX_ENV=testtool
-
-# Environment variables used by test tool
-TEAMSAPPTESTER_PORT=56150
-TEAMSFX_NOTIFICATION_STORE_FILENAME=.notification.testtoolstore.json
diff --git a/templates/ts/message-extension-copilot/infra/azure.bicep b/templates/ts/message-extension-copilot/infra/azure.bicep
deleted file mode 100644
index e2bf38d575..0000000000
--- a/templates/ts/message-extension-copilot/infra/azure.bicep
+++ /dev/null
@@ -1,95 +0,0 @@
-@maxLength(20)
-@minLength(4)
-@description('Used to generate names for all resources in this file')
-param resourceBaseName string
-
-param webAppSKU string
-
-@maxLength(42)
-param botDisplayName string
-
-param serverfarmsName string = resourceBaseName
-param webAppName string = resourceBaseName
-param identityName string = resourceBaseName
-param location string = resourceGroup().location
-
-resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
- location: location
- name: identityName
-}
-
-// Compute resources for your Web App
-resource serverfarm 'Microsoft.Web/serverfarms@2021-02-01' = {
- kind: 'app'
- location: location
- name: serverfarmsName
- sku: {
- name: webAppSKU
- }
-}
-
-// Web App that hosts your bot
-resource webApp 'Microsoft.Web/sites@2021-02-01' = {
- kind: 'app'
- location: location
- name: webAppName
- properties: {
- serverFarmId: serverfarm.id
- httpsOnly: true
- siteConfig: {
- alwaysOn: true
- appSettings: [
- {
- name: 'WEBSITE_RUN_FROM_PACKAGE'
- value: '1' // Run Azure APP Service from a package file
- }
- {
- name: 'WEBSITE_NODE_DEFAULT_VERSION'
- value: '~18' // Set NodeJS version to 18.x for your site
- }
- {
- name: 'RUNNING_ON_AZURE'
- value: '1'
- }
- {
- name: 'BOT_ID'
- value: identity.properties.clientId
- }
- {
- name: 'BOT_TENANT_ID'
- value: identity.properties.tenantId
- }
- {
- name: 'BOT_TYPE'
- value: 'UserAssignedMsi'
- }
- ]
- ftpsState: 'FtpsOnly'
- }
- }
- identity: {
- type: 'UserAssigned'
- userAssignedIdentities: {
- '${identity.id}': {}
- }
- }
-}
-
-// Register your web service as a bot with the Bot Framework
-module azureBotRegistration './botRegistration/azurebot.bicep' = {
- name: 'Azure-Bot-registration'
- params: {
- resourceBaseName: resourceBaseName
- identityClientId: identity.properties.clientId
- identityResourceId: identity.id
- identityTenantId: identity.properties.tenantId
- botAppDomain: webApp.properties.defaultHostName
- botDisplayName: botDisplayName
- }
-}
-
-// The output will be persisted in .env.{envName}. Visit https://aka.ms/teamsfx-actions/arm-deploy for more details.
-output BOT_AZURE_APP_SERVICE_RESOURCE_ID string = webApp.id
-output BOT_DOMAIN string = webApp.properties.defaultHostName
-output BOT_ID string = identity.properties.clientId
-output BOT_TENANT_ID string = identity.properties.tenantId
diff --git a/templates/ts/message-extension-copilot/infra/azure.parameters.json.tpl b/templates/ts/message-extension-copilot/infra/azure.parameters.json.tpl
deleted file mode 100644
index f7b8541939..0000000000
--- a/templates/ts/message-extension-copilot/infra/azure.parameters.json.tpl
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "resourceBaseName": {
- "value": "ME${{RESOURCE_SUFFIX}}"
- },
- "webAppSKU": {
- "value": "B1"
- },
- "botDisplayName": {
- "value": "{{appName}}"
- }
- }
-}
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/infra/botRegistration/azurebot.bicep b/templates/ts/message-extension-copilot/infra/botRegistration/azurebot.bicep
deleted file mode 100644
index 11b7c449ef..0000000000
--- a/templates/ts/message-extension-copilot/infra/botRegistration/azurebot.bicep
+++ /dev/null
@@ -1,52 +0,0 @@
-@maxLength(20)
-@minLength(4)
-@description('Used to generate names for all resources in this file')
-param resourceBaseName string
-
-@maxLength(42)
-param botDisplayName string
-
-param botServiceName string = resourceBaseName
-param botServiceSku string = 'F0'
-param identityResourceId string
-param identityClientId string
-param identityTenantId string
-param botAppDomain string
-
-// Register your web service as a bot with the Bot Framework
-resource botService 'Microsoft.BotService/botServices@2021-03-01' = {
- kind: 'azurebot'
- location: 'global'
- name: botServiceName
- properties: {
- displayName: botDisplayName
- endpoint: 'https://${botAppDomain}/api/messages'
- msaAppId: identityClientId
- msaAppMSIResourceId: identityResourceId
- msaAppTenantId:identityTenantId
- msaAppType:'UserAssignedMSI'
- }
- sku: {
- name: botServiceSku
- }
-}
-
-// Connect the bot service to Microsoft Teams
-resource botServiceMsTeamsChannel 'Microsoft.BotService/botServices/channels@2021-03-01' = {
- parent: botService
- location: 'global'
- name: 'MsTeamsChannel'
- properties: {
- channelName: 'MsTeamsChannel'
- }
-}
-
-// Connect the bot service to Outlook, and other Microsoft 365 applications
-resource botServiceM365ExtensionsChannel 'Microsoft.BotService/botServices/channels@2022-06-15-preview' = {
- parent: botService
- location: 'global'
- name: 'M365Extensions'
- properties: {
- channelName: 'M365Extensions'
- }
-}
diff --git a/templates/ts/message-extension-copilot/infra/botRegistration/readme.md b/templates/ts/message-extension-copilot/infra/botRegistration/readme.md
deleted file mode 100644
index d5416243cd..0000000000
--- a/templates/ts/message-extension-copilot/infra/botRegistration/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-The `azurebot.bicep` module is provided to help you create Azure Bot service when you don't use Azure to host your app. If you use Azure as infrastrcture for your app, `azure.bicep` under infra folder already leverages this module to create Azure Bot service for you. You don't need to deploy `azurebot.bicep` again.
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/package.json.tpl b/templates/ts/message-extension-copilot/package.json.tpl
deleted file mode 100644
index 2a05ceb95c..0000000000
--- a/templates/ts/message-extension-copilot/package.json.tpl
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "{{SafeProjectNameLowerCase}}",
- "version": "1.0.0",
- "description": "Microsoft Teams Toolkit message extension search sample",
- "engines": {
- "node": "18 || 20"
- },
- "author": "Microsoft",
- "license": "MIT",
- "main": "./lib/src/index.js",
- "scripts": {
- "dev:teamsfx": "env-cmd --silent -f .localConfigs npm run dev",
- "dev:teamsfx:testtool": "env-cmd --silent -f .localConfigs.testTool npm run dev",
- "dev:teamsfx:launch-testtool": "env-cmd --silent -f env/.env.testtool teamsapptester start",
- "dev": "nodemon --exec node --inspect=9239 --signal SIGINT -r ts-node/register ./src/index.ts",
- "build": "tsc --build",
- "start": "node ./lib/src/index.js",
- "test": "echo \"Error: no test specified\" && exit 1",
- "watch": "nodemon --exec \"npm run start\""
- },
- "repository": {
- "type": "git",
- "url": "https://github.com"
- },
- "dependencies": {
- "adaptive-expressions": "^4.20.0",
- "adaptivecards-templating": "^2.3.1",
- "adaptivecards": "^3.0.1",
- "botbuilder": "^4.23.1",
- "express": "^5.0.1"
- },
- "devDependencies": {
- "@types/express": "^5.0.0",
- "@types/json-schema": "^7.0.15",
- "@types/node": "^20.8.9",
- "env-cmd": "^10.1.0",
- "ts-node": "^10.4.0",
- "typescript": "^4.4.4",
- "nodemon": "^3.0.1",
- "shx": "^0.3.3"
- }
-}
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/src/adaptiveCards/helloWorldCard.json b/templates/ts/message-extension-copilot/src/adaptiveCards/helloWorldCard.json
deleted file mode 100644
index 4da34b7db5..0000000000
--- a/templates/ts/message-extension-copilot/src/adaptiveCards/helloWorldCard.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "type": "AdaptiveCard",
- "body": [
- {
- "type": "TextBlock",
- "text": "${name}",
- "wrap": true,
- "size": "Large"
- },
- {
- "type": "TextBlock",
- "text": "${description}",
- "wrap": true,
- "size": "Medium"
- }
- ],
- "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
- "version": "1.4"
-}
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/src/config.ts b/templates/ts/message-extension-copilot/src/config.ts
deleted file mode 100644
index 4e6c184a7d..0000000000
--- a/templates/ts/message-extension-copilot/src/config.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-const config = {
- MicrosoftAppId: process.env.BOT_ID,
- MicrosoftAppType: process.env.BOT_TYPE,
- MicrosoftAppTenantId: process.env.BOT_TENANT_ID,
- MicrosoftAppPassword: process.env.BOT_PASSWORD,
-};
-
-export default config;
diff --git a/templates/ts/message-extension-copilot/src/index.ts b/templates/ts/message-extension-copilot/src/index.ts
deleted file mode 100644
index d943241dd7..0000000000
--- a/templates/ts/message-extension-copilot/src/index.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-// Import required packages
-import express from "express";
-
-// Import required bot services.
-// See https://aka.ms/bot-services to learn more about the different parts of a bot.
-import {
- CloudAdapter,
- ConfigurationServiceClientCredentialFactory,
- ConfigurationBotFrameworkAuthentication,
- TurnContext,
-} from "botbuilder";
-
-// This bot's main dialog.
-import { SearchApp } from "./searchApp";
-import config from "./config";
-
-// Create adapter.
-// See https://aka.ms/about-bot-adapter to learn more about adapters.
-const credentialsFactory = new ConfigurationServiceClientCredentialFactory(config);
-
-const botFrameworkAuthentication = new ConfigurationBotFrameworkAuthentication(
- {},
- credentialsFactory
-);
-
-const adapter = new CloudAdapter(botFrameworkAuthentication);
-
-// Catch-all for errors.
-const onTurnErrorHandler = async (context: TurnContext, error: Error) => {
- // This check writes out errors to console log .vs. app insights.
- // NOTE: In production environment, you should consider logging this to Azure
- // application insights.
- console.error(`\n [onTurnError] unhandled error: ${error}`);
-
- // Send a trace activity, which will be displayed in Bot Framework Emulator
- await context.sendTraceActivity(
- "OnTurnError Trace",
- `${error}`,
- "https://www.botframework.com/schemas/error",
- "TurnError"
- );
-
- // Send a message to the user
- await context.sendActivity(`The bot encountered unhandled error:\n ${error.message}`);
- await context.sendActivity("To continue to run this bot, please fix the bot source code.");
-};
-
-// Set the onTurnError for the singleton CloudAdapter.
-adapter.onTurnError = onTurnErrorHandler;
-
-// Create the bot that will handle incoming messages.
-const searchApp = new SearchApp();
-
-// Create express application.
-const expressApp = express();
-expressApp.use(express.json());
-
-const server = expressApp.listen(process.env.port || process.env.PORT || 3978, () => {
- console.log(`\nBot Started, ${expressApp.name} listening to`, server.address());
-});
-
-// Listen for incoming requests.
-expressApp.post("/api/messages", async (req, res) => {
- await adapter.process(req, res, async (context) => {
- await searchApp.run(context);
- });
-});
diff --git a/templates/ts/message-extension-copilot/src/searchApp.ts b/templates/ts/message-extension-copilot/src/searchApp.ts
deleted file mode 100644
index 6e7c6de2e2..0000000000
--- a/templates/ts/message-extension-copilot/src/searchApp.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { default as axios } from "axios";
-import * as querystring from "querystring";
-import {
- TeamsActivityHandler,
- CardFactory,
- TurnContext,
- MessagingExtensionQuery,
- MessagingExtensionResponse,
-} from "botbuilder";
-import * as ACData from "adaptivecards-templating";
-import helloWorldCard from "./adaptiveCards/helloWorldCard.json";
-
-export class SearchApp extends TeamsActivityHandler {
- constructor() {
- super();
- }
-
- // Search.
- public async handleTeamsMessagingExtensionQuery(
- context: TurnContext,
- query: MessagingExtensionQuery
- ): Promise {
- const searchQuery = query.parameters[0].value;
-
- // Due to npmjs search limitations, do not search if input length < 2
- if (searchQuery.length < 2) {
- return {
- composeExtension: {
- type: "result",
- attachmentLayout: "list",
- attachments: [],
- },
- };
- }
-
- const response = await axios.get(
- `http://registry.npmjs.com/-/v1/search?${querystring.stringify({
- text: searchQuery,
- size: 8,
- })}`
- );
-
- const attachments = [];
- response.data.objects.forEach((obj) => {
- const template = new ACData.Template(helloWorldCard);
- const card = template.expand({
- $root: {
- name: obj.package.name,
- description: obj.package.description,
- },
- });
- const preview = CardFactory.heroCard(obj.package.name);
- const attachment = { ...CardFactory.adaptiveCard(card), preview };
- attachments.push(attachment);
- });
-
- return {
- composeExtension: {
- type: "result",
- attachmentLayout: "list",
- attachments: attachments,
- },
- };
- }
-}
diff --git a/templates/ts/message-extension-copilot/teamsapp.local.yml.tpl b/templates/ts/message-extension-copilot/teamsapp.local.yml.tpl
deleted file mode 100644
index 2297caa3b3..0000000000
--- a/templates/ts/message-extension-copilot/teamsapp.local.yml.tpl
+++ /dev/null
@@ -1,95 +0,0 @@
-# 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
-
-provision:
- # Creates a Teams app
- - uses: teamsApp/create
- with:
- # Teams app name
- name: {{appName}}${{APP_NAME_SUFFIX}}
- # Write the information of created resources into environment file for
- # the specified environment variable(s).
- writeToEnvironmentFile:
- teamsAppId: TEAMS_APP_ID
-
- # Create or reuse an existing Microsoft Entra application for bot.
- - uses: aadApp/create
- with:
- # The Microsoft Entra application's display name
- name: {{appName}}${{APP_NAME_SUFFIX}}
- generateClientSecret: true
- signInAudience: AzureADMultipleOrgs
- writeToEnvironmentFile:
- # The Microsoft Entra application's client id created for bot.
- clientId: BOT_ID
- # The Microsoft Entra application's client secret created for bot.
- clientSecret: SECRET_BOT_PASSWORD
- # The Microsoft Entra application's object id created for bot.
- objectId: BOT_OBJECT_ID
-
- # Create or update the bot registration on dev.botframework.com
- - uses: botFramework/create
- with:
- botId: ${{BOT_ID}}
- name: {{appName}}
- messagingEndpoint: ${{BOT_ENDPOINT}}/api/messages
- description: ""
- channels:
- - name: msteams
- - name: m365extensions
-
- # Validate using manifest schema
- - uses: teamsApp/validateManifest
- with:
- # Path to manifest template
- manifestPath: ./appPackage/manifest.json
-
- # 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
-
-deploy:
- # Run npm command
- - uses: cli/runNpmCommand
- name: install dependencies
- with:
- args: install --no-audit
-
- # Generate runtime environment variables
- - uses: file/createOrUpdateEnvironmentFile
- with:
- target: ./.localConfigs
- envs:
- BOT_ID: ${{BOT_ID}}
- BOT_PASSWORD: ${{SECRET_BOT_PASSWORD}}
- BOT_TYPE: 'MultiTenant'
diff --git a/templates/ts/message-extension-copilot/teamsapp.testtool.yml b/templates/ts/message-extension-copilot/teamsapp.testtool.yml
deleted file mode 100644
index a069dd7de9..0000000000
--- a/templates/ts/message-extension-copilot/teamsapp.testtool.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-# yaml-language-server: $schema=https://aka.ms/teams-toolkit/v1.3/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.3
-
-deploy:
- # Install development tool(s)
- - uses: devTool/install
- with:
- testTool:
- version: ~0.2.1
- symlinkDir: ./devTools/teamsapptester
-
- # Run npm command
- - uses: cli/runNpmCommand
- with:
- args: install --no-audit
-
- # Generate runtime environment variables
- - uses: file/createOrUpdateEnvironmentFile
- with:
- target: ./.localConfigs.testTool
- envs:
- TEAMSFX_NOTIFICATION_STORE_FILENAME: ${{TEAMSFX_NOTIFICATION_STORE_FILENAME}}
\ No newline at end of file
diff --git a/templates/ts/message-extension-copilot/teamsapp.yml.tpl b/templates/ts/message-extension-copilot/teamsapp.yml.tpl
deleted file mode 100644
index 8725211656..0000000000
--- a/templates/ts/message-extension-copilot/teamsapp.yml.tpl
+++ /dev/null
@@ -1,140 +0,0 @@
-# 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: {{appName}}${{APP_NAME_SUFFIX}}
- # Write the information of created resources into environment file for
- # the specified environment variable(s).
- writeToEnvironmentFile:
- teamsAppId: TEAMS_APP_ID
-
- - uses: arm/deploy # Deploy given ARM templates parallelly.
- with:
- # AZURE_SUBSCRIPTION_ID is a built-in environment variable,
- # if its value is empty, TeamsFx will prompt you to select a subscription.
- # Referencing other environment variables with empty values
- # will skip the subscription selection prompt.
- subscriptionId: ${{AZURE_SUBSCRIPTION_ID}}
- # AZURE_RESOURCE_GROUP_NAME is a built-in environment variable,
- # if its value is empty, TeamsFx will prompt you to select or create one
- # resource group.
- # Referencing other environment variables with empty values
- # will skip the resource group selection prompt.
- resourceGroupName: ${{AZURE_RESOURCE_GROUP_NAME}}
- templates:
- - path: ./infra/azure.bicep # Relative path to this file
- # Relative path to this yaml file.
- # Placeholders will be replaced with corresponding environment
- # variable before ARM deployment.
- parameters: ./infra/azure.parameters.json
- # Required when deploying ARM template
- deploymentName: Create-resources-for-me
- # Teams Toolkit will download this bicep CLI version from github for you,
- # will use bicep CLI in PATH if you remove this config.
- bicepCliVersion: v0.9.1
-
- # Validate using manifest schema
- - uses: teamsApp/validateManifest
- with:
- # Path to manifest template
- manifestPath: ./appPackage/manifest.json
- # 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 deploy' is executed
-deploy:
- # Run npm command
- - uses: cli/runNpmCommand
- name: install dependencies
- with:
- args: install
- - uses: cli/runNpmCommand
- name: build app
- with:
- args: run build --if-present
- # Deploy your application to Azure App Service using the zip deploy feature.
- # For additional details, refer to https://aka.ms/zip-deploy-to-app-services.
- - uses: azureAppService/zipDeploy
- with:
- # Deploy base folder
- artifactFolder: .
- # Ignore file location, leave blank will ignore nothing
- ignoreFile: .webappignore
- # The resource id of the cloud resource to be deployed to.
- # This key will be generated by arm/deploy action automatically.
- # You can replace it with your existing Azure Resource id
- # or add it to your environment variable file.
- resourceId: ${{BOT_AZURE_APP_SERVICE_RESOURCE_ID}}
-
-# Triggered when 'teamsapp publish' is executed
-publish:
- # Validate using manifest schema
- - uses: teamsApp/validateManifest
- with:
- # Path to manifest template
- manifestPath: ./appPackage/manifest.json
- # 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
diff --git a/templates/ts/message-extension-copilot/tsconfig.json b/templates/ts/message-extension-copilot/tsconfig.json
deleted file mode 100644
index 385a05ba67..0000000000
--- a/templates/ts/message-extension-copilot/tsconfig.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "compilerOptions": {
- "declaration": true,
- "target": "es2017",
- "module": "commonjs",
- "outDir": "./lib",
- "rootDir": "./",
- "moduleResolution": "nodenext",
- "sourceMap": true,
- "incremental": true,
- "tsBuildInfoFile": "./lib/.tsbuildinfo",
- "resolveJsonModule": true,
- "esModuleInterop": true,
- }
-}
diff --git a/templates/ts/message-extension-copilot/web.config b/templates/ts/message-extension-copilot/web.config
deleted file mode 100644
index 28463f64d9..0000000000
--- a/templates/ts/message-extension-copilot/web.config
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-