Ejemplo n.º 1
0
 public string ExecuteAndGetResponse(MessageActivity activity)
 {
     return(string.Join(". ",
                        _botCommands.Where(command => command.CanExecute(activity))
                        .Select(command => command.ExecuteAndGetResponse(activity))
                        .Where(result => !string.IsNullOrEmpty(result))));
 }
Ejemplo n.º 2
0
        internal virtual void Update(ClientState state, Model model)
        {
            if (model.Timestamp.IsSpecified)
            {
                _timestampTicks = model.Timestamp.Value.UtcTicks;
            }

            if (model.Content.IsSpecified)
            {
                Content = model.Content.Value;
            }

            if (model.Application.IsSpecified)
            {
                // create a new Application from the API model
                Application = new MessageApplication()
                {
                    Id          = model.Application.Value.Id,
                    CoverImage  = model.Application.Value.CoverImage,
                    Description = model.Application.Value.Description,
                    Icon        = model.Application.Value.Icon,
                    Name        = model.Application.Value.Name
                };
            }

            if (model.Activity.IsSpecified)
            {
                // create a new Activity from the API model
                Activity = new MessageActivity()
                {
                    Type    = model.Activity.Value.Type.Value,
                    PartyId = model.Activity.Value.PartyId.Value
                };
            }
        }
        public string ExecuteAndGetResponse(MessageActivity activity)
        {
            var responce = string.Empty;

            foreach (var url in activity.Links)
            {
                var urlId = GetSha256(new Uri(url).ToString());
                var boyan = _repository.GetMemesOrDefault(activity.ConversationId, urlId);

                if (boyan == null)
                {
                    _repository.AddMemes(
                        new Memeses(
                            0,
                            DateTime.UtcNow,
                            activity.FromUser.Id,
                            urlId,
                            activity.ConversationId));
                }
                else
                {
                    var user = _userRepository.GetUserById(boyan.UserId);
                    if (user != null)
                    {
                        responce += $"Боян этом мемес {url} уже был скинут {user.Identity} примерно в {boyan.SendTime} utc!!! ";
                    }
                }
            }

            return(responce);
        }
Ejemplo n.º 4
0
        public string ExecuteAndGetResponse(MessageActivity activity)
        {
            var totalStatistics = _messagesRepository.GetTotalStatistics(activity.ConversationId);
            var userStatistics  = string.Join(ActivityExtension.NewLine, totalStatistics.Select(statistics => statistics.GetDetailedStatistics()));

            return($"`{Emojis.Envelop}    {Emojis.Message}   {Emojis.Smile}    {Emojis.Attach}         {Emojis.Statistics}`{ActivityExtension.NewLine}{ActivityExtension.NewLine}{userStatistics}{ActivityExtension.NewLine}Всего сообщений `{totalStatistics.Sum(statistics => statistics.MessagesCount)}`");
        }
        public override string ExecuteAndGetResponse(MessageActivity activity)
        {
            var totalScore = UserRepository.GetScoresInConversation(activity.ConversationId)
                             .Sum(score => score.Score);

            return($"{activity.FromUser.PersonalScore()}, У всех остальных {totalScore - activity.FromUser.Score}");
        }
        public override string ExecuteAndGetResponse(MessageActivity activity)
        {
            var scores     = UserRepository.GetScoresInConversation(activity.ConversationId);
            var userScopes = string.Join(ActivityExtension.NewLine, scores.OrderByDescending(score => score.Score).Select(score => score.PersonalScore()));

            return($"{userScopes}{ActivityExtension.NewLine}Всего {scores.Sum(score => score.Score)}");
        }
        private void OnSend(Ddeml.MONMSGSTRUCT mon)
        {
            var m = new Message {HWnd = mon.hwndTo, Msg = mon.wMsg, LParam = mon.lParam, WParam = mon.wParam};

            var args = new DdemlMessageActivityEventArgs(DdemlMessageActivityKind.Send, m, mon.hTask);

            MessageActivity?.Invoke(this, args);
        }
Ejemplo n.º 8
0
 private void RegisterEvents()
 {
     hub.On <string, string>("sendMessage", onData: async(message, sender) =>
     {
         var messageActivity = new MessageActivity();
         messageActivity.OnMessageReceived(message, sender);
     });
 }
Ejemplo n.º 9
0
        internal MessageActivity createMessageActivity(MessageActivity activity)
        {
            OracleQuery query       = buildCreateMessageActivityQuery(activity);
            nonQuery    insertQuery = delegate() { return(query.Command.ExecuteNonQuery()); };

            _cxn.query(query, insertQuery);
            activity.Id = ((Oracle.DataAccess.Types.OracleDecimal)query.Command.Parameters["outId"].Value).ToInt32();
            return(activity);
        }
