У меня есть устаревшая программа, которую мне нужно добавить. Он сканирует таблицу базы данных каждый заданный интервал и создает приглашения Outlook на основе информации из таблицы. Эта программа использует API C# Microsoft Exchange, и мне нужно добавить новую функцию. Что мне нужно сделать, так это принять ответы пользователей на события и создать новые записи в базе данных для их регистрации. Я не хочу сканировать папку «Входящие», создавшую события, потому что не все пользователи ответят по электронной почте, и я не хочу сканировать все события из базы данных, потому что в день добавляются тысячи событий, и это займет слишком много времени.< /p>
Может ли кто-нибудь помочь мне найти способ получать ответы пользователей по мере их появления, чтобы я мог динамически обновлять таблицу, когда люди отвечают на приглашения?
Я пробовал сканировать все встречи, но это слишком дорого
///
/// Get all appointments that haven't occured yet and check invitee status
///
private static void checkInviteeStatusAllAppointments()
{
//ENTER ELON QUERY TO SELECT RELEVANT APPOINTMENT IDs
List appointmentIDs = new List();
int numAppointments = appointmentIDs.Count;
writeToLog($"found {} appointment IDs", MESSAGE);
//---------------
//DateTime endDate = Convert.ToDateTime(TABLE_END_DATE);
//DateTime now = Convert.ToDateTime(DateTime.Now);
//string selectQuery = $"select * from {TABLE_NAME} where {TABLE_END_DATE} {now}";
//writeToLog($"query: {selectQuery}", MESSAGE);
//m_TableRows = mSqlConnect.GetFromDB(selectQuery);
//writeToLog($"found {m_TableRows.Count} rows", MESSAGE);
if (m_TableRows.Count > 0)
{
initExchangeService();
writeToLog("----------------------------------------------", MESSAGE);
// Iterating rows
foreach (var row in m_TableRows)
{
try
{
string appointmentType = row[TABLE_TYPE];
writeToLog($"working on new line with {TABLE_ID} {row[TABLE_ID]}, type: {appointmentType}", MESSAGE);
switch (appointmentType.ToUpper())
{
case INSERT_APPOINTMENT_LETTER:
createAppointment(row);
break;
case UPDATE_APPOINTMENT_LETTER:
updateAppointment(row);
break;
case CANCEL_APPOINTMENT_LETTER:
deleteAppointment(row);
break;
default:
updateTableOnError(row[TABLE_ID], "Not a valid type");
throw new Exception("Not a valid type");
}
}
catch (Exception ex)
{
writeToLog(ex.Message, ERROR_MESSAGE);
}
finally
{
writeToLog("----------------------------------------------", MESSAGE);
}
}
}
}
///
/// Captures the responses of invitees for an appointment given the row denoting it.
///
/// The row representing the appointment
private static void CaptureInviteeResponses(Dictionary row)
{
string appointmentId = row[TABLE_APPOINTMENT_ID];
try
{
if (string.IsNullOrEmpty(appointmentId))
{
throw new Exception(message: $"Error. No ID for row {row}.");
}
Appointment appointment = Appointment.Bind(m_ExchangeService, appointmentId);
writeToLog($"Successfully bound to appointment with ID: {appointmentId}", MESSAGE);
ThreadPool.QueueUserWorkItem(new WaitCallback(logAttendeeResponses), appointment);
}
catch (Exception ex)
{
writeToLog($"Error capturing responses for appointment ID {appointmentId}: {ex.Message}", ERROR_MESSAGE);
}
}
///
/// Iterate all invitees of an appointment and log their responses to the invitation.
///
/// The appointment to be examined
private static void logAttendeeResponses(object i_appointment)
{
Appointment appointment = (Appointment)i_appointment;
// Retrieve the responses of required attendees
foreach (Attendee attendee in appointment.RequiredAttendees)
{
string response = attendee.ResponseType == MeetingResponseType.NoResponseReceived ? "No response received" : attendee.ResponseType.ToString();
writeToLog($"Required Attendee: {attendee.Address}, Response: {response}", MESSAGE);
}
// Retrieve the responses of optional attendees
foreach (Attendee attendee in appointment.OptionalAttendees)
{
string response = attendee.ResponseType == MeetingResponseType.NoResponseReceived ? "No response received" : attendee.ResponseType.ToString();
writeToLog($"Optional Attendee: {attendee.Address}, Response: {response}", MESSAGE);
}
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... change-api
Сбор ответов на события с помощью Microsoft Exchange API ⇐ C#
Место общения программистов C#
-
Anonymous
1717314680
Anonymous
У меня есть устаревшая программа, которую мне нужно добавить. Он сканирует таблицу базы данных каждый заданный интервал и создает приглашения Outlook на основе информации из таблицы. Эта программа использует API C# Microsoft Exchange, и мне нужно добавить новую функцию. Что мне нужно сделать, так это принять ответы пользователей на события и создать новые записи в базе данных для их регистрации. Я не хочу сканировать папку «Входящие», создавшую события, потому что не все пользователи ответят по электронной почте, и я не хочу сканировать все события из базы данных, потому что в день добавляются тысячи событий, и это займет слишком много времени.< /p>
Может ли кто-нибудь помочь мне найти способ получать ответы пользователей по мере их появления, чтобы я мог динамически обновлять таблицу, когда люди отвечают на приглашения?
Я пробовал сканировать все встречи, но это слишком дорого
///
/// Get all appointments that haven't occured yet and check invitee status
///
private static void checkInviteeStatusAllAppointments()
{
//ENTER ELON QUERY TO SELECT RELEVANT APPOINTMENT IDs
List appointmentIDs = new List();
int numAppointments = appointmentIDs.Count;
writeToLog($"found {} appointment IDs", MESSAGE);
//---------------
//DateTime endDate = Convert.ToDateTime(TABLE_END_DATE);
//DateTime now = Convert.ToDateTime(DateTime.Now);
//string selectQuery = $"select * from {TABLE_NAME} where {TABLE_END_DATE} {now}";
//writeToLog($"query: {selectQuery}", MESSAGE);
//m_TableRows = mSqlConnect.GetFromDB(selectQuery);
//writeToLog($"found {m_TableRows.Count} rows", MESSAGE);
if (m_TableRows.Count > 0)
{
initExchangeService();
writeToLog("----------------------------------------------", MESSAGE);
// Iterating rows
foreach (var row in m_TableRows)
{
try
{
string appointmentType = row[TABLE_TYPE];
writeToLog($"working on new line with {TABLE_ID} {row[TABLE_ID]}, type: {appointmentType}", MESSAGE);
switch (appointmentType.ToUpper())
{
case INSERT_APPOINTMENT_LETTER:
createAppointment(row);
break;
case UPDATE_APPOINTMENT_LETTER:
updateAppointment(row);
break;
case CANCEL_APPOINTMENT_LETTER:
deleteAppointment(row);
break;
default:
updateTableOnError(row[TABLE_ID], "Not a valid type");
throw new Exception("Not a valid type");
}
}
catch (Exception ex)
{
writeToLog(ex.Message, ERROR_MESSAGE);
}
finally
{
writeToLog("----------------------------------------------", MESSAGE);
}
}
}
}
///
/// Captures the responses of invitees for an appointment given the row denoting it.
///
/// The row representing the appointment
private static void CaptureInviteeResponses(Dictionary row)
{
string appointmentId = row[TABLE_APPOINTMENT_ID];
try
{
if (string.IsNullOrEmpty(appointmentId))
{
throw new Exception(message: $"Error. No ID for row {row}.");
}
Appointment appointment = Appointment.Bind(m_ExchangeService, appointmentId);
writeToLog($"Successfully bound to appointment with ID: {appointmentId}", MESSAGE);
ThreadPool.QueueUserWorkItem(new WaitCallback(logAttendeeResponses), appointment);
}
catch (Exception ex)
{
writeToLog($"Error capturing responses for appointment ID {appointmentId}: {ex.Message}", ERROR_MESSAGE);
}
}
///
/// Iterate all invitees of an appointment and log their responses to the invitation.
///
/// The appointment to be examined
private static void logAttendeeResponses(object i_appointment)
{
Appointment appointment = (Appointment)i_appointment;
// Retrieve the responses of required attendees
foreach (Attendee attendee in appointment.RequiredAttendees)
{
string response = attendee.ResponseType == MeetingResponseType.NoResponseReceived ? "No response received" : attendee.ResponseType.ToString();
writeToLog($"Required Attendee: {attendee.Address}, Response: {response}", MESSAGE);
}
// Retrieve the responses of optional attendees
foreach (Attendee attendee in appointment.OptionalAttendees)
{
string response = attendee.ResponseType == MeetingResponseType.NoResponseReceived ? "No response received" : attendee.ResponseType.ToString();
writeToLog($"Optional Attendee: {attendee.Address}, Response: {response}", MESSAGE);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78565770/capturing-event-responses-with-microsoft-exchange-api[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия