When creating a meeting using the CreateMeetingWithHttpClient
method, the response we receive only includes a single meetingUrl
. All participants, including the admin and attendees, access the meeting using the same link.
However, if an attendee joins the meeting through a browser without authenticating and manually enters their name, we encounter a challenge. Specifically, in the AttendanceReports
list provided after the meeting, we cannot reliably match this participant to the attendee list we initially sent (which is based on email addresses). As a result, it becomes impossible to confirm whether that particular attendee participated in the meeting.
In summary, we cannot ensure accurate attendance tracking for participants who join without authentication.
public async Task<Result<CreateMeetingResponseProxy>> CreateMeeting(MeetingRequestDto dto, string subject, string content, DateTime startDateTime, DateTime endDateTime, bool isOnline, List<AttendeeDto> attendees)
{
try
{
var graphClient = CreateGraphClient(dto);
var timeZoneId = "Europe/Istanbul";
var @event = new Event
{
Subject = subject,
Body = new ItemBody
{
ContentType = BodyType.Html,
Content = content
},
Start = new DateTimeTimeZone
{
DateTime = startDateTime.ToString("yyyy-MM-ddTHH:mm:ss"),
TimeZone = timeZoneId
},
End = new DateTimeTimeZone
{
DateTime = endDateTime.ToString("yyyy-MM-ddTHH:mm:ss"),
TimeZone = timeZoneId
},
AllowNewTimeProposals = true,
IsOnlineMeeting = isOnline
};
if (isOnline)
{
@event.OnlineMeetingProvider = OnlineMeetingProviderType.TeamsForBusiness;
}
@event.Attendees = attendees.Select(attendee => new Attendee
{
EmailAddress = new EmailAddress { Address = attendee.Email, Name = attendee.Name },
Type = attendee.Role
}).ToList();
var createdEvent = await graphClient.Users[dto.UserId].Events.PostAsync(@event);
var meetingUrl = createdEvent?.OnlineMeeting?.JoinUrl;
return Result<CreateMeetingResponseProxy>.Success(new CreateMeetingResponseProxy
{
EventId = createdEvent.Id,
MeetingUrl = meetingUrl
});
}
catch (Exception ex)
{
return Result<CreateMeetingResponseProxy>.Failure($"Failed to create meeting: {ex.Message}");
}
}