[英]Using Microsoft's EWS to create online Lync/Skype meeting
有人知道如何使用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產品的應用程序,因為他們的文檔很糟糕。
經過一周的詛咒MS,我找到了解決方案。 使用MFCMAPI工具,您可以檢查郵箱中項目的屬性及其值。
如果您打開酒店,您可以在頂部看到類似的內容:
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;
}
使用正確的擴展定義,您可以輕松地從項目中獲取值。
ExtendedProperties
的Value
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); }
使用上面的步驟,您可以獲得所需的任何擴展屬性,而不僅僅是統一通信(UC)屬性。
好吧,我通過設置一個擴展屬性設法使這個工作(差不多!):
appointment.SetExtendedProperty(
new ExtendedPropertyDefinition(
new Guid("00020329-0000-0000-C000-000000000046"),
"OnlineMeetingExternalLink",
MapiPropertyType.String
),
skypeMeeting.JoinUrl
);
我說幾乎是因為當你在Outlook中打開它時,約會看起來並不像Skype會議:沒有頁腳會加入鏈接和電話號碼等等。也許還有其他差異,但是現在我們看到它使用“加入”按鈕進行Skype業務,我們也可以通過“加入”按鈕在Outlook提醒中看到它。 作為一種解決方法,我們必須對約會的正文內容進行硬編碼。 也可以使用UCWA 2.0( https://docs.microsoft.com/en-us/skype-sdk/ucwa/myonlinemeetings_ref )進行會議ID
我們使用UCWA 2.0創建Skype電話會議並將其附加到EWS約會對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.