public async Task OnTurn(ITurnContext turnContext) { // Get the current ActiveTopic from my persisted conversation state var context = new AlarmBotContext(turnContext); // Trace top intent // await turnContext.SendActivity(context.Activity.CreateTrace("conversationState", value: context.ConversationState)); await turnContext.TraceActivity("context.ConversationState", value : context.ConversationState); var handled = false; // if we don't have an active topic yet if (context.ConversationState.ActiveTopic == null) { // use the default topic context.ConversationState.ActiveTopic = new DefaultTopic(); handled = await context.ConversationState.ActiveTopic.StartTopic(context); } else { // we do have an active topic, so call it handled = await context.ConversationState.ActiveTopic.ContinueTopic(context); } // if activeTopic's result is false and the activeTopic is NOT already the default topic if (handled == false && !(context.ConversationState.ActiveTopic is DefaultTopic)) { // Use DefaultTopic as the active topic context.ConversationState.ActiveTopic = new DefaultTopic(); await context.ConversationState.ActiveTopic.ResumeTopic(context); } }
public async Task OnTurn(ITurnContext context) { switch (context.Activity.Type) { // On "conversationUpdate"-type activities this bot will send a greeting message to users joining the conversation. case ActivityTypes.ConversationUpdate: var newUserName = context.Activity.MembersAdded.FirstOrDefault()?.Name; if (!string.IsNullOrWhiteSpace(newUserName) && newUserName != "Bot") { await context.SendActivity($"Hallo {newUserName}, ich bin ein Bot. Zu welchem Thema kann ich weiterhelfen?"); } break; case ActivityTypes.Message: var userInputGerman = context.Activity.Text; // Use translation for each message // Detect user language userNativeLanguage = await translatorClient.Detect(context.Activity.Text); // Just for tracing output var translationInfoOutput = await translatorClient.Translate($"Test der Übersetzung\nSprache der Eingabe: ", "de", userNativeLanguage); // Just translate if the text is in a laguage other than German if (!userNativeLanguage.Equals("de")) { userInputGerman = await translatorClient.Translate(context.Activity.Text, userNativeLanguage, "de"); // Add tracing output translationInfoOutput += $"{userNativeLanguage}\n"; translationInfoOutput += await translatorClient.Translate("Übersetzung der Eingabe", "de", userNativeLanguage); translationInfoOutput += $": {userInputGerman}"; } else { translationInfoOutput += userNativeLanguage; } // Trace language and possible translation for debugging await context.TraceActivity(translationInfoOutput); // LUIS Start var(intents, entities) = await RecognizeAsync(botLUISModel, userInputGerman); var topIntent = intents.FirstOrDefault(); switch ((topIntent != null) ? topIntent : null) { case null: await context.SendActivity(await translatorClient.Translate("Ich konnte dich leider nicht verstehen.", "de", userNativeLanguage)); break; case "None": await context.SendActivity(await translatorClient.Translate("Es tut mir leid, aber dabei kann ich leider nicht helfen.", "de", userNativeLanguage)); break; case "Help": await context.SendActivity(await translatorClient.Translate("Ich kann gerne versuchen zu helfen.", "de", userNativeLanguage)); break; case "Weather": await context.SendActivity(await translatorClient.Translate("Das Wetter ist großartig. Zumindest in meinem Rechenzentrum.", "de", userNativeLanguage)); break; case "TechnicalQuestion": await askQnAService(context, userInputGerman); await useAzureSearch(context); break; case "Greeting": await context.SendActivity(await translatorClient.Translate("Wie kann ich dir weiterhelfen?", "de", userNativeLanguage)); break; default: // Received an intent we didn't expect, so send its name and score for debugging. await context.SendActivity(await translatorClient.Translate($"War das dein Anliegen?", "de", userNativeLanguage) + $" Intent: {topIntent}"); break; } // LUIS End break; } }