Ejemplo n.º 10
0
        internal virtual void Update(Model model)
        {
            if (model.Timestamp.IsSpecified)
            {
                _timestampTicks = model.Timestamp.Value.UtcTicks;
            }

            if (model.Content.IsSpecified)
            {
                Content = model.Content.Value;
            }

            if (model.Application.IsSpecified)
            {
                // create a new Application from the API model
                Application = new MessageApplication()
                {
                    Id          = model.Application.Value.Id,
                    CoverImage  = model.Application.Value.CoverImage,
                    Description = model.Application.Value.Description,
                    Icon        = model.Application.Value.Icon,
                    Name        = model.Application.Value.Name
                };
            }

            if (model.Activity.IsSpecified)
            {
                // create a new Activity from the API model
                Activity = new MessageActivity()
                {
                    Type    = model.Activity.Value.Type.Value,
                    PartyId = model.Activity.Value.PartyId.GetValueOrDefault()
                };
            }

            if (model.Reactions.IsSpecified)
            {
                var value = model.Reactions.Value;
                if (value.Length > 0)
                {
                    var reactions = ImmutableArray.CreateBuilder <RestReaction>(value.Length);
                    for (int i = 0; i < value.Length; i++)
                    {
                        reactions.Add(RestReaction.Create(value[i]));
                    }
                    _reactions = reactions.ToImmutable();
                }
                else
                {
                    _reactions = ImmutableArray.Create <RestReaction>();
                }
            }
            else
            {
                _reactions = ImmutableArray.Create <RestReaction>();
            }
        }
Ejemplo n.º 11
0
        public string ExecuteAndGetResponse(MessageActivity activity)
        {
            var currencyRequest = new CurrencyRequest(activity.Message, _currencyToAnotherRateProviders, _currencyRatingProviders);

            return
                (currencyRequest.IsFullInformationRequested
                                        ? string.Join(ActivityExtension.NewLine, currencyRequest.CurrencyRatingProvider.GetRates().Select(GetRatingString))
                                        : GetRatingString(currencyRequest.CurrencyToAnotherRateProvider.GetRate()));
        }
Ejemplo n.º 12
0
        internal void sendEmailAndUpdateNotificationAndLog(Int32 senderId, Int32 recipientId, Int32 recipientOplock, String recipientSite,
                                                           String recipientDUZ, Int32 messageId, String mailGroup, String emailAddress)
        {
            try
            {
                bool success = sendEmail(emailAddress, recipientSite, recipientDUZ, mailGroup, messageId.ToString());

                MessageActivity activity = new MessageActivity()
                {
                    Action = success ? domain.sm.enums.ActivityEnum.MDWS_NEW_MESSAGE_EMAIL_NOTIFICATION : domain.sm.enums.ActivityEnum.MDWS_EMAIL_SENT_ERROR,
                    Detail = String.Format("MOBILE_APPS_ENTRY^{0}<SenderID:<{1}>RecipientID:<{2}>MessageID:<{3}>Group:<{4}>Email:<{5}>CreatedDate:<{6}>Status:{7}>",
                                           success ? "Success" : "Failed", senderId.ToString(), recipientId.ToString(), messageId.ToString(), mailGroup.ToString(), emailAddress, DateTime.UtcNow.ToString(), success ? "Success" : "Error"),
                    MessageId     = messageId,
                    PerformerType = domain.sm.enums.UserTypeEnum.PATIENT,
                    UserId        = senderId
                };

                //try
                //{
                //    using (FileStream fs = new FileStream("C:\\SM_Activity_Log.txt", FileMode.Append, FileAccess.Write))
                //    {
                //        fs.Write(System.Text.Encoding.ASCII.GetBytes(activity.ToString()), 0, activity.ToString().Length);
                //        fs.Flush();
                //    }
                //}
                //catch (Exception) { }

                using (MdoOracleConnection cxn = new MdoOracleConnection(new DataSource()
                {
                    ConnectionString = _cxnString
                }))
                {
                    new MessageActivityDao(cxn).createMessageActivity(activity);
                    if (success)
                    {
                        new UserDao(cxn).updateLastEmailNotification(new domain.sm.User()
                        {
                            Id = recipientId, Oplock = recipientOplock
                        });                                                                                                                // need user ID and oplock only
                    }
                }
            }
            catch (Exception exc)
            {
                //try
                //{
                //    using (FileStream fs = new FileStream("C:\\SM_Activity_Log.txt", FileMode.Append, FileAccess.Write))
                //    {
                //        fs.Write(System.Text.Encoding.ASCII.GetBytes(exc.ToString()), 0, exc.ToString().Length);
                //        fs.Flush();
                //    }
                //}
                //catch (Exception) { }
            }
        }
Ejemplo n.º 13
0
        private static string GetMovieName(MessageActivity activity)
        {
            var index = activity.Message.IndexOf(ReleaseDate, StringComparison.Ordinal);

            if (index == -1)
            {
                return(string.Empty);
            }

            return(activity.Message.Substring(index + ReleaseDate.Length).Trim());
        }
Ejemplo n.º 14
0
        public string ExecuteAndGetResponse(MessageActivity activity)
        {
            var title = $"Список активных команд для бота:{ActivityExtension.NewLine}";

            return(title +
                   string.Join(
                       ActivityExtension.NewLine,
                       _commandWithHelp.Select(
                           command =>
                           command.CommandName + ": " + command.Description + ". Пример: " + command.Sample)));
        }
Ejemplo n.º 15
0
        internal virtual void Update(ClientState state, Model model)
        {
            Type = model.Type;

            if (model.Timestamp.IsSpecified)
            {
                _timestampTicks = model.Timestamp.Value.UtcTicks;
            }

            if (model.Content.IsSpecified)
            {
                Content = model.Content.Value;
            }

            if (model.Application.IsSpecified)
            {
                // create a new Application from the API model
                Application = new MessageApplication()
                {
                    Id          = model.Application.Value.Id,
                    CoverImage  = model.Application.Value.CoverImage,
                    Description = model.Application.Value.Description,
                    Icon        = model.Application.Value.Icon,
                    Name        = model.Application.Value.Name
                };
            }

            if (model.Activity.IsSpecified)
            {
                // create a new Activity from the API model
                Activity = new MessageActivity()
                {
                    Type    = model.Activity.Value.Type.Value,
                    PartyId = model.Activity.Value.PartyId.GetValueOrDefault()
                };
            }

            if (model.Reference.IsSpecified)
            {
                // Creates a new Reference from the API model
                Reference = new MessageReference
                {
                    GuildId           = model.Reference.Value.GuildId,
                    InternalChannelId = model.Reference.Value.ChannelId,
                    MessageId         = model.Reference.Value.MessageId
                };
            }

            if (model.Flags.IsSpecified)
            {
                Flags = model.Flags.Value;
            }
        }
Ejemplo n.º 16
0
        internal OracleQuery buildCreateMessageActivityQuery(MessageActivity activity)
        {
            string sql = "INSERT INTO SMS.MESSAGE_ACTIVITY (SMS_USER_ID, ACTION, STATUS, PERFORMER_TYPE, DETAIL_VALUE, SECURE_MESSAGE_ID) VALUES " +
                         "(:userId, :action, :status, :performerType, :detailValue, :smId) RETURNING ACTIVITY_ID INTO :outId";

            OracleQuery query = new OracleQuery();

            query.Command = new OracleCommand(sql);

            OracleParameter userIdParam = new OracleParameter("userId", OracleDbType.Decimal);

            userIdParam.Value = Convert.ToDecimal(activity.UserId);
            query.Command.Parameters.Add(userIdParam);

            OracleParameter actionParam = new OracleParameter("action", OracleDbType.Decimal);

            actionParam.Value = Convert.ToDecimal(activity.Action);
            query.Command.Parameters.Add(actionParam);

            OracleParameter statusParam = new OracleParameter("status", OracleDbType.Decimal);

            statusParam.Value = Convert.ToDecimal(1); // all status values seem to be 1 so setting statically
            query.Command.Parameters.Add(statusParam);

            OracleParameter performerTypeParam = new OracleParameter("performerType", OracleDbType.Decimal);

            performerTypeParam.Value = Convert.ToDecimal(activity.PerformerType);
            query.Command.Parameters.Add(performerTypeParam);

            OracleParameter detailValueParam = new OracleParameter("detailValue", OracleDbType.Varchar2, 4000);

            if (String.IsNullOrEmpty(activity.Detail))
            {
                detailValueParam.Value = DBNull.Value;
            }
            else
            {
                detailValueParam.Value = activity.Detail;
            }
            query.Command.Parameters.Add(detailValueParam);

            OracleParameter smIdParam = new OracleParameter("smId", OracleDbType.Decimal);

            smIdParam.Value = Convert.ToDecimal(activity.MessageId);
            query.Command.Parameters.Add(smIdParam);

            OracleParameter outParam = new OracleParameter("outId", OracleDbType.Decimal);

            outParam.Direction = ParameterDirection.Output;
            query.Command.Parameters.Add(outParam);

            return(query);
        }
        public override string ExecuteAndGetResponse(MessageActivity activity)
        {
            var userScore = GetScoreForUserOrNull(activity);

            if (userScore != null)
            {
                userScore.Score++;
                UserRepository.SetScoreForUser(activity.ConversationId, userScore.UserId, userScore.Score);
                return(userScore.PersonalScore());
            }

            return(string.Empty);
        }
        public async Task <MessageActivity> CreateMessageActivityAsync(
            IBotPersistentState persistentState,
            IUserPhrase userPhrase,
            IPlayer player,
            CancellationToken cancellationToken)
        {
            var messageActivity = new MessageActivity(
                player,
                new IntentRecognition(userPhrase, player),
                await DialogStateMachine(persistentState, cancellationToken, new StatesFactory(player)));

            return(messageActivity);
        }
