Beispiel #1
0
        public static async Task <OnlineMeeting> GetMeetingAsync()
        {
            var graphClient = GetAuthenticatedClient();
            //        IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
            //.Create(appId)
            //.WithRedirectUri(redirectUri)
            //.WithClientSecret(appSecret) // or .WithCertificate(certificate)
            //.Build();

            //        AuthorizationCodeProvider authProvider = new AuthorizationCodeProvider(confidentialClientApplication, graphScopes.Split(' '));
            //        GraphServiceClient graphClient = new GraphServiceClient(authProvider);

            //        IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
            //.Create(appId)
            //.WithTenantId("1dd6ac05-0286-4cb8-987f-cd44134d00d1")
            //.WithClientSecret(appSecret)
            //.Build();

            //        //app secrate 5sRShc9UjqowAJUjkpjg02hha.oTX.].
            //        ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
            //        GraphServiceClient graphClient = new GraphServiceClient(authProvider);
            var onlineMeeting = new OnlineMeeting
            {
                StartDateTime = DateTimeOffset.Parse("2019-07-12T21:30:34.2444915+00:00"),
                EndDateTime   = DateTimeOffset.Parse("2019-07-12T22:00:34.2464912+00:00"),
                Subject       = "User Token Meeting"
            };

            var meeting = await graphClient.Me.OnlineMeetings
                          .Request()
                          .AddAsync(onlineMeeting);

            return(meeting);
        }
Beispiel #2
0
        protected override void UpdateOpticsLog(OnlineMeetingResult createMeeting)
        {
            OnlineMeeting onlineMeeting = createMeeting.OnlineMeeting;

            base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.UserGuid, ExtensibleLogger.FormatPIIValue(this.sipUri));
            base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.ConferenceId, onlineMeeting.PstnMeetingId);
            base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.LeaderCount, onlineMeeting.Leaders.Count <string>());
            base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.AttendeeCount, onlineMeeting.Attendees.Count <string>());
            base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.ExpiryTime, onlineMeeting.ExpiryTime);
            base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.AutomaticLeaderAssignment, onlineMeeting.AutomaticLeaderAssignment.ToString());
            base.CallContext.ProtocolLog.Set(CreateOnlineMeetingMetadata.AccessLevel, onlineMeeting.Accesslevel.ToString());
        }
Beispiel #3
0
        //public async Task AddMessaging(OnlineMeeting meeting)
        //{
        //    if (_user == null)
        //    {
        //        throw new InvalidOperationException("Please SignIn first.");
        //    }
        //    var appUri = new Uri((string) _user._links.applications.href);
        //    var addMessagingUri = GetUri(appUri, meeting.Links["addMessaging"]);
        //    var operationId = Guid.NewGuid();

        //    await GetJson(GetUri(appUri, meeting.Links["conversation"]), null, _token);

        //    await GetJson(addMessagingUri,
        //        JsonConvert.SerializeObject(new
        //        {
        //            operationId,
        //            _threadId
        //        }), _token);
        //    await GetNextEventObject();

        //}

        public async Task TerminateMeeting(OnlineMeeting meeting)
        {
            if (_user == null)
            {
                throw new InvalidOperationException("Please SignIn first.");
            }
            var appUri = new Uri((string)_user._links.applications.href);

            //var terminateUri = GetUri(appUri, meeting.Links["conversation"]) + "/messaging/terminate";
            //await GetJson(terminateUri, "", _token, "POST");
            await GetJson(GetUri(appUri, meeting.Links["conversation"]), null, _token, "DELETE");

            //await GetNextEventObject();
        }
        public async Task <OnlineMeeting> CreateOnlineMeetingAsync(AuthenticationHeaderValue authenticationHeaderValue)
        {
            _ = authenticationHeaderValue ?? throw new ArgumentNullException(nameof(authenticationHeaderValue));

            var graphServiceClient = BuildGraphServiceClient(authenticationHeaderValue);

            var onlineMeeting = new OnlineMeeting()
            {
                StartDateTime = DateTime.Now.AddHours(-1),
                EndDateTime   = DateTime.Now.AddHours(5),
            };

            return(await graphServiceClient.Me.OnlineMeetings
                   .Request()
                   .AddAsync(onlineMeeting));
        }
        public async Task <OnlineMeeting> CreateTeamsMeetingAsync(RequestModel requestModel)
        {
            var onlineMeeting = new OnlineMeeting
            {
                StartDateTime = requestModel.StartDateTime,
                EndDateTime   = requestModel.StartDateTime.Value.AddMinutes(requestModel.MeetingDurationMins),
                Subject       = requestModel.Subject
            };

            var meeting = await graphClient.Me.OnlineMeetings.Request()
                          .AddAuthenticationToRequest(config.GetValue <string>(ConfigConstants.UserEmailCfg), config.GetValue <string>(ConfigConstants.UserPasswordCfg))
                          .WithMaxRetry(5)
                          .AddAsync(onlineMeeting).ConfigureAwait(false);

            return(meeting);
        }
Beispiel #6
0
        public async Task <string> CreateOnlineMeetingService(OnlineMeetingModel model)
        {
            model.TimeStart = DateTime.Now;
            model.TimeEnd   = DateTime.Now.AddHours(8);
            OnlineMeeting meeting = new OnlineMeeting()
            {
                StartDateTime = model.TimeStart,
                EndDateTime   = model.TimeEnd,
                Subject       = model.Subject
            };
            var service = await GetGraphService(model.authenCode);

            OnlineMeeting result = await service.Me.OnlineMeetings.Request().AddAsync(meeting);

            return(result.JoinWebUrl);
        }
        /// <summary>
        /// Update the navigation property onlineMeetings in users
        /// <param name="body"></param>
        /// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
        /// </summary>
        public RequestInformation CreatePatchRequestInformation(OnlineMeeting body, Action <OnlineMeetingItemRequestBuilderPatchRequestConfiguration> requestConfiguration = default)
        {
            _ = body ?? throw new ArgumentNullException(nameof(body));
            var requestInfo = new RequestInformation {
                HttpMethod     = Method.PATCH,
                UrlTemplate    = UrlTemplate,
                PathParameters = PathParameters,
            };

            requestInfo.SetContentFromParsable(RequestAdapter, "application/json", body);
            if (requestConfiguration != null)
            {
                var requestConfig = new OnlineMeetingItemRequestBuilderPatchRequestConfiguration();
                requestConfiguration.Invoke(requestConfig);
                requestInfo.AddRequestOptions(requestConfig.Options);
                requestInfo.AddHeaders(requestConfig.Headers);
            }
            return(requestInfo);
        }
        /// <inheritdoc/>
        public async Task <OnlineMeeting> CreateOnlineMeetingAsync()
        {
            try
            {
                var onlineMeeting = new OnlineMeeting
                {
                    StartDateTime = DateTime.UtcNow,
                    EndDateTime   = DateTime.UtcNow.AddMinutes(30),
                    Subject       = "Calling bot meeting",
                };

                var onlineMeetingResponse = await graphServiceClient.Users[this.configuration[Common.Constants.UserIdConfigurationSettingsKey]].OnlineMeetings
                                            .Request()
                                            .AddAsync(onlineMeeting);
                return(onlineMeetingResponse);
            }
            catch (Exception ex)
            {
                this.logger.LogError(ex, ex.Message);
                return(null);
            }
        }
