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();
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 12
0
 public override void ErrorReceived(TwilioIPMessagingClient client, Error error)
 {
     Console.WriteLine("IPMessagingDelegate.ErrorReceived(): " + error.Description);
 }
Exemplo n.º 13
0
 public void ChannelMessageAdded(TwilioIPMessagingClient client, Channel channel, Message message)
 {
     OnMessageAdded?.Invoke(message);
 }