Ejemplo n.º 19
0
 public string ExecuteAndGetResponse(MessageActivity activity)
 {
     _messagesRepository.AddMessage(
         new Messages(
             activity.FromUser.Id,
             activity.Words.Length,
             DateTime.UtcNow,
             smilesCount: activity.Smiles.Length,
             attachmentsCount: activity.AttachmentsCount,
             linksCount: activity.Links.Length,
             messageLength: activity.Words.Sum(word => word.Length),
             replyToId: activity.ReplyTo?.Id));
     return(string.Empty);
 }
Ejemplo n.º 20
0
    /// <summary>
    /// Creates a new BotResponseEventArgs instance based on the given response.
    /// </summary>
    /// <param name="responseAsString"></param>
    /// <returns></returns>
    private BotResponseEventArgs CreateBotResponseEventArgs(string responseAsString)
    {
        if (string.IsNullOrEmpty(responseAsString))
        {
            throw new ArgumentException("Response cannot be null or empty");
        }

        JSONNode             responseJsonRootNode = JSONNode.Parse(responseAsString);
        JSONNode             jsonNode             = null;
        BotResponseEventArgs eventArgs            = new BotResponseEventArgs();

        if ((jsonNode = responseJsonRootNode[BotJsonProtocol.KeyError]) != null)
        {
            eventArgs.EventType = EventTypes.Error;
            eventArgs.Code      = jsonNode[BotJsonProtocol.KeyCode];
            string message = jsonNode[BotJsonProtocol.KeyMessage];

            if (!string.IsNullOrEmpty(message))
            {
                eventArgs.Message = message;
            }
        }
        else if (responseJsonRootNode[BotJsonProtocol.KeyConversationId] != null)
        {
            eventArgs.EventType      = EventTypes.ConversationStarted;
            eventArgs.ConversationId = responseJsonRootNode[BotJsonProtocol.KeyConversationId];
        }
        else if (responseJsonRootNode[BotJsonProtocol.KeyId] != null)
        {
            eventArgs.EventType     = EventTypes.MessageSent;
            eventArgs.SentMessageId = responseJsonRootNode[BotJsonProtocol.KeyId];
        }
        else if ((jsonNode = responseJsonRootNode[BotJsonProtocol.KeyActivities]) != null)
        {
            eventArgs.EventType = EventTypes.MessageReceived;
            eventArgs.Watermark = responseJsonRootNode[BotJsonProtocol.KeyWatermark];
            JSONArray jsonArray = jsonNode.AsArray;

            foreach (JSONNode activityNode in jsonArray)
            {
                MessageActivity messageActivity = MessageActivity.FromJson(activityNode);
                eventArgs.Messages.Add(messageActivity);
            }
        }

        return(eventArgs);
    }
