using Amazon.Comprehend; using Amazon.Comprehend.Model; using Amazon.Translate; using Amazon.Translate.Model; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.Text; namespace AIServicesDemo.Pages { public class IndexModel : PageModel { [BindProperty] public string Text { get; set; } = String.Empty; public string Result { get; set; } = String.Empty; private readonly IAmazonComprehend _comprehendClient; private readonly IAmazonTranslate _translateClient; public IndexModel(IAmazonComprehend comprehendClient, IAmazonTranslate translateClient) { _comprehendClient = comprehendClient; _translateClient = translateClient; } public void OnGet() { } public async Task OnPostLanguageAsync() { var request = new DetectDominantLanguageRequest() { Text = Text }; var response = await _comprehendClient.DetectDominantLanguageAsync(request); var languageCode = response.Languages.First().LanguageCode; var stringBuilder = new StringBuilder(); stringBuilder.AppendFormat("Dominant Language: {0}
", languageCode); stringBuilder.AppendLine("==========================
"); if (languageCode != "en") { stringBuilder.AppendFormat("Translating from {0}:
", languageCode); stringBuilder.AppendLine("==========================
"); var translatRequest = new TranslateTextRequest { Text = Text, SourceLanguageCode = languageCode, TargetLanguageCode = "en" }; var translatResponse = await _translateClient.TranslateTextAsync(translatRequest); stringBuilder.Append(translatResponse?.TranslatedText); } Result = stringBuilder.ToString(); } public async Task OnPostEntitiesAsync() { var request = new DetectEntitiesRequest() { Text = Text, LanguageCode = "en" }; var response = await _comprehendClient.DetectEntitiesAsync(request); var stringBuilder = new StringBuilder(); stringBuilder.AppendLine("Entities:
"); stringBuilder.AppendLine("==========================
"); foreach (var entity in response.Entities) { stringBuilder.AppendFormat( "Text: {0}, Type: {1}, Score: {2}, Offset: {3}-{4}
", entity.Text, entity.Type, entity.Score, entity.BeginOffset, entity.EndOffset); } Result = stringBuilder.ToString(); } public async Task OnPostPIIAsync() { var request = new DetectPiiEntitiesRequest() { Text = Text, LanguageCode = "en" }; var response = await _comprehendClient.DetectPiiEntitiesAsync(request); var stringBuilder = new StringBuilder(); stringBuilder.AppendLine("PII:
"); stringBuilder.AppendLine("==========================
"); foreach (var entity in response.Entities) { stringBuilder.AppendFormat( "Text: {0}, Type: {1}, Score: {2}, Offset: {3}-{4}
", Text.Substring(entity.BeginOffset, entity.EndOffset - entity.BeginOffset), entity.Type, entity.Score, entity.BeginOffset, entity.EndOffset); } Result = stringBuilder.ToString(); } } }