From f8ce953f42a5c140099d2cead5928873e5a1ac27 Mon Sep 17 00:00:00 2001 From: kgrashad Date: Tue, 4 Oct 2016 11:45:02 +0200 Subject: [PATCH] Adding CSharp SimilarProducts bot sample. --- .../App_Start/WebApiConfig.cs | 33 +++ .../Controllers/MessagesController.cs | 258 ++++++++++++++++++ .../intelligence-SimilarProducts/Global.asax | 1 + .../Global.asax.cs | 12 + .../Images/blue-shoes.jpg | Bin 0 -> 19776 bytes .../Images/outcome-emulator-stream.png | Bin 0 -> 108141 bytes .../Properties/AssemblyInfo.cs | 34 +++ CSharp/intelligence-SimilarProducts/README.md | 107 ++++++++ .../Services/BingImageResponse.cs | 58 ++++ .../Services/BingImageSearchService.cs | 97 +++++++ .../Services/IImageSearchService.cs | 26 ++ .../Services/ImageResult.cs | 15 + .../SimilarProducts.csproj | 178 ++++++++++++ .../SimilarProducts.sln | 22 ++ .../intelligence-SimilarProducts/Web.config | 67 +++++ .../azuredeploy.json | 121 ++++++++ .../intelligence-SimilarProducts/default.htm | 16 ++ .../packages.config | 15 + README.md | 3 + 19 files changed, 1063 insertions(+) create mode 100644 CSharp/intelligence-SimilarProducts/App_Start/WebApiConfig.cs create mode 100644 CSharp/intelligence-SimilarProducts/Controllers/MessagesController.cs create mode 100644 CSharp/intelligence-SimilarProducts/Global.asax create mode 100644 CSharp/intelligence-SimilarProducts/Global.asax.cs create mode 100644 CSharp/intelligence-SimilarProducts/Images/blue-shoes.jpg create mode 100644 CSharp/intelligence-SimilarProducts/Images/outcome-emulator-stream.png create mode 100644 CSharp/intelligence-SimilarProducts/Properties/AssemblyInfo.cs create mode 100644 CSharp/intelligence-SimilarProducts/README.md create mode 100644 CSharp/intelligence-SimilarProducts/Services/BingImageResponse.cs create mode 100644 CSharp/intelligence-SimilarProducts/Services/BingImageSearchService.cs create mode 100644 CSharp/intelligence-SimilarProducts/Services/IImageSearchService.cs create mode 100644 CSharp/intelligence-SimilarProducts/Services/ImageResult.cs create mode 100644 CSharp/intelligence-SimilarProducts/SimilarProducts.csproj create mode 100644 CSharp/intelligence-SimilarProducts/SimilarProducts.sln create mode 100644 CSharp/intelligence-SimilarProducts/Web.config create mode 100644 CSharp/intelligence-SimilarProducts/azuredeploy.json create mode 100644 CSharp/intelligence-SimilarProducts/default.htm create mode 100644 CSharp/intelligence-SimilarProducts/packages.config diff --git a/CSharp/intelligence-SimilarProducts/App_Start/WebApiConfig.cs b/CSharp/intelligence-SimilarProducts/App_Start/WebApiConfig.cs new file mode 100644 index 0000000000..2de4d4155f --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/App_Start/WebApiConfig.cs @@ -0,0 +1,33 @@ +using System.Web.Http; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; + +namespace SimilarProducts +{ + public static class WebApiConfig + { + public static void Register(HttpConfiguration config) + { + // Json settings + config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; + config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); + config.Formatters.JsonFormatter.SerializerSettings.Formatting = Formatting.Indented; + JsonConvert.DefaultSettings = () => new JsonSerializerSettings + { + ContractResolver = new CamelCasePropertyNamesContractResolver(), + Formatting = Formatting.Indented, + NullValueHandling = NullValueHandling.Ignore, + }; + + // Web API configuration and services + + // Web API routes + config.MapHttpAttributeRoutes(); + + config.Routes.MapHttpRoute( + name: "DefaultApi", + routeTemplate: "api/{controller}/{id}", + defaults: new { id = RouteParameter.Optional }); + } + } +} diff --git a/CSharp/intelligence-SimilarProducts/Controllers/MessagesController.cs b/CSharp/intelligence-SimilarProducts/Controllers/MessagesController.cs new file mode 100644 index 0000000000..7ebdae084c --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/Controllers/MessagesController.cs @@ -0,0 +1,258 @@ +namespace SimilarProducts.Controllers +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.IO; + using System.Linq; + using System.Net; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Text.RegularExpressions; + using System.Threading.Tasks; + using System.Web.Http; + using Microsoft.Bot.Connector; + using Services; + + [BotAuthentication] + public class MessagesController : ApiController + { + private readonly IImageSearchService imageService = new BingImageSearchService(); + + /// + /// POST: api/Messages + /// Receive a message from a user and reply to it + /// + public async Task Post([FromBody]Activity activity) + { + if (activity.Type == ActivityTypes.Message) + { + var connector = new ConnectorClient(new Uri(activity.ServiceUrl)); + string message = null; + bool replied = false; + + try + { + var images = await this.GetSimilarImagesAsync(activity, connector); + + if (images != null && images.Any()) + { + Activity reply = activity.CreateReply("Here are some visually similar products I found"); + reply.Type = ActivityTypes.Message; + reply.AttachmentLayout = "carousel"; + reply.Attachments = this.BuildImageAttachments(images.Take(10)); + await connector.Conversations.ReplyToActivityAsync(reply); + replied = true; + } + else + { + message = "Couldn't find similar products images for this one"; + } + } + catch (ArgumentException e) + { + message = "Did you upload an image? I'm more of a visual person. " + + "Try sending me an image or an image URL"; + + Trace.TraceError(e.ToString()); + } + catch (Exception e) + { + message = "Oops! Something went wrong. Try again later."; + + Trace.TraceError(e.ToString()); + } + + if (!replied) + { + Activity reply = activity.CreateReply(message); + await connector.Conversations.ReplyToActivityAsync(reply); + } + } + else + { + await this.HandleSystemMessage(activity); + } + + var response = this.Request.CreateResponse(HttpStatusCode.OK); + return response; + } + + /// + /// Gets the caption asynchronously by checking the type of the image (stream vs URL) + /// and calling the appropriate caption service method. + /// + /// The activity. + /// The connector. + /// The caption if found + /// The activity doesn't contain a valid image attachment or an image URL. + private async Task> GetSimilarImagesAsync(Activity activity, ConnectorClient connector) + { + var imageAttachment = activity.Attachments?.FirstOrDefault(a => a.ContentType.Contains("image")); + if (imageAttachment != null) + { + using (var stream = await GetImageStream(connector, imageAttachment)) + { + return await this.imageService.GetSimilarProductImagesAsync(stream); + } + } + + string url; + if (TryParseAnchorTag(activity.Text, out url)) + { + return await this.imageService.GetSimilarProductImagesAsync(url); + } + + if (Uri.IsWellFormedUriString(activity.Text, UriKind.Absolute)) + { + return await this.imageService.GetSimilarProductImagesAsync(activity.Text); + } + + // If we reach here then the activity is neither an image attachment nor an image URL. + throw new ArgumentException("The activity doesn't contain a valid image attachment or an image URL."); + } + + private IList BuildImageAttachments(IEnumerable images) + { + var attachments = new List(); + + foreach (var image in images) + { + var plAttachment = new Attachment { ContentType = "application/vnd.microsoft.card.hero" }; + + //Construct Card + var plCard = new HeroCard + { + Title = image.Name, + Subtitle = image.HostPageDisplayUrl, + Images = new List() + }; + + //Add Card Image + var img = new CardImage { Url = image.ThumbnailUrl }; + plCard.Images.Add(img); + + //Add Card Buttons + plCard.Buttons = new List(); + var plButtonBuy = new CardAction(); + var plButtonSearch = new CardAction(); + + //Buy Button + plButtonBuy.Title = "Buy from merchant"; + plButtonBuy.Type = "openUrl"; + plButtonBuy.Value = image.HostPageUrl; + + //Search More button + plButtonSearch.Title = "Find more in Bing"; + plButtonSearch.Type = "openUrl"; + plButtonSearch.Value = image.WebSearchUrl; + + plCard.Buttons.Add(plButtonBuy); + plCard.Buttons.Add(plButtonSearch); + plAttachment.Content = plCard; + + attachments.Add(plAttachment); + } + + return attachments; + } + + /// + /// Gets the image stream. + /// + /// The connector. + /// The image attachment. + /// + private static async Task GetImageStream(ConnectorClient connector, Attachment imageAttachment) + { + using (var httpClient = new HttpClient()) + { + // The Skype attachment URLs are secured by JwtToken, + // you should set the JwtToken of your bot as the authorization header for the GET request your bot initiates to fetch the image. + // https://github.com/Microsoft/BotBuilder/issues/662 + var uri = new Uri(imageAttachment.ContentUrl); + if (uri.Host.EndsWith("skype.com") && uri.Scheme == "https") + { + httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", await GetTokenAsync(connector)); + httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream")); + } + else + { + httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(imageAttachment.ContentType)); + } + + return await httpClient.GetStreamAsync(uri); + } + } + + /// + /// Gets the href value in an anchor element. + /// + /// Skype transforms raw urls to html. Here we extract the href value from the url + /// Anchor tag html. + /// Url if valid anchor tag, null otherwise + /// True if valid anchor element + private static bool TryParseAnchorTag(string text, out string url) + { + var regex = new Regex("^[^\"]*)\">[^<]*$", RegexOptions.IgnoreCase); + url = regex.Matches(text).OfType().Select(m => m.Groups["href"].Value).FirstOrDefault(); + return url != null; + } + + + /// + /// Gets the JwT token of the bot. + /// + /// + /// JwT token of the bot + private static async Task GetTokenAsync(ConnectorClient connector) + { + var credentials = connector.Credentials as MicrosoftAppCredentials; + if (credentials != null) + { + return await credentials.GetTokenAsync(); + } + + return null; + } + + /// + /// Handles the system activity. + /// + /// The activity. + /// Activity + private async Task HandleSystemMessage(Activity activity) + { + switch (activity.Type) + { + case ActivityTypes.DeleteUserData: + // Implement user deletion here + // If we handle user deletion, return a real message + break; + case ActivityTypes.ConversationUpdate: + // Greet the user the first time the bot is added to a conversation. + if (activity.MembersAdded.Any(m => m.Id == activity.Recipient.Id)) + { + var connector = new ConnectorClient(new Uri(activity.ServiceUrl)); + + var response = activity.CreateReply(); + response.Text = "Hi! I am SimilarProducts Bot. I can find you similar products" + + " Try sending me an image or an image URL."; + + await connector.Conversations.ReplyToActivityAsync(response); + } + break; + case ActivityTypes.ContactRelationUpdate: + // Handle add/remove from contact lists + break; + case ActivityTypes.Typing: + // Handle knowing that the user is typing + break; + case ActivityTypes.Ping: + break; + } + + return null; + } + } +} \ No newline at end of file diff --git a/CSharp/intelligence-SimilarProducts/Global.asax b/CSharp/intelligence-SimilarProducts/Global.asax new file mode 100644 index 0000000000..bf00bb1916 --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="SimilarProducts.WebApiApplication" Language="C#" %> diff --git a/CSharp/intelligence-SimilarProducts/Global.asax.cs b/CSharp/intelligence-SimilarProducts/Global.asax.cs new file mode 100644 index 0000000000..377435ea13 --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/Global.asax.cs @@ -0,0 +1,12 @@ +using System.Web.Http; + +namespace SimilarProducts +{ + public class WebApiApplication : System.Web.HttpApplication + { + protected void Application_Start() + { + GlobalConfiguration.Configure(WebApiConfig.Register); + } + } +} \ No newline at end of file diff --git a/CSharp/intelligence-SimilarProducts/Images/blue-shoes.jpg b/CSharp/intelligence-SimilarProducts/Images/blue-shoes.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0648f9893dc7a28f50a5b15441ade9be8734a825 GIT binary patch literal 19776 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 a;i?FVt2Y~%e1t+!Bb}qn`2YaU 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 z +/// Gets a list of visually similar products from an image URL. +/// +/// The URL of an image. +/// List of visually similar images. +public async Task> GetSimilarProductImagesAsync(string url) +{ + using (var httpClient = new HttpClient()) + { + httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", ApiKey); + + string apiUrl = BingApiUrl + $"&imgUrl={HttpUtility.UrlEncode(url)}"; + + var text = await httpClient.GetStringAsync(apiUrl); + var response = JsonConvert.DeserializeObject(text); + + return response + ?.visuallySimilarProducts + ?.Select(i => new ImageResult + { + HostPageDisplayUrl = i.hostPageDisplayUrl, + HostPageUrl = i.hostPageUrl, + Name = i.name, + ThumbnailUrl = i.thumbnailUrl, + WebSearchUrl = i.webSearchUrl + }) + .ToList(); + } +} +```` + +The second method `GetSimilarProductImagesAsync(Stream stream)` illustrates how to get the list of visually similar product from a stream. The main difference here is that the image content is posted in the request body: + +```C# +/// +/// Gets a list of visually similar products from an image stream. +/// +/// The stream to an image. +/// List of visually similar images. +public async Task> GetSimilarProductImagesAsync(Stream stream) +{ + using (var httpClient = new HttpClient()) + { + httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", ApiKey); + + var strContent = new StreamContent(stream); + strContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") { FileName = "Any-Name-Works" }; + + var content = new MultipartFormDataContent(); + content.Add(strContent); + + var postResponse = await httpClient.PostAsync(BingApiUrl, content); + var text = await postResponse.Content.ReadAsStringAsync(); + var response = JsonConvert.DeserializeObject(text); + + return response + ?.visuallySimilarProducts + ?.Select(i => new ImageResult + { + HostPageDisplayUrl = i.hostPageDisplayUrl, + HostPageUrl = i.hostPageUrl, + Name = i.name, + ThumbnailUrl = i.thumbnailUrl, + WebSearchUrl = i.webSearchUrl + }) + .ToList(); + } +} +``` + +### Outcome + +You will see the following when connecting the Bot to the Emulator and send it an image or a URL: + +Input: + +![Sample Outcome](Images/blue-shoes.jpg) + +Output: + +![Sample Outcome](Images/outcome-emulator-stream.png) + +### More Information + +To get more information about how to get started in Bot Builder for .NET and Microsoft Cognitive Services Computer Vision API please review the following resources: +* [Bot Builder for .NET](https://docs.botframework.com/en-us/csharp/builder/sdkreference/index.html) +* [Microsoft Bing Image Search API](https://www.microsoft.com/cognitive-services/en-us/bing-image-search-api) +* [Microsoft Bing Image Search API Reference](https://msdn.microsoft.com/en-us/library/dn760791.aspx) diff --git a/CSharp/intelligence-SimilarProducts/Services/BingImageResponse.cs b/CSharp/intelligence-SimilarProducts/Services/BingImageResponse.cs new file mode 100644 index 0000000000..537dea01d8 --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/Services/BingImageResponse.cs @@ -0,0 +1,58 @@ +namespace SimilarProducts.Services +{ + using System.Collections.Generic; + + public class Instrumentation + { + public string pageLoadPingUrl { get; set; } + } + + public class Thumbnail + { + public int width { get; set; } + public int height { get; set; } + } + + public class AggregateRating + { + public double ratingValue { get; set; } + public double bestRating { get; set; } + } + + public class AggregateOffer + { + public string name { get; set; } + public string priceCurrency { get; set; } + public AggregateRating aggregateRating { get; set; } + public double lowPrice { get; set; } + public int offerCount { get; set; } + } + + public class VisuallySimilarProduct + { + public string name { get; set; } + public string webSearchUrl { get; set; } + public string thumbnailUrl { get; set; } + public string datePublished { get; set; } + public string contentUrl { get; set; } + public string hostPageUrl { get; set; } + public string contentSize { get; set; } + public string encodingFormat { get; set; } + public string hostPageDisplayUrl { get; set; } + public int width { get; set; } + public int height { get; set; } + public Thumbnail thumbnail { get; set; } + public string imageInsightsToken { get; set; } + public string imageId { get; set; } + public string accentColor { get; set; } + public AggregateOffer aggregateOffer { get; set; } + } + + public class BingImageResponse + { + public string _type { get; set; } + public Instrumentation instrumentation { get; set; } + public List visuallySimilarProducts { get; set; } + public string imageInsightsToken { get; set; } + } +} \ No newline at end of file diff --git a/CSharp/intelligence-SimilarProducts/Services/BingImageSearchService.cs b/CSharp/intelligence-SimilarProducts/Services/BingImageSearchService.cs new file mode 100644 index 0000000000..d7442b893f --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/Services/BingImageSearchService.cs @@ -0,0 +1,97 @@ +using System.Net.Http.Headers; +using System.Web; + +namespace SimilarProducts.Services +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Linq; + using System.Net.Http; + using System.Threading.Tasks; + using System.Web.Configuration; + using Newtonsoft.Json; + + /// + /// A client that handles the interactions with the Bing Image Search API. + /// + /// + /// + public class BingImageSearchService : IImageSearchService + { + /// + /// Microsoft Computer Vision API key. + /// + private static readonly string ApiKey = WebConfigurationManager.AppSettings["BingSearchApiKey"]; + + /// + /// The bing API URL. + /// + private static readonly string BingApiUrl = "https://api.cognitive.microsoft.com/bing/v5.0/images/search?modulesRequested=SimilarProducts&mkt=en-us"; + + /// + /// Gets a list of visually similar products from an image URL. + /// + /// The URL of an image. + /// List of visually similar images. + public async Task> GetSimilarProductImagesAsync(string url) + { + using (var httpClient = new HttpClient()) + { + httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", ApiKey); + + string apiUrl = BingApiUrl + $"&imgUrl={HttpUtility.UrlEncode(url)}"; + + var text = await httpClient.GetStringAsync(apiUrl); + var response = JsonConvert.DeserializeObject(text); + + return response + ?.visuallySimilarProducts + ?.Select(i => new ImageResult + { + HostPageDisplayUrl = i.hostPageDisplayUrl, + HostPageUrl = i.hostPageUrl, + Name = i.name, + ThumbnailUrl = i.thumbnailUrl, + WebSearchUrl = i.webSearchUrl + }) + .ToList(); + } + } + + /// + /// Gets a list of visually similar products from an image stream. + /// + /// The stream to an image. + /// List of visually similar images. + public async Task> GetSimilarProductImagesAsync(Stream stream) + { + using (var httpClient = new HttpClient()) + { + httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", ApiKey); + + var strContent = new StreamContent(stream); + strContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") { FileName = "Any-Name-Works" }; + + var content = new MultipartFormDataContent(); + content.Add(strContent); + + var postResponse = await httpClient.PostAsync(BingApiUrl, content); + var text = await postResponse.Content.ReadAsStringAsync(); + var response = JsonConvert.DeserializeObject(text); + + return response + ?.visuallySimilarProducts + ?.Select(i => new ImageResult + { + HostPageDisplayUrl = i.hostPageDisplayUrl, + HostPageUrl = i.hostPageUrl, + Name = i.name, + ThumbnailUrl = i.thumbnailUrl, + WebSearchUrl = i.webSearchUrl + }) + .ToList(); + } + } + } +} \ No newline at end of file diff --git a/CSharp/intelligence-SimilarProducts/Services/IImageSearchService.cs b/CSharp/intelligence-SimilarProducts/Services/IImageSearchService.cs new file mode 100644 index 0000000000..50d308d8fc --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/Services/IImageSearchService.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; + +namespace SimilarProducts.Services +{ + /// + /// An interface that defines the contract with the caption service. + /// + internal interface IImageSearchService + { + /// + /// Gets a list of visually similar products from an image stream. + /// + /// The stream to an image. + /// List of visually similar images. + Task> GetSimilarProductImagesAsync(Stream stream); + + /// + /// Gets a list of visually similar products from an image URL. + /// + /// The URL of an image. + /// List of visually similar images. + Task> GetSimilarProductImagesAsync(string url); + } +} \ No newline at end of file diff --git a/CSharp/intelligence-SimilarProducts/Services/ImageResult.cs b/CSharp/intelligence-SimilarProducts/Services/ImageResult.cs new file mode 100644 index 0000000000..0730853341 --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/Services/ImageResult.cs @@ -0,0 +1,15 @@ +namespace SimilarProducts.Services +{ + public class ImageResult + { + public string HostPageDisplayUrl { get; set; } + + public string HostPageUrl { get; set; } + + public string Name { get; set; } + + public string ThumbnailUrl { get; set; } + + public string WebSearchUrl { get; set; } + } +} \ No newline at end of file diff --git a/CSharp/intelligence-SimilarProducts/SimilarProducts.csproj b/CSharp/intelligence-SimilarProducts/SimilarProducts.csproj new file mode 100644 index 0000000000..abb5fcdf25 --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/SimilarProducts.csproj @@ -0,0 +1,178 @@ + + + + + Debug + AnyCPU + + + 2.0 + {A8BA1066-5695-4D71-ABB4-65E5A5E0C3D4} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + SimilarProducts + SimilarProducts + v4.6 + true + + + + + + + + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + packages\Autofac.3.5.2\lib\net40\Autofac.dll + True + + + packages\Chronic.Signed.0.3.2\lib\net40\Chronic.dll + True + + + packages\Microsoft.Bot.Builder.3.2.1\lib\net46\Microsoft.Bot.Builder.dll + True + + + packages\Microsoft.Bot.Builder.3.2.1\lib\net46\Microsoft.Bot.Connector.dll + True + + + + packages\Microsoft.IdentityModel.Protocol.Extensions.1.0.2.206221351\lib\net45\Microsoft.IdentityModel.Protocol.Extensions.dll + True + + + packages\Microsoft.Rest.ClientRuntime.2.3.2\lib\net45\Microsoft.Rest.ClientRuntime.dll + True + + + packages\Microsoft.WindowsAzure.ConfigurationManager.3.2.1\lib\net40\Microsoft.WindowsAzure.Configuration.dll + True + + + packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll + True + + + + packages\System.IdentityModel.Tokens.Jwt.4.0.2.206221351\lib\net45\System.IdentityModel.Tokens.Jwt.dll + True + + + + + packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll + True + + + + + + + + + + + + + + packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll + True + + + packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll + True + + + + + + + + + + + + Designer + + + + + + + Global.asax + + + + + + + + + + + + + + + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + true + + + + + + + + + True + True + 3979 + / + http://localhost:3979/ + False + False + + + False + + + + + + \ No newline at end of file diff --git a/CSharp/intelligence-SimilarProducts/SimilarProducts.sln b/CSharp/intelligence-SimilarProducts/SimilarProducts.sln new file mode 100644 index 0000000000..187709716f --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/SimilarProducts.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimilarProducts", "SimilarProducts.csproj", "{A8BA1066-5695-4D71-ABB4-65E5A5E0C3D4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A8BA1066-5695-4D71-ABB4-65E5A5E0C3D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8BA1066-5695-4D71-ABB4-65E5A5E0C3D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8BA1066-5695-4D71-ABB4-65E5A5E0C3D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8BA1066-5695-4D71-ABB4-65E5A5E0C3D4}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CSharp/intelligence-SimilarProducts/Web.config b/CSharp/intelligence-SimilarProducts/Web.config new file mode 100644 index 0000000000..91e217f074 --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/Web.config @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharp/intelligence-SimilarProducts/azuredeploy.json b/CSharp/intelligence-SimilarProducts/azuredeploy.json new file mode 100644 index 0000000000..abbee69213 --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/azuredeploy.json @@ -0,0 +1,121 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "siteName": { + "defaultValue": "BotBuilder-Samples", + "type": "string" + }, + "hostingPlanName": { + "type": "string" + }, + "siteLocation": { + "type": "string" + }, + "sku": { + "type": "string", + "allowedValues": [ + "Free", + "Shared", + "Basic", + "Standard" + ], + "defaultValue": "Free" + }, + "workerSize": { + "type": "string", + "allowedValues": [ + "0", + "1", + "2" + ], + "defaultValue": "0" + }, + "repoUrl": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "Project": { + "type": "string", + "defaultValue": "CSharp/intelligence-SimilarProducts" + }, + "MicrosoftAppId": { + "type": "string" + }, + "MicrosoftAppPassword": { + "type": "string" + } + }, + "resources": [ + { + "apiVersion": "2014-06-01", + "name": "[parameters('hostingPlanName')]", + "type": "Microsoft.Web/serverFarms", + "location": "[parameters('siteLocation')]", + "properties": { + "name": "[parameters('hostingPlanName')]", + "sku": "[parameters('sku')]", + "workerSize": "[parameters('workerSize')]", + "numberOfWorkers": 1 + } + }, + { + "apiVersion": "2014-06-01", + "name": "[parameters('siteName')]", + "type": "Microsoft.Web/Sites", + "location": "[parameters('siteLocation')]", + "dependsOn": [ + "[concat('Microsoft.Web/serverFarms/', parameters('hostingPlanName'))]" + ], + "tags": { + "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "empty" + }, + "properties": { + "name": "[parameters('siteName')]", + "serverFarm": "[parameters('hostingPlanName')]" + }, + "resources": [ + { + "apiVersion": "2014-04-01", + "type": "config", + "name": "web", + "dependsOn": [ + "[concat('Microsoft.Web/Sites/', parameters('siteName'))]" + ], + "properties": { + "appSettings": [ + { + "name": "Project", + "value": "[parameters('Project')]" + }, + { + "name": "MicrosoftAppId", + "value": "[parameters('MicrosoftAppId')]" + }, + { + "name": "MicrosoftAppPassword", + "value": "[parameters('MicrosoftAppPassword')]" + } + ] + } + }, + { + "apiVersion": "2014-04-01", + "name": "web", + "type": "sourcecontrols", + "dependsOn": [ + "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]", + "[concat('Microsoft.Web/Sites/', parameters('siteName'), '/config/web')]" + ], + "properties": { + "RepoUrl": "[parameters('repoUrl')]", + "branch": "[parameters('branch')]", + "IsManualIntegration": true + } + } + ] + } + ] +} \ No newline at end of file diff --git a/CSharp/intelligence-SimilarProducts/default.htm b/CSharp/intelligence-SimilarProducts/default.htm new file mode 100644 index 0000000000..a17e713193 --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/default.htm @@ -0,0 +1,16 @@ + + + + + + +

SimilarProducts

+

+ A sample bot that finds similar product images from an image stream or URL. +

+

+ Visit Bot Framework to register your bot. + When you register it, remember to set your bot's endpoint to

https://your_bots_hostname/api/messages
+

+ + diff --git a/CSharp/intelligence-SimilarProducts/packages.config b/CSharp/intelligence-SimilarProducts/packages.config new file mode 100644 index 0000000000..1f20e60fa7 --- /dev/null +++ b/CSharp/intelligence-SimilarProducts/packages.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 3d6210ae67..9012dab83c 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ Sample | Description | C# | Node LUIS | A sample bot using LuisDialog to integrate with a LUIS.ai application. | [View Sample](/CSharp/intelligence-LUIS)[![Deploy to Azure][Deploy Button]][Deploy CSharp/LUIS] | [View Sample](/Node/intelligence-LUIS)[![Deploy to Azure][Deploy Button]][Deploy Node/LUIS] Image Caption | A sample bot that gets an image caption using Microsoft Cognitive Services Vision API. | [View Sample](/CSharp/intelligence-ImageCaption)[![Deploy to Azure][Deploy Button]][Deploy CSharp/ImageCaption] | [View Sample](/Node/intelligence-ImageCaption)[![Deploy to Azure][Deploy Button]][Deploy Node/ImageCaption] Speech To Text | A sample bot that gets text from audio using Bing Speech API. | [View Sample](/CSharp/intelligence-SpeechToText)[![Deploy to Azure][Deploy Button]][Deploy CSharp/SpeechToText] | [View Sample](/Node/intelligence-SpeechToText)[![Deploy to Azure][Deploy Button]][Deploy Node/SpeechToText] +Similar Products | A sample bot that finds visually similar products using Microsoft Bing Image Search API. | [View Sample](/CSharp/intelligence-SimilarProducts)[![Deploy to Azure][Deploy Button]][Deploy CSharp/SimilarProducts] | [View Sample](/Node/intelligence-SimilarProducts)[![Deploy to Azure][Deploy Button]][Deploy Node/SimilarProducts] ## Demo These are bots designed to showcase end-to-end sample scenarios. They're great sources of code fragments if you're looking to have your bot lightup more complex features. @@ -74,3 +75,5 @@ Azure Search | Two sample bots that help the user navigate large amounts of cont [Deploy Node/ImageCaption]: https://azuredeploy.net?repository=https://github.com/microsoft/BotBuilder-Samples/tree/master/Node/intelligence-ImageCaption [Deploy CSharp/SpeechToText]: https://azuredeploy.net?repository=https://github.com/microsoft/BotBuilder-Samples/tree/master/CSharp/intelligence-SpeechToText [Deploy Node/SpeechToText]: https://azuredeploy.net?repository=https://github.com/microsoft/BotBuilder-Samples/tree/master/Node/intelligence-SpeechToText +[Deploy CSharp/SimilarProducts]: https://azuredeploy.net?repository=https://github.com/microsoft/BotBuilder-Samples/tree/master/CSharp/intelligence-SimilarProducts +[Deploy Node/SimilarProducts]: https://azuredeploy.net?repository=https://github.com/microsoft/BotBuilder-Samples/tree/master/Node/intelligence-SimilarProducts