Exemple #1
0
 public static Task <CallMessageData> EstablishAsync(this InstantMessagingCall call,
                                                     string destinationUri, ToastMessage toastMessage, CallEstablishOptions options)
 {
     return(Task <CallMessageData> .Factory.FromAsync(
                call.BeginEstablish, call.EndEstablish,
                destinationUri, toastMessage, options, null));
 }
Exemple #2
0
 private void Construct(PlayerMountHandler mountHandler, DialogueManager dialogue, ToastMessage toast, InventoryUI inventory)
 {
     playerMountHandler = mountHandler;
     dialogueManager    = dialogue;
     toastMessage       = toast;
     inventoryUI        = inventory;
 }
Exemple #3
0
        public async void InstantiateToast(MessageModel model, Task <WaveChat.Areas.Identity.Data.WaveChatUser> user)
        {
            if (_notificationsMessageHandler._communicationManager.GetSocketById(user.Result.Id).InstantiateToast is true)
            {
                //Serialize
                if (!(model is null))
                {
                    var first = await firebaseClient.Child("users/" + model.GUID).OrderByKey().LimitToFirst(1).OnceAsync <Areas.Identity.Data.FirebaseNameModel>();

                    var optionsBuilder = new DbContextOptionsBuilder <WaveChatContext>();
                    optionsBuilder.UseMySql("server=remotemysql.com;user=jyKYm15Znj;database=jyKYm15Znj;password=EbVGAPF1Wz;port=3306;persistsecurityinfo=True");
                    WaveChatContext context    = new WaveChatContext(optionsBuilder.Options);
                    ToastMessage    _initToast = new ToastMessage
                    {
                        Message   = model.Message,
                        Timestamp = model.Timestamp,
                        FirstName = first.First().Object.FirstName,
                        LastName  = first.First().Object.LastName,
                        UserID    = context.Users.Where(x => x.FirebaseGUID.Equals(model.GUID)).AsParallel().Select(m => m.Id).FirstOrDefault()
                    };

                    List <ToastMessage> ToastList = new List <ToastMessage>();

                    ToastList.Add(_initToast);

                    string output = JsonConvert.SerializeObject(ToastList);

                    await _notificationsMessageHandler.SendMessageAsync(user.Result.Id, output);
                }
            }
            else if (_notificationsMessageHandler._communicationManager.GetSocketById(user.Result.Id).InstantiateToast is false)
            {
            }
        }
