public async Task ItencaoProcurandoProduto(IDialogContext context, LuisResult result) { var entity = result.Entities.FirstOrDefault(c => c.Type == "Produto")?.Entity; if (string.IsNullOrEmpty(entity)) { await context.PostAsync("Poderia melhorar um pouco sua frase? Não consegui entender."); } else { await context.PostAsync("Só um minuto, já te mando o que encontrei!"); var reply = context.MakeMessage(); reply.Text = entity; reply.Type = ActivityTypes.Message; reply.AttachmentLayout = AttachmentLayoutTypes.Carousel; var produto = new BuscaProduto(); reply.Attachments = await produto.CarregaProdutos(entity, QtdProdutos); await context.PostAsync(reply); } context.Done <string>(null); }
/// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task <HttpResponseMessage> Post([FromBody] Activity activity) { var connector = new ConnectorClient(new Uri(activity.ServiceUrl)); var attributes = new LuisModelAttribute( ConfigurationManager.AppSettings["LuisId"], ConfigurationManager.AppSettings["LuisSubscriptionKey"]); var service = new LuisService(attributes); switch (activity.Type) { case ActivityTypes.Message: var image = activity.Attachments?.FirstOrDefault(a => a.ContentType.Contains("image")); var audioAttachment = activity.Attachments?.FirstOrDefault(a => a.ContentType.Contains("audio/wav") || a.ContentType.Contains("audio/ogg") || a.ContentType.Contains("application/octet-stream")); if (image != null) { using (var stream = await GetStream(connector, image)) { Activity message = activity.CreateReply("Só um minuto, já te mando o que encontrei!"); await connector.Conversations.ReplyToActivityAsync(message); var entity = GetNameImage(stream).Result; var reply = activity.CreateReply(entity); reply.Type = ActivityTypes.Message; reply.AttachmentLayout = AttachmentLayoutTypes.Carousel; var produto = new BuscaProduto(); reply.Attachments = await produto.CarregaProdutos(entity, 5); await connector.Conversations.ReplyToActivityAsync(reply); } } else if (audioAttachment != null) { var stream = await GetStream(connector, audioAttachment); var text = await GetTextFromAudioAsync(stream); activity.Text = text; await Conversation.SendAsync(activity, () => new Dialogs.Conversation(service)); } else { await Conversation.SendAsync(activity, () => new Dialogs.Conversation(service)); } break; case ActivityTypes.ConversationUpdate: if (activity.MembersAdded.Any(o => o.Id == activity.Recipient.Id)) { var reply = activity.CreateReply(); reply.Text = "Olá, Eu sou um Bot que vai te ajudar na busca de produtos!"; await connector.Conversations.ReplyToActivityAsync(reply); } break; case ActivityTypes.ContactRelationUpdate: if (activity.Action == "add") { var reply = activity.CreateReply(); reply.Text = "Olá, Eu sou um Bot que vai te ajudar na busca de produtos!"; await connector.Conversations.ReplyToActivityAsync(reply); } break; } var response = Request.CreateResponse(HttpStatusCode.OK); return(response); }