internal static IAlexaDirective ToAlexaDirective(this QnAAnswerModel qnAAnswer) { List <ListItem> listItems = new List <ListItem>(); ListItem listItem; IEnumerable <string> choices = qnAAnswer.Context?.Prompts?.Select(p => p.DisplayText) ?? Enumerable.Empty <string>(); foreach (string choice in choices) { listItem = new ListItem() { Token = choice, TextContent = new TextContent() { PrimaryText = new InnerTextContent() { Text = choice, Type = TextContentType.RichText } } }; listItems.Add(listItem); } var directive = new DisplayDirective() { Template = qnAAnswer.GenerateDisplayListTemplate(listItems) }; return(directive); }
private void GenerateMessage(out Activity messageActivity, out DisplayDirective directive) { messageActivity = MessageFactory.Text("NO HAY SIESTA .NET Conf BCN!!! ¿Qué hacemos?"); var template = GenerateImageTemplate(); directive = new DisplayDirective() { Template = template }; }
internal static IAlexaDirective ToAlexaDirective(this IMessageActivity activity) { List <ListItem> listItems = new List <ListItem>(); ListItem listItem; IEnumerable <string> choices = activity.SuggestedActions?.Actions.Select(a => a.DisplayText); foreach (string choice in choices) { listItem = new ListItem() { Token = choice, TextContent = new TextContent() { PrimaryText = new InnerTextContent() { Text = choice, Type = TextContentType.RichText } } }; listItems.Add(listItem); } var directive = new DisplayDirective() { Template = new DisplayRenderListTemplate1() { BackButton = BackButtonVisibility.HIDDEN, Title = string.Empty, Token = "string", ListItems = listItems, BackgroundImage = new Image() { ContentDescription = "background", Sources = new ImageSource[] { new ImageSource() { Url = "https://storybotst.blob.core.windows.net/images/welcomeImage.jpg" } } } } }; return(directive); }
private async Task HandleLaunchRequestAsync(ITurnContext turnContext, CancellationToken cancellationToken) { var alexaConversation = await _accessors.AlexaConversation.GetAsync(turnContext, () => new AlexaConversation()); var greetingMessage = string.IsNullOrEmpty(alexaConversation.Phrase) ? "Hola, soy tu logopeda virtual, tienes que decirme qué frase o palabra vamos a trabajar" : $@"Hola, continuamos trabajando la {(alexaConversation.Phrase.Contains(" ") ? "frase" : "palabra")} ""{alexaConversation.Phrase}"". A ver José Manuel, dime ""{alexaConversation.Phrase}"""; DisplayDirective directive = new DisplayDirective { Template = GenerateImageTemplate("Human Learning", "https://esalcedoost.blob.core.windows.net/public/background.png") }; turnContext.AlexaResponseDirectives().Add(directive); await turnContext.SendActivityAsync(MessageFactory.Text(greetingMessage, inputHint: InputHints.ExpectingInput), cancellationToken : cancellationToken); }
protected override async Task OnMessageActivityAsync(ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken) { var message = turnContext.Activity.Text.ToLower(); var alexaConversation = await _accessors.AlexaConversation.GetAsync(turnContext, () => new AlexaConversation()); _logger.LogInformation(@"----- Retrieved alexaConversation ({@AlexaConversation})", alexaConversation); // ** Handle goodbye message if (message == "adiós") { // ** Echo user message to monitor await EchoUserMessageAsync(turnContext); await turnContext.SendActivityAsync(MessageFactory.Text("Adiós José Manuel! Buenas noches."), cancellationToken); await ClearConversationAsync(turnContext, "end"); return; } if (message == "pausa") { // ** Echo user message to monitor await EchoUserMessageAsync(turnContext); await turnContext.SendActivityAsync(MessageFactory.Text("Muy bien, me pongo en pausa y seguimos luego."), cancellationToken); return; } var commandConfirmation = string.Empty; if (message == "cambiar palabra") { // ** Echo user message to monitor await EchoUserMessageAsync(turnContext); await ClearConversationAsync(turnContext, "end"); commandConfirmation = "Acabo de dar por terminado el ejercicio, así que "; } if (message == "eliminar palabra") { // ** Echo user message to monitor await EchoUserMessageAsync(turnContext); await ClearConversationAsync(turnContext, "delete"); commandConfirmation = "Acabo de eliminar el ejercicio, así que "; } if (message.StartsWith(newTargetPhraseUtterance)) { // ** Echo user message to monitor await EchoUserMessageAsync(turnContext); alexaConversation.Phrase = GetTargetPhrase(message); alexaConversation.Language = turnContext.Activity.Locale; if (!string.IsNullOrWhiteSpace(alexaConversation.Phrase)) { alexaConversation.CurrentExercise = await CreateExerciseAsync(alexaConversation); alexaConversation.Count = 0; _logger.LogInformation("----- Current exercise saved ({@AlexaConversation})", alexaConversation); await _accessors.AlexaConversation.SetAsync(turnContext, alexaConversation); await turnContext.SendActivityAsync(MessageFactory.Text($@"Muy bien, vamos a trabajar con ""{alexaConversation.Phrase}"". A ver José Manuel, di ""{alexaConversation.Phrase}"" ahora!", inputHint: InputHints.ExpectingInput)); return; } } var replyMessage = string.Empty; var audio = string.Empty; if (string.IsNullOrEmpty(alexaConversation.Phrase)) { replyMessage = $@"{commandConfirmation} necesito saber qué otra palabra vamos a trabajar. Dime, ""Trabajar"", y luego la frase o palabra que quieras."; } else { _logger.LogInformation(@"----- Registering utterance ""{Utterance}"" for exercise ({@Exercise})", message, alexaConversation.CurrentExercise); var utterance = await RegisterUtteranceAsync(alexaConversation.CurrentExercise, message); // ** Echo user utterance to monitor await EchoUserUtteranceAsync(turnContext, utterance); replyMessage = GetResultMessage(turnContext, alexaConversation); await _accessors.AlexaConversation.SetAsync(turnContext, alexaConversation); DisplayDirective directive = new DisplayDirective { Template = GenerateUtteranceTemplate(message, utterance.PercentDeviation) }; turnContext.AlexaResponseDirectives().Add(directive); audio = GetAudio(utterance.PercentDeviation); } var activity = MessageFactory.Text(replyMessage, inputHint: InputHints.ExpectingInput); await turnContext.SendActivityAsync(activity, cancellationToken); }