public async void CheckSentences(Microsoft.Bot.Connector.Activity activity)
        {
            var appCredentials = new MicrosoftAppCredentials(configurationRoot);
            //var connector = new ConnectorClient(new Uri(activity.ServiceUrl), appCredentials);
            var connector = new ConnectorClient(new Uri(activity.ServiceUrl));

            string messages = activity.Text?.ToString().ToLower();


            //Email variables
            var senderEmail = Environment.GetEnvironmentVariable("BOBTHEBOT_SENDER_EMAIL");
            var senderName  = Environment.GetEnvironmentVariable("BOBTHEBOT_SENDER_NAME");

            #region Is Typing Activity

            // var activity = context.Activity as Activity;
            Trace.TraceInformation($"Type={activity.Type} Text={activity.Text}");
            if (activity.Type == ActivityTypes.Message)
            {
                //var connector = new ConnectorClient(new System.Uri(activity.ServiceUrl));
                var isTyping = activity.CreateReply("Nerdibot is thinking...");
                isTyping.Type = ActivityTypes.Typing;
                await connector.Conversations.ReplyToActivityAsync(isTyping);

                // DEMO: I've added this for demonstration purposes, so we have time to see the "Is Typing" integration in the UI. Else the bot is too quick for us :)
                Thread.Sleep(2500);
            }

            #endregion

            await connector.Conversations.SendToConversationAsync(activity.Conversation.Id, activity : activity.CreateReply("Hello"));

            await connector.Conversations.ReplyToActivityAsync(activity : activity.CreateReply("Hello Reply"));


            if (activity.Conversation.IsGroup != null)
            {
                //Words to search for in conversation
                var wordsEntity = await wordCache.GetAsync();

                var words = wordsEntity.Select(x => x.Word);


                // Get the conversation id so the bot answers.
                // var conversationId = activity.From.Id.ToString();

                // Get a valid token
                //string token = await this.GetBotApiToken();

                // send the message back
                using (var client = new System.Net.Http.HttpClient())
                {
                    string from  = activity.From.Name.ToString();
                    string conv  = activity.Conversation.Id;
                    var    group = conv.Split("|").Last().Split("\"").First();


                    // Set the toekn in the authorization header.
                    //client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

                    if (words.Any(c => messages.Contains(c.ToLower())))
                    {
                        var userToResponse = await unitOfWork.UserToReplyRepository.GetActiveUsers();

                        foreach (var user in userToResponse)
                        {
                            //send private message to user
                            await connector.Conversations.SendToConversationAsync(
                                user.ConversationId,
                                activity : activity.CreateReply("Group: " + group + "\n" + "User: "******"\n" + "Message: " + "\"" + activity.Text.ToString() + "\""));

                            //send email to user
                            if (user.SendEmail)
                            {
                                var msg = MailHelper.CreateSingleEmail(
                                    new EmailAddress(senderEmail, senderName),
                                    new EmailAddress(user.Email, user.SkypeUserName),
                                    "Subject",
                                    "",
                                    "Group: " + group + "\n" + "User: "******"\n" + "Message: " + "\"" + activity.Text.ToString() + "\"");

                                var response2 = await sendGridClient.SendEmailAsync(msg);
                            }
                        }

                        //string trustServiceUri = "https://api.skypeforbusiness.com/platformservice/botframework";
                        //MicrosoftAppCredentials.TrustServiceUrl(trustServiceUri);
                        // await client.PostAsJsonAsync<ExpandoObject>(
                        //$"https://api.skype.net/v3/conversations/{conversationId}/activities",
                        //message as ExpandoObject);
                    }
                }
            }
            else
            {
                if (messages.Contains("spamm me bob"))
                {
                    var user = await unitOfWork.UserToReplyRepository.GetUserByIdAndName(activity.From.Id, activity.From.Name);

                    if (user == null)
                    {
                        var newUser = new UserToReply(activity.Conversation.Id, activity.From.Id, activity.From.Name);
                        await unitOfWork.UserToReplyRepository.InsertAsync(newUser);

                        await unitOfWork.SaveChangesAsync();

                        await connector.Conversations.SendToConversationAsync(activity.Conversation.Id, activity : activity.CreateReply("User are now added as recipient"));
                    }
                    else
                    {
                        await connector.Conversations.SendToConversationAsync(activity.Conversation.Id, activity : activity.CreateReply("User already is added as recipient"));
                    }
                }
            }
            //return null;
        }