Exemple #4
0
        public async Task <ImageInfo> SelectArtwork()
        {
            await ListUpdate();

            ImageInfo img = null;

            while (true)
            {
                if (illustQueue == null)
                {
                    return(null);
                }
                else
                {
                    if (illustQueue.Count != 0)
                    {
                        illustQueue.TryDequeue(out img);
                        if (img != null && img.WHratio >= 1.33 && !img.isR18)
                        {
                            return(img);
                        }
                    }
                    else if (!await ListUpdate())
                    {
                        string       title = loader.GetString("EmptyQueue");
                        ToastMessage tm    = new ToastMessage(title, null, ToastMessage.ToastMode.OtherMessage);
                        tm.ToastPush(60);
                        return(null);
                    }
                }
            }
        }
        private async void MarkAttendance_Clicked(object sender, EventArgs e)
        {
            try
            {
                if (!IsMarkedToday(attendanceList) || !IsWeekEnd())
                {
                    var attendance = new Attendance();
                    attendance.Id        = string.Empty;
                    attendance.Date      = DateTime.Now.ToShortDateString();
                    attendance.IsPresent = true;
                    attendance.Username  = currentUser;

                    await firebase.Child("Attendance").PostAsync <Attendance>(attendance);

                    ToastMessage.Show("Attendance marked successfully...");
                    MarkAttendance.IsEnabled = false;
                    animationView.IsVisible  = true;
                }
                else
                {
                    MarkAttendance.IsEnabled = false;
                }
            }
            catch (Exception ex)
            {
                //await DisplayAlert("error", ex.StackTrace, "ok");
                //await DisplayAlert("message", ex.Message, "ok");
                ToastMessage.Show(ex.Message);
            }
        }
        private async void RegistTask()
        {
            // Otherwise request access
            var status = await BackgroundExecutionManager.RequestAccessAsync();

            if (status == BackgroundAccessStatus.DeniedBySystemPolicy || status == BackgroundAccessStatus.Unspecified)
            {
                string       title   = loader.GetString("BackgroundTaskDenied");
                string       content = loader.GetString("BackgroundTaskDeniedExplanation");
                ToastMessage tm      = new ToastMessage(title, content, ToastMessage.ToastMode.BatterySetting);
                tm.ToastPush(120);
            }
            else
            {
                foreach (var i in BackgroundTaskRegistration.AllTasks.Values)
                {
                    if (i.Name.Equals("TimeBackgroundTrigger"))
                    {
                        i.Unregister(true);//将之前的时间触发器任务注销
                    }
                }
                //注册新的时间触发器
                BackgroundTaskBuilder timeBuilder = new BackgroundTaskBuilder();
                timeBuilder.Name = "TimeBackgroundTrigger";
                timeBuilder.SetTrigger(new TimeTrigger(Convert.ToUInt32(c.time), true));
                timeBuilder.IsNetworkRequested = true;
                timeBuilder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
                BackgroundTaskRegistration task = timeBuilder.Register();
            }
        }
        private async void BeginExtendedExecution()
        {
            // The previous Extended Execution must be closed before a new one can be requested.
            ClearExtendedExecution();

            var newSession = new ExtendedExecutionSession();

            newSession.Reason      = ExtendedExecutionReason.Unspecified;
            newSession.Description = "Raising periodic toasts";
            newSession.Revoked    += SessionRevoked;
            ExtendedExecutionResult result = await newSession.RequestExtensionAsync();

            switch (result)
            {
            case ExtendedExecutionResult.Allowed:
                session = newSession;
                break;

            default:
            case ExtendedExecutionResult.Denied:
                newSession.Dispose();
                //建立Toast通知
                string       title   = loader.GetString("ExtendedExecutionDenied");
                string       content = loader.GetString("ExtendedExcutionDeniedExplanation");
                ToastMessage tm      = new ToastMessage(title, content, ToastMessage.ToastMode.BatterySetting);
                tm.ToastPush(120);
                break;
            }
        }
Exemple #8
0
        public void BuyProductID(string productId, Action <bool, PurchaseInfo> onPurchaseCompleted)
        {
            if (GameManager.Instance.IsFakeShop)
            {
                PurchaseInfo curInfo = FindPurchase(productId);
                this.onPurchaseCompleted = onPurchaseCompleted;
                StartCoroutine(OnBuyPurchase(curInfo));
                return;
            }

            if (IsInitialized)
            {
                this.onPurchaseCompleted = onPurchaseCompleted;
                Product product = controller.products.WithID(productId);

                if (product != null && product.availableToPurchase)
                {
                    controller.InitiatePurchase(product);
                }
                else
                {
                    ToastMessage.ShowCustom(DLocalizationManager.Instance.GetLocalText("cannot_purchase"));
                }
            }
            else
            {
                ToastMessage.ShowCustom(DLocalizationManager.Instance.GetLocalText("cannot_purchase"));
            }
        }
        public async Task ShowToastAsync(string content, TimeSpan duration, ToastType level = ToastType.Info)
        {
            if (!CanToast)
            {
                return;
            }

            ToastMessage message = new ToastMessage()
            {
                Content = content,
                Level   = level
            };

            toaster.SetCurrentValue(Toaster.MessageProperty, message);
            toaster.SetCurrentValue(Toaster.IsActiveProperty, true);

            var durationWaitHandle = new ManualResetEvent(false);

            StartDuration(duration, durationWaitHandle);

            await WaitForCompletionAsync(durationWaitHandle);

            toaster.SetCurrentValue(Toaster.IsActiveProperty, false);
            await Task.Delay(toaster.DeactivateStoryboardDuration);

            toaster.SetCurrentValue(Toaster.MessageProperty, null);

            durationWaitHandle.Dispose();
        }
        public void GetServerMessage()
        {
            if (App.client != null)
            {
                try
                {
                    NetworkStream stream = App.client.GetStream();

                    byte[] bytes = new byte[256];
                    string data  = null;


                    int i;
                    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        data = Encoding.UTF8.GetString(bytes, 0, i);

                        if (isSend == false)
                        {
                            ToastMessage toast = new ToastMessage();
                            toast.ShowNotification("서버 메세지", data);
                        }
                        isSend = false;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("실패");
                    Console.WriteLine(e.ToString());
                }
            }
        }
