public override void SyncronizationStatusChanged(TwilioIPMessagingClient client, ClientSynchronizationStatus status) { if (status == ClientSynchronizationStatus.Completed) { OnClientReady?.Invoke(this, new EventArgs()); } }
public void TwilioMessageAdded(TwilioIPMessagingClient client, Channel channel, Twilio.IPMessaging.Message message) { //we have our own if (message.Author == TwilioHelper.Identity) { return; } if (message.Body.StartsWith("attach:", StringComparison.InvariantCulture)) { MessageAdded?.Invoke(new Message { IsIncoming = true, MessageDateTime = DateTime.Parse(message.Timestamp), Text = "I am here", AttachementUrl = message.Body.Replace("attach:", string.Empty) }); } else { MessageAdded?.Invoke(new Message { IsIncoming = true, MessageDateTime = DateTime.Parse(message.Timestamp), Text = message.Body }); } }
public void ChannelHistoryLoaded(TwilioIPMessagingClient client, Channel channel) { var msgs = channel.Messages.AllMessages.OrderBy(m => m.Timestamp); dataSource.UpdateMessages(msgs); tableView.ReloadData(); }
public async override void ViewDidLoad() { base.ViewDidLoad(); // Perform any additional setup after loading the view, typically from a nib. dataSource = new MessagesDataSource(); tableView.Source = dataSource; tableView.RowHeight = UITableView.AutomaticDimension; tableView.EstimatedRowHeight = 70; var token = await GetToken(); this.NavigationItem.Prompt = $"Logged in as {identity}"; var accessManager = TwilioAccessManager.Create(token, this); client = TwilioIPMessagingClient.Create(accessManager, this); client.GetChannelsList((result, channels) => { generalChannel = channels.GetChannelWithUniqueName("general"); if (generalChannel != null) { generalChannel.Join(r => { Console.WriteLine("successfully joined general channel!"); }); } else { var options = new NSDictionary("TWMChannelOptionFriendlyName", "General Chat Channel", "TWMChannelOptionType", 0); channels.CreateChannel(options, (creationResult, channel) => { if (creationResult.IsSuccessful()) { generalChannel = channel; generalChannel.Join(r => { generalChannel.SetUniqueName("general", res => { }); }); } }); } }); NSNotificationCenter.DefaultCenter.AddObserver(UIKeyboard.WillShowNotification, KeyboardWillShow); NSNotificationCenter.DefaultCenter.AddObserver(UIKeyboard.DidShowNotification, KeyboardDidShow); NSNotificationCenter.DefaultCenter.AddObserver(UIKeyboard.WillHideNotification, KeyboardWillHide); this.View.AddGestureRecognizer(new UITapGestureRecognizer(() => { this.messageTextField.ResignFirstResponder(); })); this.messageTextField.Delegate = this; }
public void MessageAdded(TwilioIPMessagingClient client, Channel channel, Message message) { dataSource.AddMessage(message); tableView.ReloadData(); if (dataSource.Messages.Count > 0) { ScrollToBottomMessage(); } }
public async Task <bool> InitializeAsync() { var task = new TaskCompletionSource <bool>(); try { var token = await TwilioHelper.GetTokenAsync(); var accessManager = TwilioAccessManager.Create(token, this); client = TwilioIPMessagingClient.Create(accessManager, this); client.GetChannelsList((result, channels) => { generalChannel = channels.GetChannelWithUniqueName("general"); if (generalChannel != null) { generalChannel.Join(r => { Console.WriteLine("successfully joined general channel!"); task.SetResult(true); }); } else { var options = new NSDictionary("TWMChannelOptionFriendlyName", "General Chat Channel", "TWMChannelOptionType", 0); channels.CreateChannel(options, (creationResult, channel) => { if (creationResult.IsSuccessful()) { generalChannel = channel; generalChannel.Join(r => { generalChannel.SetUniqueName("general", res => { }); task.SetResult(true); }); } else { task.SetResult(false); } }); } }); } catch { return(false); } return(await task.Task.ConfigureAwait(false)); }
public override async void ViewDidLoad() { base.ViewDidLoad(); var newCaseCreated = false; Title = "Chatting With Agent"; EdgesForExtendedLayout = UIRectEdge.None; viewModel = new MessageDetailViewModel(); // You must set your SenderId and display name SenderId = AppSettingsManager.ClientId; SenderDisplayName = AppSettingsManager.UserNickName; // These MessagesBubbleImages will be used in the GetMessageBubbleImageData override outgoingBubbleImageData = bubbleFactory.CreateOutgoingMessagesBubbleImage(UIColorExtensions.MessageBubbleLightGrayColor); incomingBubbleImageData = bubbleFactory.CreateIncomingMessagesBubbleImage(UIColorExtensions.MessageBubbleBlueColor); // Springy bubbles CollectionView.CollectionViewLayout.SpringinessEnabled = true; if (SelectedTransactionId != 0) { caseModel = await viewModel.DoesCaseExist(SelectedTransactionId); if (caseModel.DoesExist) { caseId = caseModel.Id; Acr.UserDialogs.UserDialogs.Instance.ShowLoading("Getting your message history."); } else { Acr.UserDialogs.UserDialogs.Instance.ShowLoading("Creating case."); var newCase = await viewModel.CreateCaseCommand(SelectedTransactionId); caseId = newCase.Id; caseModel.Id = newCase.Id; caseModel.DoesExist = newCase.IsCreated; newCaseCreated = true; } // get ip messaging client client = await GetTwilioIpMessagingClient(); if (newCaseCreated) { Acr.UserDialogs.UserDialogs.Instance.ShowSuccess("Please send your message when ready."); } } }
private async Task <TwilioIPMessagingClient> GetTwilioIpMessagingClient() { accessManagerDelegate = new AccessManagerDelegate(); ipMessagingDelegate = new IPMessagingDelegate(); ipMessagingDelegate.OnMessageAdded += AddMessageToDataSource; ipMessagingDelegate.OnClientReady += TwilioClientReady; var token = await viewModel.GetToken(AppSettingsManager.LoggedInUserEmail, AppSettingsManager.ClientId, AppSettingsManager.UserNickName, AppSettingsManager.UserPictureUrl); var accessManager = TwilioAccessManager.AccessManagerWithToken(token, accessManagerDelegate); client = TwilioIPMessagingClient.IpMessagingClientWithAccessManager(accessManager, new TwilioIPMessagingClientProperties(), ipMessagingDelegate); return(client); }
public async override void ViewDidLoad() { base.ViewDidLoad(); // Perform any additional setup after loading the view, typically from a nib. dataSource = new MsgsDataSource(); tableView.Source = dataSource; tableView.RowHeight = UITableView.AutomaticDimension; tableView.EstimatedRowHeight = 70; var token = await GetIdentity(); twilio = TwilioIPMessagingClient.Create(token, this); twilio.GetChannelsList((result, channels) => { generalChannel = channels.GetChannelWithUniqueName("general"); generalChannel.Join(r => { }); }); }
public void MessageAdded(TwilioIPMessagingClient client, Channel channel, Message message) { dataSource.AddMessage(message); tableView.ReloadData(); }
public void ErrorReceived(TwilioIPMessagingClient client, TwilioError error) { Console.WriteLine("Error: " + error.Description); }
public override void ErrorReceived(TwilioIPMessagingClient client, Error error) { Console.WriteLine("IPMessagingDelegate.ErrorReceived(): " + error.Description); }
public void ChannelMessageAdded(TwilioIPMessagingClient client, Channel channel, Message message) { OnMessageAdded?.Invoke(message); }