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