Example #2
0
        public async Task <Result <System.Dynamic.ExpandoObject> > CheckSentences(Activity activity)
        {
            var wordsEntity = await wordCache.GetAsync();

            var words = wordsEntity.Select(x => x.Word);
            // Get the conversation id so the bot answers.
            var conversationId = activity.From.Id.ToString();

            // Get a valid token
            string token = await this.GetBotApiToken();

            dynamic message = new ExpandoObject();

            // send the message back
            using (var client = new System.Net.Http.HttpClient())
            {
                // I'm using dynamic here to make the code simpler
                message.type = "message/text";
                message.text = "TEST TEST TEST";
                var    senderEmail    = Environment.GetEnvironmentVariable("BOBTHEBOT_SENDER_EMAIL");
                var    senderName     = Environment.GetEnvironmentVariable("BOBTHEBOT_SENDER_NAME");
                var    recipientEmail = Environment.GetEnvironmentVariable("BOBTHEBOT_RECIPIENT_EMAIL");
                var    recipientName  = Environment.GetEnvironmentVariable("BOBTHEBOT_RECIPIENT_NAME");
                string messages       = activity.Text.ToString();
                string from           = activity.From.Name.ToString();
                string conv           = activity.Conversation.Id;
                var    group          = conv.Split("|").Last().Split("\"").First();
                if (words.Any(c => messages.ToLower().Contains(c.ToLower())))
                {
                    //var msg = MailHelper.CreateSingleEmail(
                    //    new EmailAddress(senderEmail, senderName),
                    //    new EmailAddress("*****@*****.**", recipientName),
                    //    "Subject",
                    //    "",
                    //    messages + " from " + from + " at " + group);

                    //var response2 = await sendGridClient.SendEmailAsync(msg);

                    // Set the toekn in the authorization header.
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

                    var appCredentials = new MicrosoftAppCredentials(configurationRoot);
                    var connector      = new ConnectorClient(new Uri(activity.ServiceUrl), appCredentials);
                    // var asd = await connector.Conversations.GetConversationMembersAsync(qwe);

                    //var newActovity = new Activity(id: "2cb6eb60-761b-11e8-b7ed-f79c3f4b062e",
                    //    serviceUrl:activity.ServiceUrl,
                    //    replyToId: "9aec9e40-7611-11e8-b7ed-f79c3f4b062e",
                    //    type:"text",
                    //    textFormat:"plain",
                    //    channelId:"emulator",
                    //    channelData: "9aec9e40-7611-11e8-b7ed-f79c3f4b062e");

                    //var qwfsv = activity.Recipient;
                    //activity.Recipient.Name = "Bot";
                    //activity.Recipient.Id = "bea98650-748a-11e8-a3ac-fb4c46d160e7";

                    var length = (activity.Text ?? string.Empty).Length;
                    var reply  = activity.CreateReply($"You send {activity.Text} which was{length} characters!");
                    //var asd = new Activity(ChannelAccount(r reply.Recipient.Id == "bea98650-748a-11e8-a3ac-fb4c46d160e7";
                    // var asd = new Activity()
                    await connector.Conversations.ReplyToActivityAsync(reply);

                    //var asd = await connector.Conversations.CreateConversationAsync(new ConversationParameters());
                    //await client.PostAsJsonAsync(
                    //"http://*****:*****@contoso.com", "Agent"));
                    ConversationParameters       parameters = new ConversationParameters(true, new ChannelAccount("sip:[email protected]", "Bot"), participants, "TestTopic");
                    ConversationResourceResponse response   = connector.Conversations.CreateConversationAsync(parameters).Result;

                    // await client.PostAsJsonAsync<ExpandoObject>(
                    //$"https://api.skype.net/v3/conversations/{conversationId}/activities",
                    //message as ExpandoObject);
                }
            }

            return(Result.Ok(message));
        }