public IEnumerable <TagData> GetTags(IEnumerable <TaggableContent> taggableContents)
        {
            try
            {
                var credentials = new AzureCognitiveServicesTextAnalyticsClientCredentials(Key);
                var client      = new TextAnalyticsClient(credentials)
                {
                    Endpoint = Endpoint
                };

                //All of the Text Analytics API endpoints accept raw text data.The current limit is 5,120 characters for each document;
                //Limit Value
                //Maximum size of a single document   5,120 characters as measured by StringInfo.LengthInTextElements.
                //Maximum size of entire request  1 MB
                //Maximum number of documents in a request    1,000 documents
                var documents = new List <MultiLanguageInput>();
                int id        = 0;
                foreach (StringContent taggableContent in taggableContents)
                {
                    var text = (taggableContent != null) ? taggableContent.Content : null;
                    if (string.IsNullOrEmpty(text))
                    {
                        continue;
                    }

                    if (text.Length > 5100)
                    {
                        text = text.Substring(0, 5100);
                    }

                    //just skip it if description is 500 characters or less, not enough content to process
                    //if (text.Length > 500)
                    documents.Add(new MultiLanguageInput()
                    {
                        Id = id.ToString(), Text = text
                    });
                    id++;
                }

                if (!documents.Any())
                {
                    return(new List <TagData>());
                }

                var inputDocuments = new MultiLanguageBatchInput(documents);
                var results        = client.EntitiesBatch(inputDocuments);

                if (results.Errors.Count > 0)
                {
                    var messageBus = MessageBus;
                    if (messageBus != null)
                    {
                        foreach (var error in results.Errors)
                        {
                            messageBus.SendMessage(new Message()
                            {
                                Body  = string.Format("Azure Cogntive Services Text Analytics Error: {0} Message: {1}", error.Id, error.Message),
                                Level = MessageLevel.Error
                            });
                        }
                    }
                }

                var tagData     = new List <TagData>();
                var entityNames = new List <string>();
                foreach (var document in results.Documents)
                {
                    foreach (var entity in document.Entities)
                    {
                        if (!Exclude.Contains(entity.Name.ToLower()) &&
                            (entity.Type == "Organization" || entity.Type == "Location" ||
                             (entity.Type == "Other" && IncludeOther.Contains(entity.Name.ToLower())) ||
                             (entity.Type == "Quantity" && IncludeQuantity.Contains(entity.Name))))
                        {
                            var name = NormalizeEntityName(entity.Name);
                            if (entity.SubType != null)
                            {
                                entityNames.Add(string.Format("{0} - {1} - {2}", entity.Type, entity.SubType, name));
                            }
                            else
                            {
                                entityNames.Add(string.Format("{0} - {1}", entity.Type, name));
                            }
                        }
                    }
                }

                return(entityNames.Distinct().Select(x => new TagData()
                {
                    TagName = x
                }));
            }
            catch (Exception ex)
            {
                var messageBus = MessageBus;
                if (messageBus != null)
                {
                    messageBus.SendMessage(new Message()
                    {
                        Body  = string.Format("Azure Cogntive Services Text Analytics Error: {0}", ex.Message),
                        Level = MessageLevel.Error
                    });
                }
            }

            return(new List <TagData>());
        }