// private static readonly bool IsSpellCorrectionEnabled = bool.Parse(WebConfigurationManager.AppSettings["IsSpellCorrectionEnabled"]); // private readonly BingSpellCheckService spellService = new BingSpellCheckService(); /// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task <HttpResponseMessage> Post([FromBody] Activity activity) { Trace.TraceInformation($"Incoming Activity is {activity.ToJson()}"); if (activity.Type == ActivityTypes.Message) { if (!String.IsNullOrEmpty(activity.Text)) { //detect language of input text var userLanguage = TranslationHandler.DetectLanguage(activity); // save user´s languagecode var message = activity as IMessageActivity; try { using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message)) { var botDataStore = scope.Resolve <IBotDataStore <BotData> >(); var key = new AddressKey() { BotId = message.Recipient.Id, ChannelId = message.ChannelId, UserId = message.From.Id, ConversationId = message.Conversation.Id, ServiceUrl = message.ServiceUrl }; var userData = await botDataStore.LoadAsync(key, BotStoreType.BotUserData, CancellationToken.None); var storedLanguageCode = userData.GetProperty <string>(StringConstants.UserLanguageKey); //update user's language in Azure Table Storage if (storedLanguageCode != userLanguage && !Regex.IsMatch(activity.Text, @"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?")) { userData.SetProperty(StringConstants.UserLanguageKey, userLanguage); await botDataStore.SaveAsync(key, BotStoreType.BotUserData, userData, CancellationToken.None); await botDataStore.FlushAsync(key, CancellationToken.None); } } } catch (Exception ex) { throw ex; } //translate activity.Text to Spanish before sending to LUIS for intent activity.Text = TranslationHandler.TranslateTextToDefaultLanguage(activity, userLanguage); // activity.Text = TranslationHandler.TranslateText(String ,"es",userLanguage); // await Conversation.SendAsync(activity, MakeRoot); await Conversation.SendAsync(activity, () => new RootLuisDialog()); } } else { HandleSystemMessage(activity); } var response = Request.CreateResponse(HttpStatusCode.OK); return(response); }
/// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> //[ResponseType(typeof(void))] public async Task <HttpResponseMessage> Post([FromBody] Activity activity) { //trust Webchat & SMS channel MicrosoftAppCredentials.TrustServiceUrl(@"https://webchat.botframework.com", DateTime.MaxValue); MicrosoftAppCredentials.TrustServiceUrl(@"https://sms.botframework.com", DateTime.MaxValue); Trace.TraceInformation($"Incoming Activity is {activity.ToJson()}"); if (activity.Type == ActivityTypes.Message) { if (!string.IsNullOrEmpty(activity.Text)) { //detect language of input text var userLanguage = TranslationHandler.DetectLanguage(activity); //save user's LanguageCode to Azure Table Storage var message = activity as IMessageActivity; try { using (var scope = DialogModule.BeginLifetimeScope(Conversation.Container, message)) { var botDataStore = scope.Resolve <IBotDataStore <BotData> >(); var key = new AddressKey() { BotId = message.Recipient.Id, ChannelId = message.ChannelId, UserId = message.From.Id, ConversationId = message.Conversation.Id, ServiceUrl = message.ServiceUrl }; var userData = await botDataStore.LoadAsync(key, BotStoreType.BotUserData, CancellationToken.None); var storedLanguageCode = userData.GetProperty <string>(StringConstants.UserLanguageKey); //update user's language in Azure Table Storage if (storedLanguageCode != userLanguage) { userData.SetProperty(StringConstants.UserLanguageKey, userLanguage); await botDataStore.SaveAsync(key, BotStoreType.BotUserData, userData, CancellationToken.None); await botDataStore.FlushAsync(key, CancellationToken.None); } } } catch (Exception ex) { throw ex; } //translate activity.Text to English before sending to LUIS for intent activity.Text = TranslationHandler.TranslateTextToDefaultLanguage(activity, userLanguage); await Conversation.SendAsync(activity, MakeRoot); } } else { HandleSystemMessage(activity); } var response = Request.CreateResponse(HttpStatusCode.OK); return(response); }