Beispiel #9
0
        //Create Meet Now Online meeting and schedule it in atendees calendars
        static public async Task <OnlineMeeting> CreateOnlineMeeting(string meetingSubject, string organizerEmail, string[] atendees, DateTime startDateTime, DateTime endDateTime)
        {
            var graphClient = await CreateGraphClient();

            var requestUrl             = "https://graph.microsoft.com/beta/app/onlineMeetings";
            HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Post, requestUrl);

            message.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            await graphClient.AuthenticationProvider.AuthenticateRequestAsync(message);


            var participants = new Microsoft.Graph.MeetingParticipants
            {
                Organizer = new MeetingParticipantInfo
                {
                    Identity = new IdentitySet
                    {
                        User = new Identity
                        {
                            Id = await GetUserFromEmail(organizerEmail)
                        }
                    }
                }
            };

            var attendeeList = new List <MeetingParticipantInfo>();

            foreach (var atendeee in atendees)
            {
                var identity = new IdentitySet
                {
                    User = new Identity
                    {
                        Id = await GetUserFromEmail(organizerEmail)
                    }
                };


                attendeeList.Add(
                    new MeetingParticipantInfo
                {
                    Identity = identity
                });
            }

            participants.Attendees = attendeeList;

            OnlineMeeting onlineMeeting = new OnlineMeeting {
                Subject = meetingSubject, Participants = participants
            };

            //Remove audioConferencing property from JSON
            JObject jobt = (JObject)JToken.FromObject(onlineMeeting);

            jobt.Remove("audioConferencing");

            message.Content = new StringContent(jobt.ToString(), System.Text.Encoding.UTF8, "application/json");

            HttpResponseMessage response = await graphClient.HttpProvider.SendAsync(message);

            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();

                var oData = graphClient.HttpProvider.Serializer.DeserializeObject <JObject>(content);

                OnlineMeeting meetingCreated = graphClient.HttpProvider.Serializer.DeserializeObject <OnlineMeeting>(oData.ToString());

                try
                {
                    var a = await ScheduleCalendarEvent(meetingSubject, meetingCreated.JoinUrl, startDateTime, endDateTime, organizerEmail, atendees);
                }
                catch (Exception)
                {
                    throw;
                }

                return(meetingCreated);
            }
            else
            {
                throw new ServiceException(
                          new Error
                {
                    Code    = response.StatusCode.ToString(),
                    Message = await response.Content.ReadAsStringAsync()
                }
                          );
            }
        }
Beispiel #10
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            var    meeting     = JsonConvert.DeserializeObject <Meeting>(requestBody);

            GraphServiceClient graphClient = GetAuthenticatedGraphClient();


            var participants     = new MeetingParticipants();
            var participantsInfo = new List <MeetingParticipantInfo>();

            var participantInfoPacient = new MeetingParticipantInfo();
            var identitySetUserPacient = new IdentitySet
            {
                User = new Identity()
            };
            var identityUserPacient = new Identity
            {
                DisplayName = meeting.PatientEmail
            };

            identitySetUserPacient.User = identityUserPacient;

            participantInfoPacient.Identity = identitySetUserPacient;

            /*var participantInfoDoctor = new MeetingParticipantInfo();
             * var identitySetUserDoctor = new IdentitySet
             * {
             *  User = new Identity()
             * };
             * var identityUserDoctor = new Identity
             * {
             *  DisplayName = meeting.DoctorEmail
             * };
             * identitySetUserDoctor.User = identityUserDoctor;
             *
             * participantInfoDoctor.Identity = identitySetUserDoctor;
             *
             * participantInfoDoctor.Identity = identitySetUserDoctor;*/

            participantsInfo.Add(participantInfoPacient);
            //participantsInfo.Add(participantInfoDoctor);
            participants.Attendees = participantsInfo;

            var onlineMeeting = new OnlineMeeting
            {
                StartDateTime = DateTimeOffset.Parse(meeting.StartDate),
                EndDateTime   = DateTimeOffset.Parse(meeting.EndDate),
                Participants  = new MeetingParticipants(),
                Subject       = meeting.Subject
            };


            var onlineMeeting1 = new OnlineMeeting
            {
                StartDateTime = DateTimeOffset.Parse("2019-07-12T21:30:34.2444915+00:00"),
                EndDateTime   = DateTimeOffset.Parse("2019-07-12T22:00:34.2464912+00:00"),
                Subject       = "User Token Meeting"
            };


            OnlineMeeting onlineMeetingReturned;

            try
            {
                onlineMeetingReturned = await graphClient.Me.OnlineMeetings.Request().AddAsync(onlineMeeting);
            }catch (Exception ex)
            {
                if (ex.Message.Contains("InvalidAuthenticationToken"))
                {
                    return(new BadRequestObjectResult("Token Expired"));
                }
                else
                {
                    return(new BadRequestResult());
                }
            }
            return(new OkObjectResult(onlineMeetingReturned));
        }