2017-06-12 50 views
0

任何人都知道如何使用EWS在線會議(Lync/Skype)創建會議請求?使用Microsoft的EWS創建在線Lync/Skype會議

所以我的方法是首先獲取通過Outlook創建的在線和定期會議,然後模擬使用相同屬性創建事件。

這裏是獲取會議(calendarView已經開始日期,結束日期等初始化)我的代碼片段:

ExtendedPropertyDefinition extendedOnlineMeetingProperty = 
       new ExtendedPropertyDefinition(new Guid("{00062008-0000-0000-c000-000000000046}"), 34112, 
        MapiPropertyType.Integer); 

var properties = new PropertySet(
      ItemSchema.Id, 
      AppointmentSchema.ICalUid, 
      ItemSchema.Subject, 
      AppointmentSchema.Start, 
      AppointmentSchema.End, 
      AppointmentSchema.Organizer, 
      AppointmentSchema.Location, 
      AppointmentSchema.LegacyFreeBusyStatus, 
      AppointmentSchema.IsCancelled, 
      AppointmentSchema.ICalRecurrenceId, 
      AppointmentSchema.MyResponseType, // Mandatory Meeting.MyResponseType can be retrieved without a search in the participant list 
      ItemSchema.LastModifiedTime, 
      AppointmentSchema.IsOnlineMeeting, 
      AppointmentSchema.IsMeeting, 
      ItemSchema.DisplayTo) { }; 

properties.Add(extendedOnlineMeetingProperty); 


var activeResults = service.FindAppointments(WellKnownFolderName.Calendar, calendarView).ToList(); 
    if (activeResults.Count > 0) 
    { 
     service.LoadPropertiesForItems(activeResults, properties); 
    } 

我得到了財產IsOnlineMeeting用正確的布爾值(測試 - 創建 在線和定期與Outlook會議)變量activeResults,但我不明白在哪裏獲得會議鏈接和其他Lync/Skype屬性需要加入會議。

此外,我不確定在哪裏以及如何分配Lync/Skype會議URL和其他屬性的值。

有時我會問自己是否值得開發一些基於MS產品的應用程序,因爲它們的文檔很糟糕。

回答

0

詛咒MS一週後,我找到了解決辦法。使用MFCMAPI工具,您可以檢查郵箱中物品的屬性及其值。

  1. 下載程序link
  2. 構建和運行它
  3. 會議 - 登錄 - 選擇您的郵件配置文件 - 選擇郵箱並雙擊
  4. 行動 - 打開特殊的文件夾 - 日曆 - 上雙日曆,請點擊
  5. 使用在線S4B/Lync會議打開該項目
  6. UC *屬性是我正在尋找的屬性。

如果打開的屬性,你可以看到在頂部是這樣的:

ag: 0x8096001E 
Type: PT_STRING8 
DASL: http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/UCMeetingSetting 
Named Prop Name: UCMeetingSetting 
Named Prop Guid: {00020329-0000-0000-C000-000000000046} = PS_PUBLIC_STRINGS 

所以我的擴展屬性的定義是錯誤的。這不僅是一個財產,但實際上你需要全部7個財產。

所以定義應該是:

private static ExtendedPropertyDefinition CreateOnlineMeetingProperty() 
     { 
      ExtendedPropertyDefinition extendedUCMeetingSetting = 
       new ExtendedPropertyDefinition(new Guid("{00020329-0000-0000-C000-000000000046}"), "UCMeetingSetting", 
        MapiPropertyType.String); 

      return extendedUCMeetingSetting; 
     } 

通過正確的擴展定義,你可以從該項目獲取值很容易。

  1. 訪問的ExtendedProperties
  2. Value使用上述步驟,你可以得到你想要的任何擴展屬性,不僅統一通信(UC)的屬性調用TryGetProperty
var activeResults = service.FindAppointments(new 
FolderId(WellKnownFolderName.Calendar, resource.Email),calendarView).ToList(); 

service.LoadPropertiesForItems(activeResults, properties); 

foreach (Appointment result in activeResults) 
{ 
// 1. 
var b = result.ExtendedProperties[1].Value; 
// 2. 
string UCMeetingSetting; 
result.TryGetProperty(extendedUCMeetingSetting, out UCMeetingSetting); 
} 

+0

你能幫我解決這個問題嗎?如何將Skype會議鏈接添加到使用EWS創建的新會議邀請中? – Ian

+0

Hi @Ian發佈更多信息的問題,我或其他人會盡力幫助。 – pandemic

+0

那麼在StackOverflow上有關於這個主題的很多問題。不過,我覺得這是解決我的問題的可能方案。基本上我想創建一個Skype的鏈接並將其添加到Outlook會議。我對此做了一項研究,看到我們需要使用其他apis來做到這一點。 – Ian