Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }