From c96f01bd4fc0d9ea2985ddb0d2cc32da7b1511f2 Mon Sep 17 00:00:00 2001 From: Raj Date: Sun, 31 Mar 2024 21:30:55 +0530 Subject: [PATCH] added new message extension --- .../Properties/launchSettings.json | 18 ++-- Azure.AI.Services.Teams/Search/AISearch.cs | 5 +- Azure.AI.Services.Teams/Search/SearchApp.cs | 99 +++++++++++------- Azure.AI.Services.Teams/appPackage/color.png | Bin 0 -> 3415 bytes .../appPackage/ecogroceriescolor.png | Bin 33884 -> 0 bytes .../appPackage/ecogroceriestrnsprnt.png | Bin 3509 -> 0 bytes .../appPackage/manifest.json | 34 ++++-- .../appPackage/outline.png | Bin 0 -> 407 bytes 8 files changed, 99 insertions(+), 57 deletions(-) create mode 100644 Azure.AI.Services.Teams/appPackage/color.png delete mode 100644 Azure.AI.Services.Teams/appPackage/ecogroceriescolor.png delete mode 100644 Azure.AI.Services.Teams/appPackage/ecogroceriestrnsprnt.png create mode 100644 Azure.AI.Services.Teams/appPackage/outline.png diff --git a/Azure.AI.Services.Teams/Properties/launchSettings.json b/Azure.AI.Services.Teams/Properties/launchSettings.json index 7bd1894..42ed044 100644 --- a/Azure.AI.Services.Teams/Properties/launchSettings.json +++ b/Azure.AI.Services.Teams/Properties/launchSettings.json @@ -5,7 +5,7 @@ "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, - "launchUrl": "https://teams.microsoft.com/l/app/52a13451-aef5-4030-a46c-6e2f99bfc42b?installAppPackage=true&webjoin=true&appTenantId=856766dd-7c1e-4c8c-8327-5476c947f877&login_hint=rajs@zjmmb.onmicrosoft.com", + "launchUrl": "https://teams.microsoft.com/l/app/c5672fe6-8ea4-4319-9371-70241815c2f2?installAppPackage=true&webjoin=true&appTenantId=856766dd-7c1e-4c8c-8327-5476c947f877&login_hint=rajs@zjmmb.onmicrosoft.com", "applicationUrl": "http://localhost:5130", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" @@ -15,14 +15,14 @@ // 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" + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7130;http://localhost:5130", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "hotReloadProfile": "aspnetcore" } } } \ No newline at end of file diff --git a/Azure.AI.Services.Teams/Search/AISearch.cs b/Azure.AI.Services.Teams/Search/AISearch.cs index 954e404..7fbc670 100644 --- a/Azure.AI.Services.Teams/Search/AISearch.cs +++ b/Azure.AI.Services.Teams/Search/AISearch.cs @@ -1,8 +1,7 @@ -using Azure.Search.Documents.Models; +using Azure.AI.OpenAI; using Azure.Search.Documents; -using Azure.AI.OpenAI; using Azure.Search.Documents.Indexes; -using Azure; +using Azure.Search.Documents.Models; namespace Azure.AI.Services.Teams.Search { diff --git a/Azure.AI.Services.Teams/Search/SearchApp.cs b/Azure.AI.Services.Teams/Search/SearchApp.cs index 73708d4..9a2f18c 100644 --- a/Azure.AI.Services.Teams/Search/SearchApp.cs +++ b/Azure.AI.Services.Teams/Search/SearchApp.cs @@ -1,10 +1,9 @@ -using Microsoft.Bot.Builder; +using AdaptiveCards; +using Azure.Search.Documents.Models; +using Microsoft.Bot.Builder; using Microsoft.Bot.Builder.Teams; using Microsoft.Bot.Schema; using Microsoft.Bot.Schema.Teams; -using AdaptiveCards; -using Newtonsoft.Json.Linq; -using Azure.Search.Documents.Models; using System.Diagnostics; namespace Azure.AI.Services.Teams.Search; @@ -22,41 +21,67 @@ public SearchApp(AISearch aiSearch) // 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 hybridResponse = await _aiSearch.SemanticHybridSearch(text); - var attachments = new List(); - Debug.WriteLine($"Hybrid Search Results:"); - await foreach (SearchResult result in hybridResponse.GetResultsAsync()) + switch (query.CommandId) { - Debug.WriteLine($"Title: {result.Document["title"]}"); - Debug.WriteLine($"Url: {result.Document["url"]}"); - Debug.WriteLine($"Content: {result.Document["content"]}"); - Debug.WriteLine($"Filepath: {result.Document["filepath"]}\n"); - - var previewCard = new HeroCard { Title = result.Document["filepath"].ToString(), Text = result.Document["content"].ToString() }; - var adaptiveCardJson = template.Expand(new { content = result.Document["content"], filepath = result.Document["filepath"], url = result.Document["url"] }); - var adaptiveCard = AdaptiveCard.FromJson(adaptiveCardJson).Card; - var attachment = new MessagingExtensionAttachment - { - ContentType = AdaptiveCard.ContentType, - Content = adaptiveCard, - Preview = previewCard.ToAttachment() - }; - - attachments.Add(attachment); + case "searchQuery": + { + 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 hybridResponse = await _aiSearch.SemanticHybridSearch(text); + var attachments = new List(); + Debug.WriteLine($"Hybrid Search Results:"); + await foreach (SearchResult result in hybridResponse.GetResultsAsync()) + { + Debug.WriteLine($"Title: {result.Document["title"]}"); + Debug.WriteLine($"Url: {result.Document["url"]}"); + Debug.WriteLine($"Content: {result.Document["content"]}"); + Debug.WriteLine($"Filepath: {result.Document["filepath"]}\n"); + var previewCard = new HeroCard { Title = result.Document["filepath"].ToString(), Text = result.Document["content"].ToString() }; + var adaptiveCardJson = template.Expand(new { content = result.Document["content"], filepath = result.Document["filepath"], url = result.Document["url"] }); + var adaptiveCard = AdaptiveCard.FromJson(adaptiveCardJson).Card; + var attachment = new MessagingExtensionAttachment + { + ContentType = AdaptiveCard.ContentType, + Content = adaptiveCard, + Preview = previewCard.ToAttachment() + }; + + attachments.Add(attachment); + + } + return new MessagingExtensionResponse + { + ComposeExtension = new MessagingExtensionResult + { + Type = "result", + AttachmentLayout = "list", + Attachments = attachments + } + }; + } + case "timeQuery": + { + return await Task.FromResult(new MessagingExtensionResponse + { + ComposeExtension = new MessagingExtensionResult + { + Type = "result", + Text = DateTime.Now.ToLongTimeString() + } + }); + } + default: + return new MessagingExtensionResponse + { + ComposeExtension = new MessagingExtensionResult + { + Type = "message", + Text = "Unknown CommandId" + } + }; } - return new MessagingExtensionResponse - { - ComposeExtension = new MessagingExtensionResult - { - Type = "result", - AttachmentLayout = "list", - Attachments = attachments - } - }; } } diff --git a/Azure.AI.Services.Teams/appPackage/color.png b/Azure.AI.Services.Teams/appPackage/color.png new file mode 100644 index 0000000000000000000000000000000000000000..b8cf81afbe2f5bafd8563920edfadb78b7b71be6 GIT binary patch literal 3415 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 diff --git a/Azure.AI.Services.Teams/appPackage/manifest.json b/Azure.AI.Services.Teams/appPackage/manifest.json index bcc10c9..d79d490 100644 --- a/Azure.AI.Services.Teams/appPackage/manifest.json +++ b/Azure.AI.Services.Teams/appPackage/manifest.json @@ -5,18 +5,18 @@ "id": "${{TEAMS_APP_ID}}", "packageName": "com.microsoft.teams.extension", "developer": { - "name": "Teams App, Inc.", - "websiteUrl": "https://www.example.com", - "privacyUrl": "https://www.example.com/termofuse", - "termsOfUseUrl": "https://www.example.com/privacy" + "name": "Contoso Inc.", + "websiteUrl": "https://www.contoso.com", + "privacyUrl": "https://www.contoso.com/termofuse", + "termsOfUseUrl": "https://www.contoso.com/privacy" }, "icons": { - "color": "ecogroceriescolor.png", - "outline": "ecogroceriestrnsprnt.png" + "color": "color.png", + "outline": "outline.png" }, "name": { - "short": "EcoGroceries Call Center C#", - "full": "EcoGroceries Call Center Search message extension helping you find conversation records with clients" + "short": "Contoso Consulting", + "full": "Contoso Consulting search message extension helping you find conversation records with partners" }, "description": { "short": "Message extension to find recorded conversation scripts with clients", @@ -45,6 +45,24 @@ "inputType": "text" } ] + }, + { + "id": "timeQuery", + "context": [ + "compose", + "commandBox" + ], + "description": "Get current time", + "title": "Time", + "type": "query", + "parameters": [ + { + "name": "timeQuery", + "title": "Time Query", + "description": "Get current time", + "inputType": "text" + } + ] } ] } diff --git a/Azure.AI.Services.Teams/appPackage/outline.png b/Azure.AI.Services.Teams/appPackage/outline.png new file mode 100644 index 0000000000000000000000000000000000000000..2c3bf6fa65f152de0cb50056effd5aea7d287ec1 GIT binary patch literal 407 zcmV;I0cie-P)GP9wA4-6No2JPavK^y+J&IdIIqnt|)iz#;q%0#|~})uPXtHpGg|3DT=Cm zRbOQmZzjp~Oa~|w3J0d4$UMjUP`eo9-%ZEed<9c*o{#frSUWpe$h)9<7f||JElr8%Q+a+LHNJ~kNO5B zlRv;1hxJ`;YEbQ%GiTGTR{shYbEe%;Xrq2t9*a`EVNoJ89P+!W;^dkhG3QK~lh@uy z_@!DknGSuYuSg%;OK8pl!P9F+PR@yY6bgl7VhU4=M!!cg{}TWJ002ovPDHLkV1nXO Bp2+|J literal 0 HcmV?d00001