簡體   English   中英

使用Microsoft的EWS創建在線Lync / Skype會議

[英]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工具,您可以檢查郵箱中項目的屬性及其值。

  1. 下載程序鏈接
  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. 訪問ExtendedPropertiesValue
  2. 調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM