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); }
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()); }