Exemple #11
0
        public void Initialize(TRunner tunitRunner, List <string> testcaseIDList, List <ItemData> listItem)
        {
            _toastMessage = new ToastMessage();
            RunType.Value = RunType.MANUAL;
            _tunitRunner  = tunitRunner;
            _tunitRunner.SingleTestDone += OnSingleTestDone;
            _tcInfoList         = new List <TestcaseInfo>();
            _tcIDList           = testcaseIDList;
            _tsettings          = TSettings.GetInstance();
            _tsettings.IsManual = true;
            _listItem           = listItem;
            MakeTCInfoList();

            _summaryLabel1 = new Label()
            {
                Text              = "",
                HeightRequest     = 25,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                TextColor         = Color.White,
                FontSize          = 5,
            };
            _summaryLabel2 = new Label()
            {
                Text              = "",
                HeightRequest     = 25,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                TextColor         = Color.White,
                FontSize          = 5,
            };
            SetResultNumber(0, 0, 0);
            MakeTestPage();
        }
 public static Task<CallMessageData> EstablishAsync(this InstantMessagingCall call,
     string destinationUri, ToastMessage toastMessage, CallEstablishOptions options)
 {
     return Task<CallMessageData>.Factory.FromAsync(
         call.BeginEstablish, call.EndEstablish,
         destinationUri, toastMessage, options, null);
 }
        /// <summary>
        /// 列表更新方式2
        /// </summary>
        /// <param name="flag">是否强制更新</param>
        /// <returns></returns>
        public async Task <bool> ListUpdate(bool flag = false, string imgId = null)
        {
            if (flag || Recomm == null || Recomm.Count == 0)
            {
                var t = await pixiv.getRecommenList(imgId, nextUrl);

                Recomm  = t.Item1;
                nextUrl = t.Item2;
                if (Recomm != null)
                {
                    return(true);
                }
                else
                {
                    string       title   = loader.GetString("FailToGetQueue");
                    string       content = loader.GetString("FailToGetQueueExplanation");
                    ToastMessage tm      = new ToastMessage(title, content, ToastMessage.ToastMode.OtherMessage);
                    tm.ToastPush(60);
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
Exemple #14
0
        public NotificationsPageViewModel(INavigationService navigationService, IWebApiRestClient webApiRestClient)
        {
            _navigationService    = navigationService;
            _webApiRestClient     = webApiRestClient;
            toastMessage          = DependencyService.Get <ToastMessage>();
            notificationDBService = DependencyService.Get <INotificationDBService>();

            AddNotify = new Command(add_click);
            var IsNotificationDBExist = notificationDBService.IsNotificationDbPresentInDB();

            if (IsNotificationDBExist)
            {
                IEnumerable <NotificationModel> notifications = notificationDBService.ReadAllItems();
                foreach (var item in notifications)
                {
                    NotificationList.Add(item);
                }
            }
            MessagingCenter.Subscribe <string>(this, "Notification Recieved", (sender) =>
            {
                var data   = sender;
                var newjob = new NotificationModel()
                {
                    Text = data,
                    Icon = "logo.png",
                    Time = "Now"
                };
                NotificationList.Add(newjob);
                notificationDBService.CreateNotificationModeInDB(newjob);
                toastMessage.Show("You have recieved a new notification.");
            });
        }
        protected async override void OnAppearing()
        {
            try
            {
                Attendance = new ObservableCollection <Attendance>();
                firebase   = new FirebaseClient(App.FirebaseUrl);

                var hasCurrentUser = Application.Current.Properties.ContainsKey("currentUser");
                if (hasCurrentUser)
                {
                    currentUser            = Application.Current.Properties["currentUser"].ToString();
                    attendanceFromFirebase = await firebase.Child("Attendance").OnceAsync <Attendance>();
                }
                if (attendanceFromFirebase.Count <= 0)
                {
                    isResultFound = false;
                }
                else
                {
                    isResultFound = true;
                }
                AttendanceList.ItemsSource = GetAttendanceList();
                base.OnAppearing();
            }
            catch (Exception ex)
            {
                ToastMessage.Show(ex.Message);
                //await DisplayAlert("error", ex.StackTrace, "ok");
                //await DisplayAlert("message", ex.Message, "ok");
            }
        }
        /// <summary>
        /// Send a toast notification to all WP7 devices subscribed to a given subscription.
        /// </summary>
        /// <param name="subId">Id of the subscription to send the message to.</param>
        /// <param name="message">The message text.</param>
        /// <returns>Returns "success" if successful otherwise an error.</returns>
        public string SendToastNotification(string subId, string message)
        {
            if (!AuthManager.AuthenticateUser())
            {
                AuthManager.ConstructAuthResponse();
                return(null);
            }

            // Make sure subscription name is created.
            bool subExists = this.subscriptionInfoMgr.IsSubscriptionRegistered(subId);

            if (!subExists)
            {
                throw new WebFaultException <string>(Utils.GetErrorString(PushMessageError.ErrorSubscriptionNameNotFound), System.Net.HttpStatusCode.BadRequest);
            }

            try
            {
                ToastMessage toastMsg = new ToastMessage(subId, message);
                this.msgQueue.Enque(toastMsg);
                return("success");
            }
            catch (Exception e)
            {
                Trace.TraceError(string.Format(CultureInfo.InvariantCulture, "Internal Error: SendToast subscription: {0} toast: {1}, Error: {2}", subId, message, e.Message));
                throw new WebFaultException <string>(e.Message, System.Net.HttpStatusCode.InternalServerError);
            }
        }
        protected async override void OnAppearing()
        {
            try
            {
                TodayDate = DateTime.Now.ToShortDateString();
                animationView.IsVisible = false;
                firebase = new FirebaseClient(App.FirebaseUrl);

                currentUser = Application.Current.Properties["currentUser"].ToString();

                attendanceList = await firebase.Child("Attendance").OnceAsync <Attendance>();

                if (IsWeekEnd())
                {
                    ToastMessage.Show("cannot mark attendance on weekends");
                    MarkAttendance.IsEnabled = false;
                }
                if (IsMarkedToday(attendanceList))
                {
                    ToastMessage.Show("cannot mark attendance twice a day");
                    MarkAttendance.IsEnabled = false;
                }


                base.OnAppearing();
            }
            catch (Exception ex)
            {
                //await DisplayAlert("error", ex.StackTrace, "ok");
                //await DisplayAlert("message", ex.Message, "ok");
                ToastMessage.Show(ex.Message);
            }
        }
Exemple #18
0
        public async Task <bool> ListUpdate(bool flag = false)
        {
            if (flag || illustQueue == null || illustQueue.Count == 0)
            {
                var t = await pixiv.getIllustFollowList(nextUrl);

                illustQueue = t.Item1;
                nextUrl     = t.Item2;
                if (illustQueue != null)
                {
                    return(true);
                }
                else
                {
                    string       title   = loader.GetString("FailToGetFollowingUserUpdatingQueue");
                    string       content = loader.GetString("FailToGetQueueExplanation");
                    ToastMessage tm      = new ToastMessage(title, content, ToastMessage.ToastMode.OtherMessage);
                    tm.ToastPush(60);
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
Exemple #19
0
 public Toast(ToastMessage model)
 {
     InitializeComponent();
     this.PreviewKeyDown += Toast_PreviewKeyDown;
     this.Loaded         += Toast_Loaded;
     CurrentModel         = model;
     this.ApplyBindings(this, CurrentModel);
 }
Exemple #20
0
 private void Construct(PlayerCollectibleHandler collectibleController, PlayerMountHandler mountController, InventoryHandler inv,
                        PlayerHUD HUD, ToastMessage message)
 {
     playerCollectibleController = collectibleController;
     playerMountController       = mountController;
     inventory    = inv;
     playerHUD    = HUD;
     toastMessage = message;
 }
Exemple #21
0
        public static void ShowMessage(string msg, Window owner)
        {
            ToastMessage model = new ToastMessage()
            {
                Message = msg,
            };

            ShowMessage(model, owner);
        }
        public async Task <bool> ListUpdate(string rankingMode, bool flag = false)
        {
            if (flag || illustQueue == null || illustQueue.Count == 0 || this.rankingMode != rankingMode)
            {
                //日期参数依旧存在问题
                if (rankingMode == "day")
                {
                    ValueTuple <ConcurrentQueue <ImageInfo>, string> vt = new ValueTuple <ConcurrentQueue <ImageInfo>, string>();
                    if (date.Year == 1)
                    {
                        vt = await pixiv.getRankingList(mode : rankingMode, date : null, nextUrl : nextUrl);
                    }
                    else
                    {
                        vt = await pixiv.getRankingList(mode : rankingMode, date : date.ToString("yyyy-MM-dd"), nextUrl : nextUrl);
                    }
                    illustQueue = vt.Item1;
                    nextUrl     = vt.Item2;
                    if (nextUrl == "begin")
                    {
                        date = date.AddDays(-1);
                    }

                    /*
                     * else
                     * {
                     *  string dt = System.Web.HttpUtility.ParseQueryString(new Uri(nextUrl).Query).Get("date");
                     *  date = DateTime.ParseExact(System.Web.HttpUtility.ParseQueryString(new Uri(nextUrl).Query).Get("date"),
                     *      "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
                     * }
                     */
                }
                else
                {
                    var t = await pixiv.getRankingList(mode : rankingMode, nextUrl : nextUrl);

                    illustQueue = t.Item1;
                    nextUrl     = t.Item2;
                }
                if (illustQueue != null)
                {
                    return(true);
                }
                else
                {
                    string       title   = loader.GetString("FailToGetRankingUpdatingQueue");
                    string       content = loader.GetString("FailToGetQueueExplanation");
                    ToastMessage tm      = new ToastMessage(title, content, ToastMessage.ToastMode.OtherMessage);
                    tm.ToastPush(60);
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
Exemple #23
0
        private void OnToastMessage(ToastMessage message)
        {
            if (message.Sender != ViewModel)
            {
                return;
            }

            Toast.MakeText(this, message.Description, ToastLength.Short).Show();
        }
Exemple #24
0
        private void SavePreset()
        {
            PresetModel presetModel;

            if (PresetName == null)
            {
                presetModel = SelectedPresetModel;
            }
            else
            {
                var endpointModel = _settingsStorage
                                    .GetValue <string>(SettingsKeys.Endpoint)
                                    .FromJson <EndpointModel>(JsonConverter);

                presetModel = new PresetModel
                {
                    Name = PresetName,
                    Uri  = endpointModel.Uri
                };

                PresetModels.Add(presetModel);
                PresetModels = PresetModels.ToList();

                SelectedPresetModel = presetModel;
            }

            foreach (var quadCell in QuadCellViewModels.Select((vm, i) => new { vm, i }))
            {
                presetModel.ProfileTokens[quadCell.i] = quadCell.vm.SelectedProfileModel?.Token;
            }

            var presetModels = _settingsStorage
                               .GetValue <string>(SettingsKeys.Presets)?
                               .FromJson <ICollection <PresetModel> >(JsonConverter) ?? new List <PresetModel>();

            var savedPresetModel = presetModels.SingleOrDefault(pm => pm.Id == presetModel.Id);

            if (savedPresetModel != null)
            {
                savedPresetModel.Uri           = presetModel.Uri;
                savedPresetModel.Name          = presetModel.Name;
                savedPresetModel.ProfileTokens = presetModel.ProfileTokens;
            }
            else
            {
                presetModels.Add(presetModel);
            }

            _settingsStorage.AddOrUpdateValue(SettingsKeys.Presets, presetModels.ToJson(JsonConverter));

            var toastMesage = new ToastMessage(this, "Saved");

            Messenger.Publish(toastMesage);

            PresetName = null;
        }
Exemple #25
0
        public static void ShowMessage(ToastMessage model, Window owner)
        {
            Toast win = new Toast(model);

            if (owner != null && owner.Visibility == Visibility.Visible)
            {
                win.Owner = owner;
            }
            win.ShowDialog();
        }
        public override IDisposable Toast(ToastConfig config)
        {
            ToastMessage toast = new ToastMessage
            {
                Message = config.Message,
            };

            toast.Post();
            return(new DisposableAction(() => { }));
        }
Exemple #27
0
        private async Task ConnectAsync()
        {
            Validate();
            LoginViewModel.Validate();

            if (!IsValid || !LoginViewModel.IsValid)
            {
                return;
            }

            IsBusy = true;

            if (LoginViewModel.Username != null)
            {
                _onvifServiceAggregator.Credentials = new OnvifCredentials(LoginViewModel.Username, LoginViewModel.Password);
            }
            _onvifServiceAggregator.BaseUri = $"{Uri}:{OnvifPort}";

            try
            {
                var profilesResponse = await _onvifServiceAggregator.OnvifMediaService.GetProfilesAsync();

                if (profilesResponse?.Profiles == null)
                {
                    var toast = new ToastMessage(this, "Media profiles not found.");
                    Messenger.Publish(toast);

                    return;
                }

                _profileModels = profilesResponse.Profiles.Select(p => new ProfileModel(p.token)
                {
                    Name = p.Name,
                    VideosSourceToken = p.VideoSourceConfiguration?.SourceToken
                }).ToList();

                SaveSettings();

                ShowViewModel <LiveViewModel>();
            }
            catch (OnvifServiceException e)
            {
                var toast = e.ToToastMessage(this);
                Messenger.Publish(toast);
            }
            catch (FaultException e)
            {
                var toast = e.ToToastMessage(this);
                Messenger.Publish(toast);
            }
            finally
            {
                IsBusy = false;
            }
        }
        public async Task StartLocationAsync()
        {
            var message = new StartLongRunningTaskMessage();

            MessagingCenter.Send(message, "StartLongRunningTaskMessage");

            var toastMessage = new ToastMessage("Location tracking activated");

            toastMessage.ShowToast();
            mainViewModel.StrLocationOnOff = "Location tracking is on";
        }
Exemple #29
0
        //-------------------------------------------------------------
        // 概要:レス書き込み
        //-------------------------------------------------------------
        private void WriteRes()
        {
            if (!writeResWorker.IsBusy)
            {
                ToastMessage.Show("書き込み中...");
                writeResWorker.RunWorkerAsync();

                // 書き込み欄を無効
                writeFieldTextBox.Enabled = false;
            }
        }
        public static ToastMessage AddToastMessage(this Controller controller, string title, string message, ToastType toastType = ToastType.Info)
        {
            Toastr toastr = controller.TempData["Toastr"] as Toastr;

            toastr = toastr ?? new Toastr();

            ToastMessage toastMessage = toastr.AddToastMessage(title, message, toastType);

            controller.TempData["Toastr"] = toastr;

            return(toastMessage);
        }
 public void Show(ToastMessage toast)
 {
     if (!activeToast)
     {
         activeToast = true;
         toastQueue.OnNext(toast);
     }
     else
     {
         toasts.Add(toast);
     }
 }
        private void EstablishCall()
        {
            // Create a new Conversation.
            Conversation conversation = new Conversation(_appEndpoint);

            // Create a new IM call.
            _imCall = new InstantMessagingCall(conversation);

            try
            {
                ToastMessage toast = new ToastMessage("Good day");

                // Establish the IM call.
                _imCall.BeginEstablish(_destinationSipUri,
                    toast,
                    new CallEstablishOptions(),
                    result =>
                    {
                        try
                        {
                            // Finish the asynchronous operation.
                            _imCall.EndEstablish(result);
                        }
                        catch (RealTimeException ex)
                        {
                            // Catch and log exceptions.
                            _logger.Log("Failed establishing IM call", ex);
                        }
                    },
                    null
                );
            }
            catch (InvalidOperationException ioex)
            {
                _logger.Log("Failed establishing IM call", ioex);
            }
        }
Exemple #33
0
        private async Task SendIM(List<string> messages, string toastMessage, string destinationSip)
        {

            Conversation conversation = new Conversation(_endpoint);
            InstantMessagingCall call = new InstantMessagingCall(conversation);

            ToastMessage toast = new ToastMessage(toastMessage);
            CallEstablishOptions options = new CallEstablishOptions();

            await call.EstablishAsync(destinationSip, toast, options);
            foreach (var msg in messages)
            {
                await call.Flow.SendInstantMessageAsync(msg);
            }
            await conversation.TerminateAsync();
            Console.WriteLine("IM Sent");
        }