Ejemplo n.º 1
0
        public async Task SendMsgFromForm(IEnumerable <string> users, string msg, string fromName, string fromId)
        {
            if (users == null)
            {
                throw new ArgumentNullException(nameof(users));
            }
            if (string.IsNullOrEmpty(msg))
            {
                throw new ArgumentNullException(nameof(msg));
            }
            if (string.IsNullOrEmpty(fromName))
            {
                throw new ArgumentNullException(nameof(fromName));
            }
            if (string.IsNullOrEmpty(fromId))
            {
                throw new ArgumentNullException(nameof(fromId));
            }

            ViberUser viberUserId = GetUsers().First(u => u.ViberId == fromId && u.UserProfile.ApplicationUserId == _WorkContext.UserAppId);

            if (viberUserId == null)
            {
                throw new ArgumentException($"Viberuser with id {fromId} not found at current user.");
            }

            IEnumerable <string> realUsersTo = GetUsers().Select(vu => vu.ViberId).Intersect(users).ToList();

            foreach (string realUserTo in realUsersTo)
            {
                await SendMsg(viberUserId.ApiToken, fromName, realUserTo, msg);
            }
        }
        public static void Execute()
        {
            ConsoleExtension.WriteSeparator("Group chat example");

            var mark  = new ViberUser("Mark");
            var jane  = new ViberUser("Jane");
            var emily = new ViberUser("Emily");
            var anna  = new ViberUser("Anna");

            IGroupChatMediator mediator = new ViberGroupChatMediator(
                mark,
                jane,
                emily);

            mark.Send("Is anyone there?");

            Console.WriteLine();
            mediator.AddParticipant(anna);

            emily.Send("We are here.");

            // You can see an alternative approach how to setup mediator and components
            // Third approach can be seen in air trafic control example

            // var mark = new ViberUser("Mark", mediator);
            // IGroupChatMediator mediator = new ViberGroupChatMediator();
            // mediator.AddParticipant(mark);
        }
Ejemplo n.º 3
0
        public async Task SendMsg(string token, string from, string to, string msg)
        {
            if (string.IsNullOrEmpty(token))
            {
                throw new ArgumentNullException(nameof(token));
            }

            ViberUser userByApiToken = _viberRepository.ViberUsers.FirstOrDefault(u => u.ApiToken == token);

            if (userByApiToken == null)
            {
                AddEvent(new { @event = "tokenNotFound", token, from, to, msg }.ToJsonString());
                throw new Exception("User with received apiToken not found.");
            }
            AddEvent(new { @event = "ApiMsg", userName = userByApiToken.Name, UserId = userByApiToken.Id, to, msg }.ToJsonString());
            HttpResponseMessage sendMessage = await _ViberBot.SendMessage(from, to, msg);

            string response = await sendMessage.Content.ReadAsStringAsync();

            AddEvent(new { @event = "ApiMsgResponse", userName = userByApiToken.Name, UserId = userByApiToken.Id, from, to, msg, response }.ToJsonString());
        }