Ejemplo n.º 21
0
        public string ExecuteAndGetResponse(MessageActivity activity)
        {
            var query = GetMovieName(activity);

            if (string.IsNullOrWhiteSpace(query))
            {
                return(UnknownMovie);
            }

            var movies = _movieRepository.SearchMoovie(query);

            if (movies.TotalResults == 0)
            {
                return(UnknownMovie);
            }

            return(string.Join(
                       ActivityExtension.NewLine,
                       movies.Results.Take(MaxMoviesCount).OrderByDescending(movie => movie.ReleaseDate).Select(movie => $"{movie.Title} {movie.ReleaseDate}")));
        }
        GIVENMessageTypeActivityAndNoOmitUsernameSetting_WHENBuildIsInvoked_THENEventTelemetryIsBeingCreated(
            IFixture fixture)
        {
            // Arrange
            var settings = new InstrumentationSettings {
                OmitUsernameFromTelemetry = false
            };
            var messageActivity = new MessageActivity {
                Text = fixture.Create <string>()
            };
            var channelAccount = new ChannelAccount
            {
                Id   = fixture.Create <string>(),
                Name = fixture.Create <string>(),
            };
            var activity = new Activity
            {
                Type            = ActivityTypes.Message,
                ChannelId       = fixture.Create <string>(),
                MessageActivity = messageActivity,
                ChannelAccount  = channelAccount,
            };
            var          builder = new EventTelemetryBuilder(activity, settings);
            const int    expectedNumberOfTelemetryProperties = 6;
            const string expectedTelemetryName = EventTypes.MessageReceived;

            // Act
            var eventTelemetry = builder.Build();

            // Assert
            eventTelemetry.Name.Should().Be(expectedTelemetryName);
            eventTelemetry.Properties.Count.Should().Be(expectedNumberOfTelemetryProperties);
            eventTelemetry.Properties[BotConstants.TypeProperty].Should().Be(activity.Type);
            eventTelemetry.Properties[BotConstants.TextProperty].Should().Be(activity.MessageActivity.Text);
            eventTelemetry.Properties[BotConstants.UserIdProperty].Should().Be(activity.ChannelAccount.Id);
            eventTelemetry.Properties[BotConstants.UserNameProperty].Should().Be(activity.ChannelAccount.Name);
            eventTelemetry.Properties[BotConstants.ChannelProperty].Should().Be(activity.ChannelId);
        }
        public void GIVENMessageTypeActivityAndReplyToId_WHENBuildIsInvoked_THENEventTelemetryIsBeingCreated(
            InstrumentationSettings settings,
            IFixture fixture)
        {
            // Arrange
            var messageActivity = new MessageActivity {
                Text = fixture.Create <string>()
            };
            var channelAccount = new ChannelAccount
            {
                Id   = fixture.Create <string>(),
                Name = fixture.Create <string>(),
            };
            var activity = new Activity
            {
                Type             = ActivityTypes.Message,
                ChannelId        = fixture.Create <string>(),
                ReplyToId        = fixture.Create <string>(),
                MessageActivity  = messageActivity,
                TimeStampIso8601 = DateTime.Now.ToString(CultureInfo.CurrentCulture),
                ChannelAccount   = channelAccount,
            };
            var          builder = new EventTelemetryBuilder(activity, settings);
            const int    expectedNumberOfTelemetryProperties = 5;
            const string expectedTelemetryName = EventTypes.MessageSent;

            // Act
            var eventTelemetry = builder.Build();

            // Assert
            eventTelemetry.Name.Should().Be(expectedTelemetryName);
            eventTelemetry.Properties.Count.Should().Be(expectedNumberOfTelemetryProperties);
            eventTelemetry.Properties[BotConstants.TypeProperty].Should().Be(activity.Type);
            eventTelemetry.Properties[BotConstants.TextProperty].Should().Be(activity.MessageActivity.Text);
            eventTelemetry.Properties[BotConstants.ChannelProperty].Should().Be(activity.ChannelId);
            eventTelemetry.Properties[BotConstants.TimestampProperty].Should().Be(activity.TimeStampIso8601);
        }
Ejemplo n.º 24
0
 public bool CanExecute(MessageActivity activity) => activity.IsMessageForBot() && activity.Message.Contains(ReleaseDate);
Ejemplo n.º 25
0
 private string GetUserNameFromMessageOrNull(MessageActivity activity)
 {
     return(activity.Message.Split(' ').Select(word => word.Trim().Trim('@')).FirstOrDefault(
                word => UserRepository.IsUserExists(activity.ConversationId, word)));
 }
Ejemplo n.º 26
0
 protected Users GetScoreForUserOrNull(MessageActivity activity)
 {
     return(UserRepository.GetUser(activity.ConversationId, GetUserNameFromMessageOrNull(activity)));
 }
Ejemplo n.º 27
0
 public abstract string ExecuteAndGetResponse(MessageActivity activity);
Ejemplo n.º 28
0
 public virtual bool CanExecute(MessageActivity activity) => activity.IsMessageForBot();
Ejemplo n.º 29
0
 public bool CanExecute(MessageActivity activity) =>
 activity.IsMessageForBot() &&
 new CurrencyRequest(activity.Message, _currencyToAnotherRateProviders, _currencyRatingProviders).CanProvider;
Ejemplo n.º 30
0
 public string ExecuteAndGetResponse(MessageActivity activity) =>
 string.Join(
     ActivityExtension.NewLine,
     _movieRepository.GetUpcomingPlaying().Results.Select(moovie => $"\"{moovie.Title}\" Дата выхода: {moovie.ReleaseDate} {Emojis.GetFlag(moovie.OriginalLanguage)}"));