public async Task <HttpResponseMessage> Post([FromBody] Activity activity)
        {
            ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));

            if (activity.Type == ActivityTypes.ConversationUpdate)
            {
                // mensagem para retornar
                string      messageToReply = "Benvindo a Porto Seguro, como podemos te ajudar?";
                StateClient stateClient    = activity.GetStateClient();
                BotData     userData       = await stateClient.BotState.GetUserDataAsync(activity.ChannelId, activity.From.Id);

                Usuario user = userData.GetProperty <Usuario>("UserData");
                // se o usuário existir, recupera
                if (user != null)
                {
                    string UserFirstName = Formatters.Capitalize(user.Nome).Split( )[0];
                    messageToReply = $"Benvindo a Porto Seguro {UserFirstName}, como podemos te ajudar?";
                }
                log.Info("[BOT][" + activity.ChannelId + "][" + activity.From.Id + "]: " + messageToReply);
                await connector.Conversations.ReplyToActivityAsync(activity.CreateReply(messageToReply));
            }
            else if (activity.Type == ActivityTypes.Message)
            {
                try
                {
                    if (activity.Attachments.Any())
                    {
                        foreach (Attachment at in activity.Attachments)
                        {
                            try
                            {
                                log.Info("UsuárioAtt [" + activity.From.Id + "] Name:" + at.Name + " ThumbnailUrl:" + at.ThumbnailUrl + " ContentUrl:" + at.ContentUrl + " ContentType:" + at.ContentType);
                                await connector.Conversations.ReplyToActivityAsync(activity.CreateReply("Desculpe, no momento eu não consigo entender emoticons e anexos, por favor, use apenas texto."));
                            }
                            catch (Exception e)
                            {
                                log.Error("Erro: " + e.ToString(), e);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    log.Error("Erro: " + e.ToString(), e);
                }
                await Conversation.SendAsync(activity, () => new RootLuisDialog());

                log.Info("Usuário [" + activity.ChannelId + "][" + activity.From.Id + "]: " + activity.Text);
            }
            else
            {
                HandleSystemMessage(activity);
            }
            return(Request.CreateResponse(HttpStatusCode.OK));
        }
        private async Task callbackBoletoCPF(IDialogContext context, IAwaitable <string> result)
        {
            try
            {
                var textResult = await result;
                if ("SAIR".Equals(textResult, StringComparison.InvariantCultureIgnoreCase))
                {
                    await context.PostAsync("Sua solicitação de boleto foi cancelada, como podemos te ajudar?");

                    context.Wait(MessageReceived);
                }
                else
                {
                    if (Validators.IsCpf(textResult) || Validators.IsCnpj(textResult))
                    {
                        Usuario user = null;
                        if (Validators.IsCpf(textResult))
                        {
                            user = Usuario.GetUsuario(textResult, true);
                        }
                        else
                        {
                            user = Usuario.GetUsuario(textResult, false);
                        }

                        if (user.Nome != null)
                        {
                            context.UserData.SetValue("UserData", user);
                            string UserFirstName = Formatters.Capitalize(user.Nome).Split()[0];
                            if (Validators.IsCpf(textResult))
                            {
                                PromptDialog.Text(context, callbackConfirmaData, $"{UserFirstName}, qual a sua data de Nascimento?");
                            }
                            else
                            {
                                ShowUserProducts(context, user);
                                context.Wait(MessageReceived);
                            }
                        }
                        else
                        {
                            PromptDialog.Text(context, callbackBoletoCPF, "Desculpe, não encontramos esse CPF/CNPJ em nossa base de dados, digite novamente o CPF/CNPJ ou digite SAIR para cancelar a solicitação de segunda via.");
                        }
                    }
                    else
                    {
                        PromptDialog.Text(context, callbackBoletoCPF, "Desculpe, o texto digitado não é um CPF/CNPJ válido, digite novamente o CPF/CNPJ ou SAIR para cancelar a solicitação de segunda via.");
                    }
                }
            }
            catch (TooManyAttemptsException)
            {
            }
        }
Example #3
0
        public async Task SaudacaoAsync(IDialogContext context, LuisResult result)
        {
            Usuario user = new Usuario();

            if (context.UserData.TryGetValue("UserData", out user))
            {
                string UserFirstName = Formatters.Capitalize(user.Nome).Split()[0];
                await context.PostAsync($"Benvindo a Porto Seguro {UserFirstName}, como podemos te ajudar?");
            }
            else
            {
                await context.PostAsync("Benvindo a Porto Seguro, como podemos te ajudar?");
            }

            context.Wait(MessageReceived);
        }